for
実際、ループを使用できます。
var
Node: TTreeNode;
....
for Node in TreeView.Items do
DoSomething(Node);
これは、次のシンタックス シュガーです。
for i := 0 to TreeView.Items.Count-1 do
DoSomething(TreeView.Items[i]);
読みやすさの観点から、for/in
ループをお勧めします。
ノード イテレータをサポートしていない古いバージョンの Delphi では、while
ループを使用した方がよい場合があります。
Node := TreeView.Items.GetFirstNode;
while Assigned(Node) do
begin
DoSomething(Node);
Node := Node.GetNext;
end;
他にも方法があると思います。これらは私が知っている唯一のものです!
LU RD は、ドキュメントに次のような興味深い見解を示しています。
インデックスによるツリー ビュー アイテムへのアクセスは、特にツリー ビューに多数のアイテムが含まれている場合、時間がかかる場合があります。最適なパフォーマンスを得るには、ツリー ビューのアイテム インデックスへの依存関係ができるだけ少なくなるようにアプリケーションを設計してください。
これはかなり真実です。ランダム アクセスの場合、コードはルートから i番目のノードが見つかるまでツリーをたどる必要があります。
ただし、順次アクセスには最適化があります。Delphi ツリー ビュー ラッパーは、インデックスによって特定された最後のノードのインデックスを記憶しています。次回、キャッシュされたノードと 1 つしか違わないインデックスを持つノードを要求すると、必要なノードがすぐに返されます。これは に実装されていTTreeNodes.GetNodeFromIndex
ます。