Autor Beitrag
P_G
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 75

Win XP
Delphi 7 / 8 Enterprise
BeitragVerfasst: So 11.09.05 20:02 
Hallo zusammen,

Ich sitze gerade an einer Anwendung, die ihr Hauptmenü durch eine TActionMainMenuBar + TActionManager darstellt.
Nun will ich dynamisch einen weiteren Eintrag zur Laufzeit in der TActionMainMenuBar erzeugen. Folgendes sollte funktionieren - tut es aber nicht:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
  with TAction.Create(self) do
   begin
    OnExecute := ACTION_XY;
    Enabled := TRUE;
    Name := 'MyNewAction'+inttostr(ActionManager1.ActionCount);
    Caption := 'Runtime Action'+inttostr(ActionManager1.ActionCount);
    ActionList := ActionManager1;
    Category := 'Tools';
   end;


Hat jemand eine Idee hierzu?

Gruß, P_G

Moderiert von user profile iconChristian S.: Code- durch Delphi-Tags ersetzt.
uruz
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 14.06.06 07:48 
Guten Morgen... ist zwar nun schon ein Weilchen her dein Eintrag... aber scheinbar hat immer noch keiner darauf geantwortet... hast du nun die Lösung dafür gefunden?

Ich hadere derzeit auch mit TAction/TActionManager/TActionLists...

jedenfalls hatte ich ein ähnliches Problem wie du... musste TActionMainMenuBar noch einige Actions zur Laufzeit hinzufügen...

Der Code, den du oben verwendet hast, erzeugt zwar wunderschöne Actions... und weist diese auch dem ActionManager hinzu... aber kann es sein, dass du eben diesen Actions noch nicht mitgeteilt hast, dass sie auch in der ActionMainMenuBar auftauchen sollen?

Dafür gibt es mehrere Möglichkeiten, die einfachste wäre

ausblenden Delphi-Quelltext
1:
2:
3:
4:
  Manager.AddAction(
                    MyNewAction, 
                    MenuBar.ActionControls[0].ActionClient.Items.Add
                   );


Wichtig ist an dieser Stelle, dass MenuBar.ActionsControls die "Haupteinträge" in deinem MainMenu enthält.

Hattest du noch eine andere Lösung gefunden?
rochus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 416

Win XP Prof, Fedora Core 4, SuSE 7.0
D7 Ent, D2005 Pers
BeitragVerfasst: Do 15.06.06 09:49 
Hi,
Das ist schon der richtige Weg. Du musst eventuell, nachdem du alle Actions definiert hast, ein MenuBar.RecreateControls auslösen. Das war bei mir in meiner Projektarbeit der Fall. Ansonsten hilft die website von Steve Trefethen weiter:

homepages.borland.co...e=Main.ActionBandFAQ

oder ihr fragt in den entsprechenden borland NewsGroups, da kriegt man bei ActionBand fragen meist direkt Antworten von ihm.

Gruß

_________________
Im Nachhinein ist man immer ein Schlauch!
"Dream as if you'll live forever, live as if you'll die today!" James Dean