AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Löschen von TreeView-Items

Ein Thema von EinDelphianer · begonnen am 14. Mär 2003 · letzter Beitrag vom 14. Mär 2003
Antwort Antwort
EinDelphianer
(Gast)

n/a Beiträge
 
#1

Löschen von TreeView-Items

  Alt 14. Mär 2003, 14:30
Hi an alle!
Ich hab leider ein Problem beim löschen von TreeView. Ich habe die Variable "Node" (TTreeNode)" deklariert. Wenn ich auf das TreeView klicke, wird dieser Variable das Selektierte Node zugewiesen.
Code:
  Node := TreeView.Selected
Jetzt aber mal zu meinem eigentliche Problem:
Ich will alle Subitems des Nodes löschen (sofern dieser welche hat), wenn er selekiert ist. Dazu hab ich folgendes versucht:
Delphi-Quellcode:
  if Node.HasChildren then
  begin
    For i := 0 to Node.Count - 1 do
    begin
      TreeView.Items.Delete(Node.Item[i]);

      If not Node.HasChildren then
      begin
        Break;
        TreeView.Items.Delete(Node);
      end;
    end;
  end;
Mir ist nicht klar, warum hier eine Fehlermeldung kommt. ("Der Listenindex überschreitet das Maximum (0)")

Wäre über jede Hilfe dankbar

MfG
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#2

Re: Löschen von TreeView-Items

  Alt 14. Mär 2003, 14:34
Hallo,
Zitat von EinDelphianer:
Mir ist nicht klar, warum hier eine Fehlermeldung kommt. ("Der Listenindex überschreitet das Maximum (0)")
Anscheinend versuchst Du was zu löschen was es gar nicht gibt, bzw. Du greifst auf etwas zu das nicht existiert.
Du solltest mal die Schleife Debuggen, bringt Dich sicherlich weiter.

Grüsse, Daniel
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#3
  Alt 14. Mär 2003, 14:37
Du musst die Nodes rückwärts durchlaufen
Aus For i := 0 to Node.Count - 1 do wird For i := Node.Count - 1 downto 0 do ......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4
  Alt 14. Mär 2003, 14:41
Und die Begründung:
Die Schleife läuft zum Beispiel von 0 bis 9. Es sind also 10 Elemente vorhanden. Löscht du jetzt eins sind es nur noch 9. Deine Schleife läuft aber bis 10, ergo greifst du auf ein Element zu, welches es nicht mehr gibt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
EinDelphianer
(Gast)

n/a Beiträge
 
#5
  Alt 14. Mär 2003, 14:55
Vielen Dank für solch eine schnelle Hilfe. Jetzt ist mir ein Lichtlein aufgegangen. Hab danach auch sofort noch einen anderen Fehler beseitigt.
Code:
      If not Node.HasChildren then
      begin
        Break;
        TreeView.Items.Delete(Node);
      end;
Das konnte natürlich auch nicht funktionieren, aber ich hab es jetzt so hinbekommen, dass es funktioniert.
Nochmals vielen Dank für eure schnelle und vorzüglich Hilfe!!! Danke, Danke, Danke...

MfG
  Mit Zitat antworten Zitat
EinDelphianer
(Gast)

n/a Beiträge
 
#6
  Alt 14. Mär 2003, 15:07
Eine kurze Frage noch. Wenn ich nur ein Selektiertes SubItem löschen will (was auch einwandfrei bei mir klappt), wie bekomme ich dann heraus, ob es das letzt SubItem ist?

Vielen Dank für weitere Hilfe!

MfG
  Mit Zitat antworten Zitat
EinDelphianer
(Gast)

n/a Beiträge
 
#7
  Alt 14. Mär 2003, 16:02
Habs schon hinbekommen!

MfG
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:12 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