Autor Beitrag
webmaker
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 205



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 205



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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:

ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 205



BeitragVerfasst: 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.

ausblenden 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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:

ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 205



BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 205



BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 205



BeitragVerfasst: Di 10.09.02 17:48 
Ich habe das jetzt so gemacht:
ausblenden 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".