2

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

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

什么是聪明的方法?

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

4

3 回答 3

7

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

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

TBaseVirtualTree.ValidateNode 方法

ValidateNode 确保给定节点(及其所有子节点,如果 Recursive 为真)被初始化。如果 Node 为 nil,则使用隐藏的根节点(这仅在 Recursive 为真时才有意义,在这种情况下整个树都被验证)。

于 2011-04-03T19:07:14.917 回答
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;
于 2010-04-12T06:06:13.093 回答
3

树视图.FullExpand;

于 2010-04-12T06:14:05.430 回答