Ich arbeite gerade mit einer VirtualStringTree und möchte gerne Nodes mit Childnodes hinzufügen.
Code:
node
subnode
subnode
subnode
node
subnode
subnode
subnode
Wie macht man das?
Ich initialisere Nodes so
Delphi-Quellcode:
procedure TMainForm.VSTInitNode(Sender: TBaseVirtualTree; ParentNode, Node: PVirtualNode; var InitialStates: TVirtualNodeInitStates);
begin
Node.SetData<TNodeData>(NodeList[Node.Index]);
end;
Mein VSTInitChildren sieht so aus
Delphi-Quellcode:
procedure TMainForm.VSTInitChildren(Sender: TBaseVirtualTree; Node: PVirtualNode; var ChildCount: Cardinal);
begin
ChildCount := 1;
end;
Damit bekomme ich aber so ein Resultat
So zeige ich Texte an
Delphi-Quellcode:
procedure TMainForm.VSTGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: string);
var
NodeData: TNodeData;
begin
NodeData := Node.GetData<TNodeData>;
if not Assigned(NodeData) then
Exit;
case Sender.GetNodeLevel(Node) of
0:
CellText := NodeData.A;
1:
CellText := NodeData.B;
2:
CellText := NodeData.C;
3:
CellText := NodeData.D;
end;
end;
Daten für einen neuen Node füge ich meiner Klassenliste so hinzu. Aber wie bekomme ich Childnodes dazu und auch noch angezeigt?
Delphi-Quellcode:
NodeData := TNodeData.Create;
NodeData.A := 'A';
NodeData.B := 'B';
NodeData.C := 'C';
NodeData.D := 'D';
NodeList.Add(NodeData);
VST.RootNodeCount := NodeList.Count;