9

delphi2009の仮想ツリーリストを使用しています。次のようなデータでツリーを作成しました。

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

すべての要素を特定の順序で繰り返します。最初のトップレベルノードを取得してから、そのすべての子を反復処理してFPathフィールドを変更する必要があります。その子を使い終わったら、別のトップレベルノードを取得したいと思います。

まず第一に、私はトップレベルのノードをいじくり回す方法がわかりません。

これに関するヒントを事前に感謝します

4

1 に答える 1

11

トップレベルノードを反復処理する方法は次のとおりです。(Smasherがコメントに残したように)ノードは必要に応じてを使用して初期化されており、反復が少し遅くなる可能性があることに注意してGetFirstくださいGetNextSiblingGetFirstNoInitただし、 andGetNextNoInit関数を使用でき(ノードが既に初期化されている場合)、パフォーマンスが向上する可能性があります。

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 に答える