![]() |
AW: Einstieg in Zeiger auf Methoden / Funktionen
Meinst Du etwa?
![]()
Delphi-Quellcode:
MyStrings.Strings[0] := 'This is the first string';
MyStrings[0] := 'This is the first string'; |
AW: Einstieg in Zeiger auf Methoden / Funktionen
Suchst Du sinngemäß sowas? (nur ungetestet hingedaddelt - muss also nicht funktionieren)
Delphi-Quellcode:
Statt Self ggfls. die Klasse, bei der die gewünschten Methoden zu finden sind, z. B. ActionList, ...
uses
Typinfo, Menus, ...; procedure TForm1.FormCreate(Sender: TObject); var sMethode : String; mi : TMenuItem; begin Tabelle.Open; while not Tabelle.Eof do begin sMethode := Tabelle.FieldByName('MenueZuzuweisendeMethode').AsString; if PropIsType(Self,sMethode,tkMethod) then begin mi := TMenuItem.Create(Self); mi.Caption := Tabelle.FieldByName('MenueCaption').AsString;; mi.Name := Tabelle.FieldByName('MenueName').AsString;; mi.Hint := Tabelle.FieldByName('MenueHint').AsString;; SetMethodProp(mi,sMethode,GetMethodProp(Self,sMethode)); // ... und alle weiteren zu setzenden Eigenschaften ... end; Tabelle.Next; end; Tabelle.Close; end; |
AW: Einstieg in Zeiger auf Methoden / Funktionen
Name (String) zu Methodenzeiger
* das gute alte ![]() * oder über die RTTI ![]() TRttiContext.Create.GetType(TIrgendwas).GetMethods -> Methode raussuchen (gibt leider kein FindMethod) und dann ![]()
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz