AGB  ·  Datenschutz  ·  Impressum  







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

TTreeview

Ein Thema von simonko · begonnen am 15. Jan 2006 · letzter Beitrag vom 15. Jan 2006
Antwort Antwort
Seite 1 von 2  1 2      
simonko

Registriert seit: 2. Jun 2005
125 Beiträge
 
#1

TTreeview

  Alt 15. Jan 2006, 12:30
Wenn ich einen Node in der Treeview auswähle kann ich ihn und seine nachfolger löschen. Dafür gibs die funktion TreeView1.Selected.Delete; ich hab aber in jeden Node ein Objekt gespeichert. Nun müßte ich den baum durchgehen (meine treeview hat immer nur 2 nachfolger) und die objekte destroyn. hat jemand eine idee wie ich das durchgehen kann?
  Mit Zitat antworten Zitat
simonko

Registriert seit: 2. Jun 2005
125 Beiträge
 
#2

Re: TTreeview

  Alt 15. Jan 2006, 12:56
Delphi-Quellcode:
procedure durchgehen(var treenode : TTreenode);
begin
 if treenode.haschildren then begin
    durchgehen(treenode.getFirstChild);
    durchgehen(treenode.GetLastChild);
 end;
 TOperand(treenode.Data).destroy;
end;

geht das so?
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: TTreeview

  Alt 15. Jan 2006, 12:58
ein TreeNode braucht man nicht als Var machen da es ein Object ist und somit ein pointer. Und um das ganze gleich richtig zu machen würde ich nicht nur das erste und letzte item durchgehen sondern mit einer schleife alle durchgehen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
simonko

Registriert seit: 2. Jun 2005
125 Beiträge
 
#4

Re: TTreeview

  Alt 15. Jan 2006, 13:06
Ja hab gemerkt ich konnts nicht kompilieren mit dem Var. Aber gibts da vielleicht eine schon ausprogrammierte Variante wie man das Treeview durchgeht oder passt das so wie ich das jetzt geschrieben hab?
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: TTreeview

  Alt 15. Jan 2006, 13:16
das passt eigentlich so, man geht überlischerweise das ganze rekursiv durch so wie du es machst (mal abgesehen davon das du nur das erste und letzte item nimmst und nicht alle)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
simonko

Registriert seit: 2. Jun 2005
125 Beiträge
 
#6

Re: TTreeview

  Alt 15. Jan 2006, 13:21
Delphi-Quellcode:
 if Treeview1.Selected.Count>=2 then
   Neu1.Enabled:=false;
ich kann höchstens nur 2 kinder anhängen. also ist das egal. nur frag ich mich wenn ich nur ein kind anhänge dann müsste getfirst und getlast das selbe sein oder? dann versucht er etwas zu löschen was schon gelöscht wurde.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: TTreeview

  Alt 15. Jan 2006, 13:52
Zitat von SirThornberry:
... man geht überlischerweise das ganze rekursiv durch ...
Also ich würde das üblischerweise iterativ machen:
Delphi-Quellcode:
For i:=0 To MyTreeView.Items.Count - 1 do
  DoSomethingWith (MyTreeView.Items[i])
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
simonko

Registriert seit: 2. Jun 2005
125 Beiträge
 
#8

Re: TTreeview

  Alt 15. Jan 2006, 13:54
das mit dem index geht ganz langsam weil das intern so implementiert ist dass der das rekursiv durch geht.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#9

Re: TTreeview

  Alt 15. Jan 2006, 14:59
Zitat von simonko:
das mit dem index geht ganz langsam weil das intern so implementiert ist dass der das rekursiv durch geht.
Wie kommst Du denn darauf? Schau Dir mal den Code in ComCtrls an. Das ist nichts Rekursives. Ich habe Delphi 6.

Beim Hochzählen, wie in meinem Schnipsel, wird einfach GetNext aufgerufen, und das ist sogar schneller als rekursives Durchlaufen (ca. 8%).
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
simonko

Registriert seit: 2. Jun 2005
125 Beiträge
 
#10

Re: TTreeview

  Alt 15. Jan 2006, 15:52
Delphi-Quellcode:
For i:=0 To MyTreeView.Items.Count - 1 do
  DoSomethingWith (MyTreeView.Items[i]
dabei wird der baum so oft nutzlos durchgelaufn..
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 23:48 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