Hä?
Wie baust du denn den Baum auf? Normal ist es dem VST völlig wurscht, ob er aufgeklappt ist, oder nicht, da er die ganze Struktur intern handelt.
Edit
Grad mal 'n Testprojekt gemacht. Geht. Irgendwas musst du falsch machen.
Delphi-Quellcode:
unit Unit1;
interface
uses
Winapi.Windows,
Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.Dialogs, VirtualTrees;
type
TForm1 =
class(TForm)
VirtualStringTree1: TVirtualStringTree;
procedure FormCreate(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
i, a, b: Integer;
Node, ParentNode: PVirtualNode;
begin
Randomize;
// Zufällige Baumstruktur erstellen
ParentNode :=
nil;
for i := 0
to 99
do
begin
Node := VirtualStringTree1.AddChild(ParentNode);
if (i + 1)
mod (Random(2) + 1) = 0
then
begin
ParentNode := Node;
end
else
ParentNode :=
nil;
end;
a := VirtualStringTree1.TotalCount;
// Baumstruktur durchlaufen
b := 0;
Node := VirtualStringTree1.GetFirst;
while Assigned(Node)
do
begin
Inc(b);
Node := VirtualStringTree1.GetNext(Node);
end;
ShowMessage(IntToStr(a) + '
<> ' + IntToStr(b));
end;
end.
Nochmal Edit
Eigentlich hätte er nur einen Grund, nach dem Root aufzuhören, wenn er GetNextSibling auf ihn anwendet.