Ich habe über die Jahre leider vergessen wie man einen Node ausklappt.
Mein VST bekommt die Daten von einer ObjectList. Jede Node hat ein Child. Das funktioniert auch. Aber ich möchte, nachdem alle Nodes im VST sind, alle aufklappen.
Delphi-Quellcode:
procedure TForm1.VSTInitNode(Sender: TBaseVirtualTree; ParentNode, Node: PVirtualNode; var InitialStates: TVirtualNodeInitStates);
var
NodeData: TData;
begin
NodeData := nil; // Valium for the compiler
if Sender.GetNodeLevel(Node) = 0 then
begin
Include(InitialStates, ivsHasChildren);
NodeData := DataClasses[Node.Index];
end
else
begin
NodeData := Node.Parent.GetData<TData>();
end;
Node.SetData<TData>(NodeData);
end;
procedure TForm1.VSTInitChildren(Sender: TBaseVirtualTree; Node: PVirtualNode; var ChildCount: Cardinal);
begin
ChildCount := 1;
end;
procedure TForm1.VSTGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: string);
var
NodeData: TData;
begin
NodeData := Node.GetData<TData>;
if not Assigned(NodeData) then
Exit;
if Sender.GetNodeLevel(Node) = 0 then
CellText := NodeData.FCaption
else if Sender.GetNodeLevel(Node) = 1 then
CellText := NodeData.FSubCaption;
end;