![](/img/trans.png)
[英]How can I load Field1 and Field2 from TADOQuery to TTreeView?
[英]How can I copy a subtree from one TTreeView to another?
我想將所選節點及其所有后代從一個TTreeView復制到另一個節點。
實現這一目標的最佳,最有效的方法是什么?
遞歸執行此操作最簡單,如下所示:
procedure WalkChildren(Node: TTreeNode; List: TList<TTreeNode>);
var
i: Integer;
begin
List.Add(Node);
for i := 0 to Node.Count-1 do begin
WalkChildren(Node[i], List);
end;
end;
像這樣稱呼它:
List := TList<TTreeNode>.Create;
WalkChildren(Root, List);
此示例添加到列表中,但您可以使用您選擇的某個替換該操作。
現在我們可以走一棵樹了,是時候一起走兩棵樹了。
procedure CopySubTree(Src, DestParent: TTreeNode; DestNodes: TTreeNodes);
var
i: Integer;
Dest: TTreeNode;
begin
Dest := DestNodes.AddChild(DestParent, Src.Text);
//copy other parameters from Src to Dest as you please
for i := 0 to Src.Count-1 do begin
CopySubTree(Src[i], Dest, DestNodes);
end;
end;
你可以像這樣調用它:
CopySubTree(SrcTree.Selected, nil, DestTree.Items);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.