9

我正在为 delphi 2009 使用虚拟树列表。我创建了一个包含以下数据的树:

type
  PTreeData = ^TTreeData;
  TTreeData = record
    FCaption: String;
    FPath: String;
  end;

我想迭代所有元素,但按特定顺序。我需要获取第一个顶级节点,然后遍历其所有子节点并修改FPath字段。当我处理完它的子节点后,我想获得另一个顶级节点,依此类推。

首先,我不知道如何迭代顶级节点。

提前感谢您对此的任何提示

4

1 回答 1

11

这是迭代顶级节点的方法。请注意(正如 Smasher 在他的评论中留下的),如果需要,节点正在通过使用进行初始化GetFirstGetNextSibling这可能会稍微减慢迭代速度。但是,您可以使用GetFirstNoInitandGetNextNoInit函数(如果您已经初始化了节点)并且您可能会获得更好的性能。

procedure TForm1.Button1Click(Sender: TObject);
var
  Data: PTreeData;
  Node: PVirtualNode;
begin
  Node := VirtualStringTree1.GetFirst;
  while Assigned(Node) do
  begin
    Data := VirtualStringTree1.GetNodeData(Node);
    // here you can access your data
    Node := VirtualStringTree1.GetNextSibling(Node);
  end;
end;
于 2012-03-05T13:35:29.140 回答