如何從一個填充的樹視圖中獲取資料并將其放入另一個現有的樹視圖中。需要復制所有節點和子節點。
uj5u.com熱心網友回復:
我認為您可以使用流來保存和加載樹內容。我現在沒有運行環境來測驗示例,但是您的代碼可能如下所示:
var
MS: TMemoryStream;
begin
MS := TMemoryStream.Create;
try
Tree1.SaveToStream(MS);
MS.Position := 0;
Tree2.LoadFromStream(MS);
finally
MS.Free;
end;
end;
uj5u.com熱心網友回復:
TTreeNode實作該TPersistent.Assign()方法,因此一種選擇是撰寫一個遞回函式,該函式迭代源 TreeView 添加和分配節點到目標 TreeView。例如:
procedure CopyNodes(SrcTree, DstTree: TTreeView);
var
DstNodes: TTreeNodes;
SrcRootNode: TTreeNode;
procedure DoCopyNodes(SrcNode, Relative: TTreeNode; AddMode: TNodeAttachMode);
var
DstNode: TTreeNode;
begin
while SrcNode <> nil do
begin
DstNode := DstNodes.AddNode(nil, Relative, '', nil, AddMode);
try
DstNode.Assign(SrcNode);
DoCopyNodes(SrcNode.GetFirstChild, DstNode, naAddChild);
except
DstNode.Delete;
raise;
end;
SrcNode := SrcNode.GetNextSibling;
end;
end;
begin
SrcRootNode := SrcTree.Items.GetFirstNode;
if SrcRootNode <> nil then
begin
DstNodes := DstTree.Items;
DstNodes.BeginUpdate;
try
DoCopyNodes(SrcRootNode, nil, naAdd);
finally
DstNodes.EndUpdate;
end;
end;
end;
CopyNodes(TreeView1, TreeView2);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/534524.html
標籤:德尔福德尔福7
