Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Grundlegendes Verständnis - Actions und deren Registrierung (https://www.delphipraxis.net/175526-grundlegendes-verstaendnis-actions-und-deren-registrierung.html)

Hausmarke 1. Jul 2013 13:16

AW: Grundlegendes Verständnis - Actions und deren Registrierung
 
ja ich denke die Aussage "eine Action in einer ActionList zu registrieren" hat mich auf eine falsche Fährte gelockt. Was ich mittlerweile verstanden habe.

Die Action einer Actionlist zuzuordnen ist wie erwähnt kein Problem, auch das erzeugen der Action zur Laufzeit ist nicht das Problem.
Aber wie ich erkenne, ist dies wohl auch nicht das Ziel...wäre ja auch zu einfach gewesen....
Mir wurde gesagt ich soll die Actions Registrieren, da ich bis dahin keine Ahnung von Actions hatte, ging ich davon aus, das dies die Verknüpfung mit einer ActionList bedeutet. Okay, das ist falsch.

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.
Mein Beispiel bezog sich nur auf die reine Handhabung, und hatte keine tiefere Funktionalität.

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;

Uwe Raabe 1. Jul 2013 13:40

AW: Grundlegendes Verständnis - Actions und deren Registrierung
 
Zitat:

Zitat von Hausmarke (Beitrag 1220247)
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.

Zitat:

Zitat von Hausmarke (Beitrag 1220247)
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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:03 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz