Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Tmainmenu im Submenu alle Einträge löschen?
webmaker - Mi 04.09.02 16:13
Titel: Tmainmenu im Submenu alle Einträge löschen?
Hallo
ich füge jedesmal wenn ein Submenu aufgeht (zur Laufzeit) Items hinzu, die alten wollte ich eigentlich mit Clear ganz einfach löschen. Doch dann lassen sich keine neuen hinzufügen, warum??? Oder wie kann ich sonst einfach alle Items löschen ??
webmaker - Do 05.09.02 20:09
Weiß denn keiner weiß??? Habe ich mich vielleicht nicht verständlich genug ausgedrückt??
Tino - Do 05.09.02 21:27
Poste doch mal die Codeabschnitte welche die Items löschen und der Teil der die Items hinzufügt!
Gruß
TINO
Christian S. - Do 05.09.02 21:27
Hi!
Mit dieser Funktion fügst Du Items, deren Benennung du aus einer ListBox ausliest (ListBox1) in ein Untermenü (men1) ein. Vorher löschst Du die alten:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure TForm1.Button1Click(Sender: TObject); VAR i : INTEGER; eintrag : ARRAY OF TMenuItem; begin SetLength(eintrag,ListBox1.Items.Count); for i:=0 to High(eintrag) do begin eintrag[i]:=TMenuItem.Create(MainMenu1); eintrag[i].Caption := ListBox1.Items[i]; end;
while Men1.Count>=1 do Men1.Remove(Men1.Items[0]);
for i:=0 to high(eintrag) do men1.Add(eintrag[i]); end; |
Ich hoffe, es hilft Dir,
MfG,
Peter
P.S.: Gerade fällt mir auf, dass Du Dir das Array auch sparen kannst, wenn Du erst löschst und dann Create und Add in einer Schleife machst!
webmaker - Fr 06.09.02 19:54
Also hier mein Quelcode: ich lade aus einer Ini mehere Schlüsselnamen in eine TStringliste. Daraus erzeuge ich dann die MenüItems. Ich wollte eigentlich alle Items mit Clear löscehn nur, lässt sich dann kein Item mehr hinzufügen.
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| procedure TEditForm.eigeneBefehle2Click(Sender: TObject); var Ini: TIniFile; NeuesMenuItem : TMenuItem; i, int : Integer; begin stringliste2 := tStringList.Create; try Ini:=TIniFile.Create(ExtractFilePath(ParamSTr(0))+'daten/config/befehle.dat'); Ini.ReadSection('befehle', stringliste2);
// eigeneBefehle2.Clear;
for i:=0 to stringliste2.Count -1 do begin NeuesMenuItem := TMenuItem.Create(Self); NeuesMenuItem.Caption := stringliste2[i]; NeuesMenuItem.Hint := stringliste2[i]; NeuesMenuItem.OnClick := unsicht2Click; eigeneBefehle2.Add(NeuesMenuItem); end; finally Ini.Free; end;
end; |
Den Quellcode von Peter Lustig versteh ich nicht ganz. Was soll men1 sein??
Also ich brauche nur eine Möglichkeit um alle Items zu löschen
Christian S. - Fr 06.09.02 20:57
webmaker hat folgendes geschrieben: |
Was soll men1 sein?? |
Wie ich hier:
Peter Lustig hat folgendes geschrieben: |
ein Untermenü (men1) ein. |
geschrieben habe, ist men1 das Untermenü, welches die zu löschenden Items enthält.
Um diese Items zu löschen brauchst du diesen Quelltext:
Quelltext
1: 2:
| while Men1.Count>=1 do Men1.Remove(Men1.Items[0]); |
MfG,
Peter
webmaker - So 08.09.02 12:59
mit diesem Code scheint er sie zwar zu löschen, aber er fügt keine neuen Items mehr hinzu. Wieso??
Christian S. - So 08.09.02 20:06
Hi!
Der Quelltext, den ich zuerst gepostet habe, funktioniert und auch mit der Ergänzung, die ich unten drunter geschrieben habe (inzwischen getestet). Hast Du mal versucht, die while-Schleife aus meinem letzten Posting an die Stelle Deines Clear-Befehls zu setzen?
MfG,
Peter
webmaker - Mo 09.09.02 20:17
jep,funzt dann immer noch nicht. Ich muss mich Morgen noch mal damit beschäftigen
Christian S. - Mo 09.09.02 21:28
Hi!
webmaker hat folgendes geschrieben: |
Ini:=TIniFile.Create(ExtractFilePath(ParamSTr(0))+'daten/config/befehle.dat'); |
Sollten die "/" nicht eigentlich "\" sein? Vielleicht liegt es ja da dran, aber ich schätze mal, dann hättest Du ja eine Fehlermeldung bekommen. Andererseits ist es das einzige, was unsere beiden Quelltexte noch sonderlich unterscheidet.
MfG,
Peter
webmaker - Di 10.09.02 17:48
Ich habe das jetzt so gemacht:
Quelltext
1: 2: 3: 4:
| while eigeneBefehle2.Count > 0 do begin eigeneBefehle2.Items[eigeneBefehle2.Count-1].Free; end; |
Christian S. - Di 10.09.02 18:54
Hi!
Gut, wenn es so funktioniert, trotzdem würde es mich interessieren, warum mein Quelltext bei mir funktionierte und bei Dir nicht. Die Welt ist groß und geheimnisvoll!!!:nixweiss:
MfG,
Peter
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!