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