![]() |
Virtual Treeview - Nodes durch-iterieren - Wie?
Hallo Wissende,
ich habe eine kleine function, die von einem normalen Treeview auf einen virtual Treeview adaptieren will, finde aber keine Möglichkeit die Schleife so anzupassen, dass ich durch alle Nodes gehen kann und das Level prüfen und vergleichen kann. Irgendwie ist das völlig anders beim VST. Hier mal das Original, wie es mit einem normalen Trreview funktioniert hat.
Delphi-Quellcode:
Kann mir bitte jemand einen Tipp geben?
function GetItemsOfLevel(int_level_count : integer) : integer;
var i : integer; begin Result := 0; with form1.tree do begin for i := 0 to Items.Count-1 do begin if Items.Item[i].Level = int_level_count then inc(Result); end; end; end; |
Re: Virtual Treeview - Nodes durch-iterieren - Wie?
Ich habs jetzt so gemacht, aber ich bin mir nicht sicher, ob das so in Ordnung ist.
Delphi-Quellcode:
function GetItemsOfLevel(int_level_count : integer) : integer;
var akt_Node, last_Node: PVirtualNode; begin Result := 0; with form2.vst do begin akt_Node := GetFirst; last_Node := GetLast(nil); while not(akt_Node = last_Node) do begin if GetNodeLevel(akt_Node) = int_level_count then inc(Result); akt_Node := GetNext(akt_Node); end; end; end; |
Re: Virtual Treeview - Nodes durch-iterieren - Wie?
Hallo,
benutze die CallBack-Funktion (hier im Tutorial beschrieben). Heiko |
Re: Virtual Treeview - Nodes durch-iterieren - Wie?
Hm, danke für die Antwort, aber das was ich fand, war nicht wirklich erschöpfend.
Ich geh mal davon aus, dass Du die CopySubTree-Routine gemeint hast und mir durch die Blume sagen wolltest, dass ich den Spass rekursiv durchlaufen soll...!? |
Re: Virtual Treeview - Nodes durch-iterieren - Wie?
brauchst nicht den lastnode prüfen (den du bei deiner version auch übersehen würdest)
GetNext liefert eh nil zurück, wenn es keinen mehr gibt
Delphi-Quellcode:
function GetItemsOfLevel(int_level_count : integer) : integer;
var akt_Node: PVirtualNode; begin Result := 0; with form2.vst do begin akt_Node := GetFirst; while assigned(akt_Node) do begin if GetNodeLevel(akt_Node) = int_level_count then inc(Result); akt_Node := GetNext(akt_Node); end; end; end; |
Re: Virtual Treeview - Nodes durch-iterieren - Wie?
Zitat:
|
Re: Virtual Treeview - Nodes durch-iterieren - Wie?
Hallo,
eine CallBack-Funkon wird vom TreeView für alle Nodes durchlaufen. Da gibt es kein "rekursiv". die CallBack-Methode
Delphi-Quellcode:
und der Aufruf (ich suche ab Root, deshalb NIL).
procedure LV_TPData_SearchCallBack(Sender: TBaseVirtualTree;
Node: PVirtualNode; Data: Pointer; var bAbort: Boolean); Wird bAbort nicht angetastet, wird jeder Node übergeben.
Delphi-Quellcode:
SearchTPItem ist mein Data-Pointer (ich weise Objekte, nicht Records zu, aber nur am Rande).
SearchTPItem.Id:= theId2Search;
LV_TPData.IterateSubTree(NIL, LV_TPData_SearchCallBack, SearchTPItem); Du du nicht suchst, kannst da das auf NIL setzen. Heiko |
Re: Virtual Treeview - Nodes durch-iterieren - Wie?
Liste der Anhänge anzeigen (Anzahl: 2)
Vielen Dank für Eure Geduld, aber ich quähl mich nun schon fast 2 Wochen mit dem Problem den Treeview inhaltlich um 90° gedreht zu visualisieren. So wie er ist habe ich das ja schon hinbekommen, aber nicht gedreht...
Ich hänge mal ein Bild dessen an, was ich bisher habe...baum.png Und eins, wie ich es gern hätte, aber ich bekomms einfach nicht, da ich mit Rekursion und CallBacks noch nie so recht klargekommen bin. Vielleicht habt ihr ja eine Idee? Ich zeig auch gern mal den Code, den ich bisher hatte, wenns sein muss. Ist eh nicht so dolle... |
Re: Virtual Treeview - Nodes durch-iterieren - Wie?
Hallo,
unwahrscheinlich, dass der VST das kann. Zeig doch mal, wie es bisher aussieht ? Oder ist das das 2. Bild ? Heiko |
Re: Virtual Treeview - Nodes durch-iterieren - Wie?
Eigentlich gilt hier im Forum: Neue Frage = neuer Post!
Bild 1 ist nicht möglich, würde ich selbst malen. Bild 2 ist möglich über die Paint Ereignisse. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz