我刚刚发现了这个组件并开始使用它。
我知道它的整个概念是在需要时随时初始化节点,但我需要所有节点立即初始化。
什么是聪明的方法?
我想出的唯一方法是在添加节点后使用GetLast() 。
我相信,有没有更好的方法?
我刚刚发现了这个组件并开始使用它。
我知道它的整个概念是在需要时随时初始化节点,但我需要所有节点立即初始化。
什么是聪明的方法?
我想出的唯一方法是在添加节点后使用GetLast() 。
我相信,有没有更好的方法?
立即初始化单个节点的更正确方法是使用 ValidateNode 方法,而不是已经建议的 FullExpand。根据VT的文档:
procedure ValidateNode(Node: PVirtualNode; Recursive: Boolean);
TBaseVirtualTree.ValidateNode 方法
ValidateNode 确保给定节点(及其所有子节点,如果 Recursive 为真)被初始化。如果 Node 为 nil,则使用隐藏的根节点(这仅在 Recursive 为真时才有意义,在这种情况下整个树都被验证)。
您可以编写自己的过程来手动构建树视图。
例子:
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;
树视图.FullExpand;