Autor |
Beitrag |
webmaker
Beiträge: 205
|
Verfasst: Mi 04.09.02 16:13
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 ??
_________________ .::Wissen ist Macht, nichts wissen macht nichts::.
|
|
webmaker
Beiträge: 205
|
Verfasst: Do 05.09.02 20:09
Weiß denn keiner weiß??? Habe ich mich vielleicht nicht verständlich genug ausgedrückt??
_________________ .::Wissen ist Macht, nichts wissen macht nichts::.
|
|
Tino
Beiträge: 9839
Erhaltene Danke: 45
Windows 8.1
Delphi XE4
|
Verfasst: 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.
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: 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!
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
webmaker
Beiträge: 205
|
Verfasst: 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
_________________ .::Wissen ist Macht, nichts wissen macht nichts::.
|
|
Christian S.
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: 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
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
webmaker
Beiträge: 205
|
Verfasst: 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??
_________________ .::Wissen ist Macht, nichts wissen macht nichts::.
|
|
Christian S.
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: 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
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
webmaker
Beiträge: 205
|
Verfasst: Mo 09.09.02 20:17
jep,funzt dann immer noch nicht. Ich muss mich Morgen noch mal damit beschäftigen
_________________ .::Wissen ist Macht, nichts wissen macht nichts::.
|
|
Christian S.
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: 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
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
webmaker
Beiträge: 205
|
Verfasst: 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; |
_________________ .::Wissen ist Macht, nichts wissen macht nichts::.
|
|
Christian S.
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: 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!!!
MfG,
Peter
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|