![]() |
ActionMainMenuBar + OnExecute wird nicht ausgeführt
Hi :-)
Ich habe schon wieder ein Problem ... Bei dem ActionMainMenuBar gibt es bei den Items eine Methode "onExecute". In der Delphi-Hilfe steht, dass da dann meistens das onClick-Ereignis genommen wird. Also müsste doch etwas passieren, wenn ich auf meinen Menüpunkt klicke, oder ? Aber irgendwie wird das nicht aufgerufen ... Ich habe mir zum Testen mal eine Nachricht auf den Bildschirm ausgegeben, aber die erscheint auch nicht. Jetzt steht in der Delphi-Hilfe auch noch, dass onExecute nicht ausgeführt wird, wenn schon eine andere Aktion zugewiesen wurde :?: Aber das habe ich nicht getan. Hat jemand eine Idee, warum das alles nicht funktioniert ? Vielen Dank schon mal für die Hilfe ! Gruß, -=cats=- :coder: Ach so, ich verwende auch noch den ActionManager. |
Re: ActionMainMenuBar + OnExecute wird nicht ausgeführt
So funktioniert das bei mir. Vielleicht kannst du damit was tun
Delphi-Quellcode:
Falls das nicht hilft?
var
iItem:TActionClientItem; iAction:TAction; begin iAction := TAction.Create(_Dein_ActionManager); //Hier wird die Action für das Item erstellt iItem := _Dein_ActionManager.ActionBars[0].Items[7].Items[itemI].Items.add; // wird im menü untergebracht iAction.Caption := 'blub';//Hier wird dem Item die Eigenschaft Caption zugewiesen. iItem.Action := iAction; //Hier wird dem Item seine Action zugewiesen. iAction.OnExecute := FunktionExecute; end; procedure TForm1.FunktionExecute(Sender : TObject); begin //mach was end; Der Beitrag hat mir dabei geholfen: ![]() |
Re: ActionMainMenuBar + OnExecute wird nicht ausgeführt
Hmm .... :gruebel:
Also das versteh ich leider noch nicht so ganz :-( Ich habe es so gemacht: 1. ActionMainMenuBar angelegt 2. ActionManager angelegt 3. Im ActionManager die Einträge für mein Menü gemacht und auf mein MainMenu gezogen 4. In die Objekthierarchie auf den Menüeintrag gegangen 5. Dann auf Ereignisse 6. onExecute 7. Dort folgenden Code eingetragen:
Delphi-Quellcode:
Und jetzt dachte ich, wenn ich auf den Menüeintrag klicke, dann passiert was.
procedure TForm16.Action12Execute(Sender: TObject);
begin ActionMainMenuBar1.Visible := false; LMDBackPanel2.Align := alTop; LMDBackPanel2.Visible := true; ShowMessage('Hallo'); end; Nur leider passiert nichts :| |
Re: ActionMainMenuBar + OnExecute wird nicht ausgeführt
Hast Du denn auch ne neue Action angelegt, im ActionManager?
Such mal in der Suche nach ActionManager, da findest du bestimmt das wonach Du suchst. Der Unterschied zwischen dem was ich gemacht habe und was Du machen möchtest liegt, dass ich zur Laufzeit das Menü erzeuge. Ich denke das Du das garnicht möchtest. greetz Lun |
Re: ActionMainMenuBar + OnExecute wird nicht ausgeführt
Nein ich möchte das Menü von Anfang an da haben.
Das blende ich erst mal nur aus. ... Habe mal nach ActionManager gesucht, aber das ist irgendwie alles nicht das, was ich meine bzw. suche. Das Problem ist, dass diese onExecute-Methode nicht aufgerufen wird. Warum auch immer ... Wahrscheinlich habe ich irgendwas entscheidendes vergessen ... :gruebel: |
Re: ActionMainMenuBar + OnExecute wird nicht ausgeführt
Also, sorry das ich jetzt noch mal mit diesem
Thema anfangen muss ... Scheinbar hab ich das System da noch nicht ganz durchschaut. Wie verwendet man denn dieses "onExecute" bei einer ActionMainMenuBar ? Ich dachte das funktioniert ganz einfach so, dass ich mir einen ActionManager anlege. Der macht das Menü für mein ActionMainMenu. Und dann haben meine Menüpunkte ja Clients / Items. Und denen kann ich in der onExecute-Methode etwas zuweisen. Nur warum wird die nicht aufgerufen ? Das versteh ich irgendwie nicht ganz. Es kommt keine Fehlermeldung oder so. Muss man da noch etwas wichtiges beachten ? |
Re: ActionMainMenuBar + OnExecute wird nicht ausgeführt
Wenn Du so vorgehst, muss es einfach klappen:
1.) In der Action-Liste eine neue Action anlegen. 2.) Doppelt auf die Action klicken / oder im OI auf "OnExecute". 3.) Code rein schreiben 4.) Im Menü auf den Menüeintrag klicken und im OI bei "Action" die oben erstelle Action einstellen |
Re: ActionMainMenuBar + OnExecute wird nicht ausgeführt
Liste der Anhänge anzeigen (Anzahl: 3)
Hmm ... das funktioniert nich ...
Spinn ich ? :gruebel: Habe mal Screenshots angehängt ... |
Re: ActionMainMenuBar + OnExecute wird nicht ausgeführt
Hmm, normalerweise dürfte das funktionieren. :gruebel:
Hast Du denn unter dem Object Toolbar noch items oder klickst du direkt auf das Objekt Toolbar und dann soll was passieren? Falls Du noch items hast die Du anklickst, musst du dem die Action und der OnEexcute die Funktion zuweisen. Aber ich denke mal das, dass nicht der Fehler ist. |
Re: ActionMainMenuBar + OnExecute wird nicht ausgeführt
Also, ich klicke direkt auf Toolbar.
Das komische ist, das es mit onUpdate funktioniert ... Und da mache ich alles genauso ... :gruebel: :coder2: |
Re: ActionMainMenuBar + OnExecute wird nicht ausgeführt
Fehler in der Matrix, keine Ahnung... Habe das eben noch mal in einem
neuen Projekt gemacht und hat sofort funktioniert. Bin ratlos, oder dein Delphi spinnt, oder wir vergessen eine Kleinigkeit, die Du nicht gemacht hast. Am besten machst Du zum testen das nochmal in einem neuen Project, und guckst mal ob das da funtzt. :gruebel: Ich hätte da auch noch eine Frage, cats hoffe du bist mir nicht böse das ich dein topic dafü benutze:
Delphi-Quellcode:
Ich generiere dynamisch einen Menüpunkt in der ActionMainMenubar. Das Problem was ich habe das alle geaddeten Items
for i := 0 to Liste.Count-1 do begin
iItem := _DFB_ActionManager.ActionBars[0].Items[7].Items[itemI].Items.add; //Und hier wird das Item zu dem Menü mit Index 0 geaddet. iAction.Caption := Liste.Strings[i]; //Hier wird dem Item die Eigenschaft Caption zugewiesen. iItem.Action := iAction; //Hier wird dem Item seine Action zugewiesen. iAction.OnExecute := Execute; end; die gleiche Caption haben. Ist auch logisch weil die Caption ist der Name des letzten Elements. Da ich der Action Caption den Namen zuweise. Kann ich nicht jedem erzeugten Item eine eigene Caption geben? iItem.Caption := Liste.Strings[i]; funktioniert nicht ;o( Eine Möglichkeit wäre für jedes item eine neue Action zu erzeugen aber das wäre quatsch, da alle das gleiche tun. Hat jemand eine ahnung? greetz Lun |
Re: ActionMainMenuBar + OnExecute wird nicht ausgeführt
Ok, stempeln wir es für`s erste als
Fehler in der Matrix ab :lol: Werde mich nochmal genauer damit befassen und sollte ich zu einem Ergebnis kommen, werde ich es posten :-D Aber vielen Dank für Deine Bemühungen !!! Und die Hilfe :-) :cheers: Gruß, -=cats=- :coder: |
Re: ActionMainMenuBar + OnExecute wird nicht ausgeführt
Habs raus, für alle die mal das gleiche Problem haben.
Die Reihenfolge macht es aus:
Delphi-Quellcode:
greetz Lun
for i := 0 to Liste.Count-1 do begin
iItem := _DFB_ActionManager.ActionBars[0].Items[7].Items[itemI].Items.add; //Und hier wird das Item zu dem Menü mit Index 0 geaddet. iItem.Action := iAction; iItem.Caption := Liste.Strings[i]; //Hier wird dem Item die Eigenschaft Caption zugewiesen. end; iAction.OnExecute := lesezeichenExecute; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz