TreeView alle markierten elemente löschen ?

Rund um die LCL und andere Komponenten
Antworten
pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

TreeView alle markierten elemente löschen ?

Beitrag von pluto »

Hallo,
ich habe mir dazu heute diesen Code ausgedacht:

Code: Alles auswählen

procedure TForm1.SpeedButton2Click(Sender: TObject);
var
  i:Integer;
begin
  if TreeView1.Selected <> NIL then begin
    TFileItem(TreeView1.Selected.Data).Free;
    TreeView1.Selected.Data:=nil;
 
    TreeView1.Items.Delete(TreeView1.Selected);
  end;
 
  for i:=TreeView1.Items.count-1 downto 0 do begin
    if (TreeView1.Items[i].Selected) then begin
      TFileItem(TreeView1.items[i].Data).Free;
      TreeView1.items[i].Data:=nil;
 
      TreeView1.items.Delete(TreeView1.Items[i]);
    end;
  end;
end;

doch leider wird immer nur ein Elemente gelöscht. und ich weiß nicht warum.

Sieht ihr zufällig den Fehler oder wisst eine alternative ?
Ich habe schon in anderen Foren noch einer Fertigen Lösung gesucht auch eine im DelphiForum gefunden doch leider verwenden sie eine Funktion die es unter Lazarus bei der TreeView noch nicht gibt;: SelectionCount oder so ähnlich
daher habe ich mir doch was eigenes überlegen müssen. :(

PS:
Ich wollte nicht die VST für dieses Kleine Tool was ich vorhabe verwenden.
Da es sich ja nur um ein kleines Tool handelt würde die VST übertrieben sein.

Außerdem hat sie mir zu viele Fehler. Sie kann z.b. unter anderem nicht mit Umlauten umgehen.

Bei der Lazarus TreeView scheint es auch keine Getnext item oder so zu geben.
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Das ist so compilierbar ? Normalerweise wird Delete mit dem Index eines Items aufgerufen...
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Ja ! Das ist so Complierbar ! bei mir verlangt er ein TTreeViewNode und kein Index
procedure Delete(Node: TTreeNode);
so sieht die Defination von Delete aus
MFG
Michael Springwald

Antworten