Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi ActionMainMenuBar + OnExecute wird nicht ausgeführt (https://www.delphipraxis.net/81197-actionmainmenubar-onexecute-wird-nicht-ausgefuehrt.html)

-=cats=- 22. Nov 2006 11:56


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.

Lun 22. Nov 2006 12:56

Re: ActionMainMenuBar + OnExecute wird nicht ausgeführt
 
So funktioniert das bei mir. Vielleicht kannst du damit was tun


Delphi-Quellcode:
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;
Falls das nicht hilft?

Der Beitrag hat mir dabei geholfen: Hier

-=cats=- 22. Nov 2006 13:09

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:
 procedure TForm16.Action12Execute(Sender: TObject);
  begin
   ActionMainMenuBar1.Visible := false;
   LMDBackPanel2.Align := alTop;
   LMDBackPanel2.Visible := true;
   ShowMessage('Hallo');
  end;
Und jetzt dachte ich, wenn ich auf den Menüeintrag klicke, dann passiert was.
Nur leider passiert nichts :|

Lun 22. Nov 2006 13:26

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

-=cats=- 22. Nov 2006 13:35

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:

-=cats=- 23. Nov 2006 07:36

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 ?

Sascha L 23. Nov 2006 09:18

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

-=cats=- 23. Nov 2006 10:15

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 ...

Lun 23. Nov 2006 11:32

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.

-=cats=- 23. Nov 2006 13:25

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:

Lun 23. Nov 2006 14:15

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:
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;
Ich generiere dynamisch einen Menüpunkt in der ActionMainMenubar. Das Problem was ich habe das alle geaddeten Items
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

-=cats=- 23. Nov 2006 14:53

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:

Lun 23. Nov 2006 15:26

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:
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;
greetz Lun


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:44 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