我在Form1添加一个Edit1控件(设置好界面和相应功能),现在我在Form2内也添加一个与Form1.Edit1一样的控件MyEdit,我想知道如何让Form2.MyEdit继承Form1.Edit1的所有界面和功能,并且当我修改Form1.Edit1后,相应Form2.MyEdit也自动修改,请问在D7上如何实现?请指教,谢谢!

解决方案 »

  1.   

    继承是对于类来说的。这应该是对象克隆的范畴。如果类是你自己写的继承于TPersistent类的类,那可以重写Assign方法,把要克隆的对象的成员、属性等在Assign方法中写明。
    如果不是,那就干脆写一个过程,在两个对象之间一句一句地赋值吧。
      

  2.   

    有的类已经重写了TPersistent的Assign方法,例如TStringList、TBitmap等等,你可以Ctrl+单击看一下它们的实现。
    下面是TStringList的Assign方法克隆对象的实际演示:var
      SS1, SS2: TStringList;procedure TForm1.Button2Click(Sender: TObject);
    var
      I : integer;
    begin
      if SS1=nil then SS1 := TStringList.Create;
      SS1.Text := '第一行'#10'第二行'#10'第三行';  if SS2=nil then SS2 := TStringList.Create;
      SS2.Assign(SS1);////克隆  SS1.Text := 'SS1改变'#10'不影响SS2'#10'可见SS1与SS2是指向不同对象的指针';
      //此时SS1改变,如果想让SS2再次克隆SS1,只需重新运行Assign方法
      for I := 0 to 2 do
        Showmessage(SS1[I]);
      for I := 0 to 2 do
        Showmessage(SS2[I]);  FreeAndNil(SS2);
      FreeAndNil(SS1);
    end;
      

  3.   

    楼上说的对,把两个窗体中可重用的部分,创建一个TFormX类,然后TForm1和TMyForm都继承自TFormX类就好了