A
rowisoft schrieb:
Wie kann ich denn auf TControl::OnMouseDown zugreifen, ohne jeweils auf irgendein spezielles Control (Button) casten zu müssen?
Ja, das fand ich auch toll, als ich damals damit rumexperimentiert hatte. Joe_M. hat die Richtung schon angedeutet.
Man kann das auch dynamisch machen. Das sieht dann ungefähr so aus:
for (int i=0; i<form->ComponentCount; ++i)
{
TMethod method;
method.Data = this;
method.Code = this->MethodAddress("FormMouseMove");
PPropInfo PropInfo = GetPropInfo((PTypeInfo)form->Components[i]->ClassInfo(), "OnMouseMove");
if (PropInfo && (*PropInfo->PropType)->Kind == tkMethod &&
(AnsiString)(*PropInfo->PropType)->Name == String("TMouseMoveEvent"))
SetMethodProp(static_cast<TObject *>(form->Components[i]), PropInfo, method);
}
Dabei ist FormMouseMove die Ereignisbehandlungsmethode, die Du neu zuweisen willst. In Deinem Fall also Deine "Hilfe"-
Methode. OnMouseMove ist die Ereignis-Eigenschaft des Controls, der Du Deine Methode zuweisen willst. Vorher solltest Du
aber noch prüfen, ob form->Components[i] auch vom Typ TControl ist.
Gruß,
Alexander