Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Dynamisch erstelltes PopUpMenu Unter- Untereinträge hinzufügen / löschen (https://www.delphipraxis.net/166088-dynamisch-erstelltes-popupmenu-unter-untereintraege-hinzufuegen-loeschen.html)

Metschu 29. Jan 2012 20:21

Dynamisch erstelltes PopUpMenu Unter- Untereinträge hinzufügen / löschen
 
Hallo zusammen!

Ich stehe irgendwie auf dem Schlauch. Ich versuche bei einem Dynamisch erstelltem PopUpMenu die Unter- Untereinträge hinzuzufügen oder zu löschen.
Die Untereinträge erstelle ich wie folgt:

Delphi-Quellcode:
PopupMenu.Items.Items[popUpMenu.Items.IndexOf(Menu1)].Add(NewItem('Untermenu1',0,False,True,Aktion,0,'');


Über PopUp.items.FindItem('Untermenu1') sollte ich ja den Index des eben erstellten Untermenüs finden, nur bekomme ich da immer "-1" zurück.

Ich schätze mal das das Unter-Untermenü nach folgendem Schema erstellt werden muss:

Delphi-Quellcode:
PopUpMenu.items.items[Itemindex von Menu1].items[Itemindex von Untermenu1].Add(...)


Kann mir einer mal nen Tip geben, wie ich da weiter komme?

Vielen Dank schonmal!

jaenicke 29. Jan 2012 21:00

AW: Dynamisch erstelltes PopUpMenu Unter- Untereinträge hinzufügen / löschen
 
Merke dir einfach die erstellten Menüeinträge, z.B. in einem Dictionary oder einer Liste, dann stellt sich das Problem diese wiederzufinden gar nicht...
Mit einem Dictionary kannst du z.B. gleich einen Bezug zur dahinterliegenden Datenstruktur herstellen, aus der du die Daten für die Einträge ausliest.

So wie du es versuchst ist es ziemlich unübersichtlich.

himitsu 29. Jan 2012 21:13

AW: Dynamisch erstelltes PopUpMenu Unter- Untereinträge hinzufügen / löschen
 
Siehst du, genau deßhalb verwendet man einfach keine Texte aus der GUI,
Text, Caption und Co. kann sich ändern und schon findet man nix mehr.
Auch macht es sich blöde, wenn man die Anwendung irgendwann mal lokaliseren möchte.

Hast du mal das Menü über die Tastatur geöffnet oder ist dir bei Menüs/Kontextmenüs mal aufgefallen, daß dort Buchstaben unterstichen sind? (seit XP/Vista werden diese zwar nicht mehr standardmäßig unterstichen, bzw. es wird nicht mehr angezeigt, aber sie sind dennoch da)

Tja, die Delphi-Menüs belegen automatisch Buchstaben, wenn du vergessen hast selber diese vorzugeben. :roll:
Und schwups, schon stimmt der Text nicht mehr überein ... also selber Schuld, wenn du solche Texte so verwendest. :tongue:

Uwe Raabe 29. Jan 2012 21:15

AW: Dynamisch erstelltes PopUpMenu Unter- Untereinträge hinzufügen / löschen
 
Zitat:

Zitat von Metschu (Beitrag 1148175)
Über PopUp.items.FindItem('Untermenu1') sollte ich ja den Index des eben erstellten Untermenüs finden, nur bekomme ich da immer "-1" zurück.

Das wundert mich nicht!
Delphi-Quellcode:
PopupMenu.Items.Items[popUpMenu.Items.IndexOf(Menu1)].FindItem('Untermenu1')
sollte da mehr Erfolg haben.

Das Erstellen geht übrigens einfacher:
Delphi-Quellcode:
Menu1.Add(NewItem('Untermenu1',0,False,True,Aktion,0,''));

Wobei sich die Suche dann auch auf
Delphi-Quellcode:
Menu1.FindItem('Untermenu1');
beschränken kann.

Metschu 29. Jan 2012 21:53

AW: Dynamisch erstelltes PopUpMenu Unter- Untereinträge hinzufügen / löschen
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1148180)
Delphi-Quellcode:
Menu1.Add(NewItem('Untermenu1',0,False,True,Aktion,0,''));

Bei genauerer Betrachtung eigentlich Logisch :wall:
Danke für den Schubs in die Richtige Richtung...:thumb:


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