Einzelnen Beitrag anzeigen

Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#1

Sourcecode für zur Designtime erzeugten Methode per designer.createmethod

  Alt 25. Jul 2016, 16:19
Hallo

Ich möchte für mich das Handling von actions etwas vereinfachen und mir eine kleine Designtime-Hilfskomponente schreiben, mit der ich actions zusätzlich zum actionmanager besser verwalten und vorallem schneller anlegen kann. Speziell nervt mich das ständige hin und hergeklicke und das Erzeugen des onexecutes-Ereignisses.

Erste vorsichtige Versuchsschritte sind:
Delphi-Quellcode:
Procedure Proc_NeueAktionErstellen(AMH:TActionManagerHelper);
Var Action:TAction;

    //quelle: http://www.gexperts.org/open-tools-api-faq/
    procedure DoCreateMethod(Persistent: TPersistent;
                             MethodShortName, MethodSourceName: string);
    var
      Method: TMethod;
      PropInfo: PPropInfo;
      TypeInfo: PTypeInfo;

    begin
      TypeInfo := PTypeInfo(Persistent.ClassInfo);
      PropInfo := GetPropInfo(TypeInfo, 'On' + MethodShortName);
      Method := Designer.CreateMethod(MethodSourceName, GetTypeData(PropInfo^.PropType^));

      SetMethodProp(Persistent, PropInfo, Method);
    end;


begin
    Action := TAction(Designer.CreateComponent(TAction,
                                               AMH.ActionManager.Owner,
                                               0,0,0,0));
    Action.Name := Designer.UniqueName('Action_test');
    Action.caption := 'test';
    Action.Category := 'TestCategory';
    Action.ActionList:= AMH.ActionManager;

    DoCreateMethod(Action,
                   'Execute',
                   Action.Name+'Execute');

    Designer.ShowMethod(Action.Name+'Execute');

    Designer.Modified;
end;
Macht das, was ich will: legt eine neue action+dazugehöriges Ereignis an.

Frage: Wie bekomme ich aber sourcecode in die erzeugte EreignisMethode reingeschrieben?

Hat da einer eine Idee ?

Danke & Gruß Frank

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat