MainMenu-Elemente beim start des programmes hinzufügen!
-
hallo,
ich möchte beim start meines programmes mainmenu elemente hinzufügen, die ich aus einer datei lese!
IM menu selbst sind schon 2 einträge voreingestellt!
neue erstellen möchte ich so:
TStringList* menuList = new TStringList(); menuList->LoadFromFile("menu.txt"); TMenuItem* addItem = new TMenuItem(MainMenu1); for(int i = 1; i < menuList->Count; i = i+4) { ShowMessage( addItem->Caption = menuList->Strings[i]; if(Form1->MainMenu1->Items[1].Count==2) { //Trennlinie einbauen TMenuItem* spaceItem = new TMenuItem(Form1->MainMenu1); spaceItem->Caption="-"; Form1->MainMenu1->Items[1].Add(spaceItem); } MainMenu1->Items[1].Add(addItem); } delete menuList; }bekomme leider eine exception, das das menü 2mal hinzugefügt würde

wie kann ich das richtig machen??
-
TMenuItem *addItem; for(int i = 0; i < menuList->Count; i = i+4) { addItme = MainMenu1->Items->Add(); if(MainMenu1->Items->Count == 3) { addItem->Caption = "-"; i -= 4; } else addItem->Caption = menuList->Strings[i]; }Ungetestet.
-
werds mal ausprobieren, aber eine frage dazu habe ich!
wieso das i-=4??
hast das einfach so reingemacht, oder hat das eine relevante bedeutung, denn ich selber brauch das ja nicht..
-
nein er findet die methode add() nicht

-
Hallo,
Warum wird in der for-Schleife eigentlich in 4er Schritten gezählt? Ansonsten wir so ein Eintrag zum 2. Punkt des MainMenüs hinzugefügt
TMenuItem* addItem = new TMenuItem(MainMenu1); addItem->Caption = "neuer Eintrag"; MainMenu1->Items->Items[1]->Add(addItem);Das new gehört natürlich in die Schleife.
-
Braunstein schrieb:
Hallo,
Warum wird in der for-Schleife eigentlich in 4er Schritten gezählt? Ansonsten wir so ein Eintrag zum 2. Punkt des MainMenüs hinzugefügt
TMenuItem* addItem = new TMenuItem(MainMenu1); addItem->Caption = "neuer Eintrag"; MainMenu1->Items->Items[1]->Add(addItem);Das new gehört natürlich in die Schleife.
in 4er schritten wird gezählt, weil ich nur jede 4te zeile brauche!
das mit dem new hab ich auch grad gemerkt, danke!eine frage noch, wie kann ich eigentlich ermitteln, welcher Menüeintrag gewählt wurde?
IndexOf erschließt sich mir nochnicht so ganz!
Und was anderes passendes habe ich da nicht gefunden!
-
Meinst du im OnClick-Event des Menüeintrages? In diesem Fall schau mal in die FAQ zum Thema Komponenten benutzen/Sendernamen identifizieren
-
Braunstein schrieb:
Meinst du im OnClick-Event des Menüeintrages? In diesem Fall schau mal in die FAQ zum Thema Komponenten benutzen/Sendernamen identifizieren
ja, aber für das Event habe ich eine selber geschriebene funktion!
gibt es eine möglichkeit an irgendeinen index zu kommen?
also im ersten menüeintrag das 3te element gedrückt, liefert als Index eben 3(oder4)
-
Nutze doch dafür die Variable Tag vom MenuItem.