Name (String) zu Methodenzeiger
* das gute alte
TObject.MethodAddress (welches auch der
DFM-Loader benutzt)
* oder über die
RTTI TRttiMethod.CodeAddress
TRttiContext.Create.GetType(TIrgendwas).GetMethods -> Methode raussuchen (gibt leider kein FindMethod) und dann
TRttiMethod.CodeAddress
Delphi-Quellcode:
var Method: TMethod;
Method.Code := CodeAddress;
Method.Data := KlassenInstanz; // z.B. Self
x.OnIrgendwas := TNotifyEvent(Method); // oder welchen Typ auch immer das OnIrgendwas hat
Delphi-Quellcode:
var Event: TMethod;
Event.Code := Self.MethodAddress('Test');
Event.Data := Self;
// oder
for var Method in TRttiContext.Create.GetType(Self.ClassType).GetMethods do
if SameText(Method.Name, 'Test') then begin
Event.Code := Method.CodeAddress;
Event.Data := Self;
end;