//参考
var
  vMemoryStream: TMemoryStream;
begin
  vMemoryStream := TMemoryStream.Create;
  try
    TreeView1.SaveToStream(vMemoryStream);
    vMemoryStream.Position := 0;
    TreeView2.LoadFromStream(vMemoryStream);
  finally
    vMemoryStream.Free;
  end;
end;

解决方案 »

  1.   

    //复制Data//加    for I := 0 to TreeView1.Items.Count - 1 do
          TreeView2.Items[I].Data := TreeView1.Items[I];
      

  2.   

    TreeView2.Items.assign(TreeView1.Items);
    是可以,但是有个问题:
    当TreeView1中某个结点的HasChildren为True但是没有展开,
    那么在TreeView2中的该结点的HasChildren为False,不能展开,
    怎么办?
      

  3.   

    TreeView2.Items.assign(TreeView1.Items);
    for ii := 0 to TreeView1.Items.Count - 1 do
      TreeView2.Items[ii].HasChildren := TreeView1.Items[ii].HasChildren;
    解决!!!!!!!