(RAD Studio)Virtual TreeView:如何一次初始化所有节点?

时间:2010-04-12 04:41:47

标签: delphi virtualtreeview

我刚刚发现了这个组件并开始使用它。

我理解它的整个概念是在需要的时候初始化节点,但我需要所有节点立即初始化。

这样做的聪明方法是什么?

我唯一想到的是在添加节点后使用 GetLast()
我相信,还有更好的方法吗?

3 个答案:

答案 0 :(得分:6)

立即初始化单个节点的更正确的方法是使用ValidateNode方法,而不是已经建议的FullExpand。根据VT的文件说明:

procedure ValidateNode(Node: PVirtualNode; Recursive: Boolean);
  

TBaseVirtualTree.ValidateNode方法

     

ValidateNode确保给定   节点(及其所有子节点,如果   递归是真的)被初始化。如果   节点为零,然后是隐藏的根节点   使用(这只有意义   递归是真的,在这种情况下   整个树都经过验证。)

答案 1 :(得分:3)

您可以编写自己的程序来手动构建树视图。

示例:

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;

答案 2 :(得分:3)

treeview.FullExpand;