var
  node,node1,node2:ttreenode;
begin
  node:=treeview1.Items[0];
  node1:=treeview2.items[0];
  if not node1.HasChildren then node1.HasChildren:=true;
  node1:=treeview2.Items.AddChild(node1,node.text);
  node2:=node.getFirstChild ;
  while node2<>nil do
  begin
    treeview2.Items.AddChild(node1,node2.text);
    node2:=node2.GetNext ;
  end;
end;

解决方案 »

  1.   

    有DATA的数据结构时,没有DATA时的处理方法又是如何?
      

  2.   

    procedure CopyTree(Source,Dest:TTreeNode;DestTree:TTreeView);
    var
        TempSourceNode,TempDestNode:TTreeNode;
    Begin
        if (Source = nil) or (DestTree =nil) then
            raise Exception.Create('Error');
        if Dest =nil then
            TempDestNode := DestTree.Items.Add(nil,'')
        else
            TempDestNode := DestTree.Items.AddChild(Dest,'');
        TempDestNode .Assign(Source);
        if Source.HasChildren then Begin
            TempSourceNode := Source.GetFirstChild;
            repeat
                if TempSourceNode <> nil then
                    CopyTree(TempSourceNode,TempDestNode,DestTree);
                TempSourceNode := Source.GetNextChild(TempSourceNode);
            until TempSourceNode =nil;
        end;
    end;参数说明:
    Source: 想Copy的树结点,不能为nil,否则会raise一个错误;
    Dest: 想Copy到的目的结点,如果为nil,则添加为根结点。
    DestTree 目的结点所在的TreeView例子:
        CopyTree(TreeView1.Selected,TreeView2.Selected,TreeView2);
      

  3.   

    好呀,好呀,copyTree 
    谢谢,非常感谢,一点小分先上