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/)
-   -   Delphi Submenu Einträge löschen (https://www.delphipraxis.net/809-submenu-eintraege-loeschen.html)

Alexander 10. Sep 2002 15:47


Submenu Einträge löschen
 
Hallo
ich habe ein Problem beim Löschen der Items eines Submenus. Hier mein Quellcode:
Code:
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;
  if (eigeneBefehle2.Items[0].Caption = '') then
     eigeneBefehle2.Items[0].Destroy;

  finally
    Ini.Free;
  end;

end;
Ich wollte eigentlich die Items mit Clear löschen was aber irgendwie nicht geht. Wie muss ich sie dann löschen??
(Wenn ich sie mit clear löschen und dann wieder alle Items einfüge, so will das Submenü nicht aufgehen!)
Danke schon mla

Christian Seehase 10. Sep 2002 16:06

Moin Alexander,

probiers doch mal so (statt Clear):

Code:
   while eigeneBefehle2.Count > 0 do
   begin
     eigeneBefehle2.Items[eigeneBefehle2.Count-1].Free;
   end;
BTW:
Du hast da auch Destroy verwendet, nimm' da lieber mal Free;

sakura 10. Sep 2002 16:09

Versuche mal folgenden Ansatz:
Code:
var
  NeuesMenuItem, DelItem: TMenuItem;
begin
  DelItem := NeuesMenuItem.Items[0];
  NeuesMenuItem.Remove(NeuesMenuItem.Items[0]);
  DelItem.Free;
end;

Alexander 10. Sep 2002 16:42

Danke an euch beide
Ich habe Christians Lösung genommen, bloß für
Code:
while eigeneBefehle2.Count > 0 do
Code:
while eigeneBefehle2.Count > 1 do
genommen, da anscheinend immer 1 Item da sein muss, sonst kann er keine neuen hinzufügen. Danke


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