我刚刚发现了这个组件并开始使用它。
我知道它的整个概念是在需要时初始化节点,但我需要所有节点立即初始化。
有什么聪明的方法吗?
我唯一想到的是在添加节点后使用 GetLast()。
我相信,有更好的方法,对吗?
我刚刚发现了这个组件并开始使用它。
我知道它的整个概念是在需要时初始化节点,但我需要所有节点立即初始化。
有什么聪明的方法吗?
我唯一想到的是在添加节点后使用 GetLast()。
我相信,有更好的方法,对吗?
更正确的初始化单个节点的方法是使用ValidateNode方法,而不是已经建议的FullExpand方法。根据VT的文档:
procedure ValidateNode(Node: PVirtualNode; Recursive: Boolean);
TBaseVirtualTree.ValidateNode 方法
ValidateNode 确保给定的节点(如果 Recursive 为 true,则包括其所有子节点)已初始化。如果 Node 为 nil,则使用隐藏的根节点(仅在 Recursive 为 true 时才有意义,在这种情况下,将验证整个树)。
procedure TForm1.BuildTree;
var
i: integer;
Data: ^TYourRecord;
pNode, cNode: PVirtualNode;
begin
for i:=0 to 1000 - 1 do
begin
//build parent node
pNode := VT.AddChild(nil);
Data := VT.GetNodeData(pNode);
//fill record values
Data.SomeVar := 'Parent Node';
//build child node
cNode := VT.AddChild(pNode);
Data := VT.GetNodeData(cNode);
Data.SomeVar := 'Child Node';
end;
end;
treeview.FullExpand;