AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ActionMainMenuBar Untermenü ausblenden

Ein Thema von smudo · begonnen am 19. Mär 2007 · letzter Beitrag vom 22. Mär 2007
Antwort Antwort
smudo

Registriert seit: 6. Sep 2005
Ort: Cottbus
362 Beiträge
 
Delphi XE2 Professional
 
#1

ActionMainMenuBar Untermenü ausblenden

  Alt 19. Mär 2007, 13:57
Hallo,

es ist kein Problem, einen Menüpunkt im ActionMenu über die Visible-Eigenschaft zur Laufzeit auszublenden.
Wie sieht es aber mit einem Untermenü aus. Ich kann ja die Kategorie nicht als Objekt ansprechen. Es sieht aber blöd aus, wenn alle Punkte eines Untermenüs unsichtbar sind, das Untermenü selber aber noch zu sehen ist.
Gibt es dafür eine Lösung?

Danke im Voraus
  Mit Zitat antworten Zitat
raiguen
(Gast)

n/a Beiträge
 
#2

Re: ActionMainMenuBar Untermenü ausblenden

  Alt 20. Mär 2007, 10:09
Jo, die Lösung :
  ActionManagerMain.ActionBars[0].Items[0].Items[1].Items[1].Visible := false; Jede ActionBar hat einen oder mehrere Items - sog. TActionClients - die wiederum einen oder mehrere Items haben kann usw.
Je nach 'Lage'=Ebene des Menupunktes muss man sich entsprechend 'durchhangeln' um diesen Menupunkt ansprechen zu können. In meinem Beispiel wäre das die zweite Ebene und der 2.Eintrag.
Das Ganze muss man sich als Baum vorstellen (u.a. Darstellung nicht gerade kunstpreisverdächtig, aber sollte ansatzweise helfen..) Die fetten Einträge entsprechen dem o.a. Codeschnippsel

  • 0 - Actionbar
    +--0 Menüpunkt 1 {erste Ebene}
    ...+--0 Eintrag 11
    ...+--1 Eintrag 12 {zweite Ebene}
    ..... +--0 Unterpunkt 121
    ......+--1 Untermenu 122
    +--1 Menupunkt 2
    ...+--0 Unterpunkt 21
    ...+--1 Unterpunkt 22
Ich hoffe, dass die Vorgehensweise verständlich ist?
  Mit Zitat antworten Zitat
smudo

Registriert seit: 6. Sep 2005
Ort: Cottbus
362 Beiträge
 
Delphi XE2 Professional
 
#3

Re: ActionMainMenuBar Untermenü ausblenden

  Alt 20. Mär 2007, 14:21
Ich möchte jetzt nicht undankbar klingen, aber das "durchhangeln" auf diese Weise ist ziemlich unkomfortabel und zu statisch. Wenn ein Menüpunkt hinzugefügt wird, muss ich auch immer den Pfad anpassen, was natürlich sehr chaotisch werden kann, wenn mehrere Leute befugt sind, das Menü zu ändern.
Gibt es bei dieser Durchhangelmethode vielleicht sowas wie ItemByName?
  Mit Zitat antworten Zitat
raiguen
(Gast)

n/a Beiträge
 
#4

Re: ActionMainMenuBar Untermenü ausblenden

  Alt 20. Mär 2007, 15:04
Nun ja, diese ganze TActionClient-Collections-Rumeierei find ich auch nicht so pralle..
Um ein 'Menupunkt' direkt ansprechen zu können gibt es das hier (hab ich auch erst vor wenigen Minuten herausgefunden):
Delphi-Quellcode:
...
var acItem: TActionClientitem;
...
begin
  acItem := ActionManagerMain.FindItemByCaption('&Menupunkz');
  if Assigned(acItem) then
    acItem.Visible := ...
Ist zwar nett, aber m.E. etwas unflexibel, weil in dem zu übergebenden String das &-Zeichen für den HotKey enthalten sein muss - und da muss ich natürlich genau wissen, an welcher Position es steht Die Möglichkeit, mittels der Funktion StripHotKey() die Caption zu finden, scheitert kläglich
  Mit Zitat antworten Zitat
smudo

Registriert seit: 6. Sep 2005
Ort: Cottbus
362 Beiträge
 
Delphi XE2 Professional
 
#5

Re: ActionMainMenuBar Untermenü ausblenden

  Alt 21. Mär 2007, 09:07
Aber das ist doch schon mal genau das, was ich gesucht habe.
Das mit dem &-Zeichen ist in meinem Fall nicht so problematisch.

Vielen Dank
  Mit Zitat antworten Zitat
raiguen
(Gast)

n/a Beiträge
 
#6

Re: ActionMainMenuBar Untermenü ausblenden

  Alt 21. Mär 2007, 12:44
Zitat von smudo:
Aber das ist doch schon mal genau das, was ich gesucht habe.
Das mit dem &-Zeichen ist in meinem Fall nicht so problematisch.

Vielen Dank
Jo, aber in einer mehrsprachigen Anwendung - sprich die Captions sind bsp auf tschechisch, dann kann ich den Caption-String nicht mehr genau übergeben, da ich nicht weiß, wo denn das &-Zeichen vorhandne ist. Von daher muss ich mich auf die Ebene der 'Durchhangelei' begeben, solange mir keine andere elegantere Möglichkeit einfällt, in diesem Wirrwarr von TActionClients, TActionItems und TCollections-Konsorten expliziet auf einen bestimmten 'Menupunkt' zuzugreifen. Da es bei mir einige Items gibt, die zwar ne unterschiedliche Caption haben, aber auf die gleiche Action zu greifen, geht die Methode .FindItemByAction auch nicht...
Ichj bin eher schon geneigt, den ganzen Action-Zirkus wieder zu canceln, da selbiger mir zu schwerfällig ist und ich die angeblichen Vorteile nicht so sehe...
  Mit Zitat antworten Zitat
smudo

Registriert seit: 6. Sep 2005
Ort: Cottbus
362 Beiträge
 
Delphi XE2 Professional
 
#7

Re: ActionMainMenuBar Untermenü ausblenden

  Alt 21. Mär 2007, 13:56
Man könnte den Actionmanager ableiten und ein eigenes CompareProc einbauen.
Oder halt ne separate Funktion schreiben, die genau wie der ActionManager das macht, sich Item für Item durchhangelt und die Captions vergleicht - und dabei halt die &-Zeichen außer Acht lassen.

Auf welche Eigenschaft würdest du denn zugreifen wollen, wenn du eine Action für verschiedene Menüpunkte verwendest?
  Mit Zitat antworten Zitat
raiguen
(Gast)

n/a Beiträge
 
#8

Re: ActionMainMenuBar Untermenü ausblenden

  Alt 22. Mär 2007, 11:08
Wie gesagt: ich finde den ActionManager nach anfänglicher Euphorie zu komplex/kompliziert...
Hatte bspw. versucht, über die Eigenschaft/Methode Action.ActiveComponent herauszufinde, welcher 'Menüeintrag' eine Action auslöst; hab desweiteren alles (Un)Mögliche ausprobiert - es hat irgendwie nie das gewünschte Ergebnis gebracht; von daher habe ich genervt aufgegeben - nicht zuletzt auch aus dem Grund: soweit ich weiss, ist das Teil ja nicht Unicode-fähig...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:53 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