Wie ich deiner Antwort entnehme, an dieser Stelle vielen dank für deine Geduld, registriert man eigene Actionen in der
IDE.
Wobei ich den Vorteil bzw. den Zweck dahinter noch nicht verstehe.
Der Vorteil in der
IDE registrierter Actions ist, daß man sie in der
IDE im ActionList-Editor bearbeiten kann.
Wenn ich das richtig verstanden habe:
Das Beispiel von sx2008 implementiert die Aktion "Print Windows", was quasi den Drucken Dialog aufruft. Das ganze ist auch via shortcut F3 auszuführen.
Wäre diese Action nicht auch ohne Registrierung lauffähig und wie folgt umsetzbar:
Delphi-Quellcode:
var
act: TAction;
begin
act := TAction.Create(Self);
act.Caption := 'Print Window';
act.Hint := 'Drucken';
act.ImageIndex := 42;
act.OnExecute := MyWindowPrintExecute; // GetForm(Target).Print; - in OnExecute implementieren
act.OnUpdate := MyWindowPrintUpdate; //
act.ActionList := MyActionList; // und hier die passende ActionList
end;
Prinzipiell ist das richtig, allerdings gibt es im OnExecute kein
Target. Ersatzweise kannst du aber auch
(Sender as TAction).ActionComponent verwenden. Allerdings ist
GetForm eine Methode von
TWindowAction und setzt voraus, daß diese nur auf Forms angewandt werden. Wenn du die obige Action z.B. einem Button oder Menüeintrag zuweist, musst du einen anderen Weg finden an das aktuelle Form zu kommen. Im einfachsten Fall geht das mit
Screen.ActiveForm.