type
  TDepartment = class(TObject)
    iDepartmentId: Integer;
    iParentId: Integer;
    vDepartment: String;
  end;...
ThisDepartment := TDepartment.Create;
ThisDepartment := TreeView1.Selected.Data;当我把ThisDepartment 里面的数据清空的时候TreeView1.Selected.Data也被清空了(估计是指针传递),我想修改ThisDepartment数据的时候不影响TreeView1.Selected.Data,请问要怎么做?

解决方案 »

  1.   

    可以用对象复制
    定义两个对象,一个对象存在结点中,一个用来修改
    自己写个方法
    type 
        TDepartment   =   class(TObject) 
            iDepartmentId:   Integer; 
            iParentId:   Integer; 
            vDepartment:   String; 
            procedure CopyFrom(Source: TObject);
        end;procedure TDepartment.CopyFrom(Source: TObject);
    begin
      with TDepartment(Source) do
      begin
        self.iDepartmentId := iDepartmentId;
        self.iParentId := iParentId;
        ...
      end;
    end;
    使用的时候
    ThisDepartment1 := TDepartment.Create;
    给ThisDepartment1赋值,存在TreeView的结点Data里
    然后再定义一个对象
    ThisDepartment2,ThisDepartment2.CopyFrom(ThisDepartment1);
    同样也可以ThisDepartment1.CopyFrom(ThisDepartment2);
    从而达到数据的修改但你如果非得始终用一个对象ThisDepartment1,那肯定是不行的,对象的实质就是指针