Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Actionmanager zuweisen (https://www.delphipraxis.net/186385-actionmanager-zuweisen.html)

blawen 31. Aug 2015 03:06

Actionmanager zuweisen
 
Hallo Delphigemeinde

Folgende (vereinfachte) Ausgangslage:

Es existieren die beiden Formulare „Form1“ und „Form2“, mit je einem Actionmanager.
Zusätzlich besitzt die „Form1“ noch ein Panel „Panel1“.

Diesem Panel weise ich nun die „Form2“ zu und lasse sie anzeigen.
Delphi-Quellcode:
Form2.Parent     := Panel1.Parent;
Form2.Align      := alClient;
Form2.BorderStyle := bsNone;
Form2.WindowState := wsMaxiMized;
Form2.Show;
Nachteil dieser Lösung ist es, dass Shortcut-Tasten jeweils nur Aktionen der "Form1" auslösen, nicht jedoch wie beabsichtigt auch (nur) von der "Form2"

Daher meine Frage:
Wie kann ich die Aktionen von der "Form2" dem Actionmanger von "Form1" zuweisen?

Lösungen wie
Delphi-Quellcode:
procedure TForm1.actF1Execute(Sender: TObject);
begin
  if sAktivesModul = 'Form2' then Form2.actF1Execute(self);
end;
würden zwar funktionieren, jedoch geht es doch sicher auch eleganter - oder?

Besten Dank für Anregungen.

olaf 31. Aug 2015 07:02

AW: Actionmanager zuweisen
 
Form1 in den uses Abschnitt von Form2 aufnehmen. Dann Form1.action....

Uwe Raabe 31. Aug 2015 07:28

AW: Actionmanager zuweisen
 
Zitat:

Zitat von olaf (Beitrag 1313957)
Form1 in den uses Abschnitt von Form2 aufnehmen. Dann Form1.action....

Nach dem dritten Lesen des Posts glaube ich, daß er etwas anderes meint. Wenn ich das richtig verstanden habe, werden bei aktivem Form2 immer noch die ShortCut-Actions von Form1 ausgeführt. Es sollen aber die von Form2 ausgeführt werden. So ganz sicher bin ich mir aber auch nicht. Deswegen wäre hier ein konkretes Code-Beispiel sicher hilfreich.

blawen 31. Aug 2015 10:41

AW: Actionmanager zuweisen
 
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:

Zitat von Uwe Raabe (Beitrag 1313959)
Wenn ich das richtig verstanden habe, werden bei aktivem Form2 immer noch die ShortCut-Actions von Form1 ausgeführt. Es sollen aber die von Form2 ausgeführt werden.

Genau so meine ich es. Sorry für die unklare Beschreibung.

Ein Beispiel kann ich gerne liefern.

In Form1 lässt sich im Ribbonmenü die Form2 aufrufen.

Zugewiesene Shortcuts:
F1 - Form 1
F2 - Form 2

blawen 2. Sep 2015 22:39

AW: Actionmanager zuweisen
 
Das Problem scheint zum einen auf das zuweisen des Parents
Delphi-Quellcode:
Form2.Parent := Panel1.Parent;
...
Form2.Show;
und zum anderen auf den fehlenden Focus auf der Form 2 zurückzuführen sein.

Gestern habe ich mit der Objekteigenschafr Actionmanager.TActionListCollection "gespielt" und da hat mein Beispiel einwandfrei funktioniert.
Leider habe ich das angepasste Beispiel nicht gespeichert und aktuell will es nicht wieder funktionieren.

Kennt ev. jemand einen "Workaround" für diese "Unschönheit"?

Jumpy 3. Sep 2015 08:42

AW: Actionmanager zuweisen
 
Delphi-Quellcode:
Form2.Parent := Panel1.Parent;
//
Was ist denn der Parent von Panel1? Form1?
Kannst du da nicht direkt
Delphi-Quellcode:
Form2.Parent := Form1;
schreiben oder self?

blawen 3. Sep 2015 14:23

AW: Actionmanager zuweisen
 
Zitat:

Zitat von Jumpy (Beitrag 1314523)
Was ist denn der Parent von Panel1? Form1?
Kannst du da nicht direkt
Delphi-Quellcode:
Form2.Parent := Form1;
schreiben oder self?

Der Parent des Panels ist Form1.

Versuchsweise habe ich den Code abgeändert zu
Delphi-Quellcode:
Form2.Parent := Panel1.Parent;
Form2.Show;
Der Effekt ist, das Form1 normal bestehen bleibt, die Form2 wird oberhalb der Form1 angezeigt.
Der Focus liegt aber weiterhin auf der Form1. Erst wenn ich die Form2 anklicke klappt es (logischerweise) mit den Shortcuts.

Ziel wäre es, die verschiedenen Forms jeweils im Panel1 einzubinden und auch jeweils die Shortcuts der Formulare benutzen zu können.
Das Ribbonmenu verwende ich, um die verschiedenen Forms aufzurufen.

Jumpy 3. Sep 2015 14:58

AW: Actionmanager zuweisen
 
Würde es einen Unterschied machen Frames statt Froms zu verwenden?
Werden die auf Form2 verwendeten Shortcuts auch auf Form1 verwendet (überschneidungen)?

blawen 3. Sep 2015 17:25

AW: Actionmanager zuweisen
 
Zitat:

Zitat von Jumpy (Beitrag 1314583)
Würde es einen Unterschied machen Frames statt Froms zu verwenden?
Werden die auf Form2 verwendeten Shortcuts auch auf Form1 verwendet (überschneidungen)?

Auf einem Frame kann man m.W. keine Actionlist verwenden und nein, die Schortcuts überschneiden sich nicht (siehe obiges Beispiel)


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:59 Uhr.

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