我如何声明一个对象能表示几个窗体,我在一个程序里面有几个窗体,但是每次只有一个窗体显示,我如何声明一个变量能表示这些窗体里的任何一个,比如在C++里面可以用它们共同的父类TForm的指针来指向这些派生类,在Delphi里面应该也也这种类似的声明方法吧.

解决方案 »

  1.   

    var
      CommonForm:TForm;
    begin
      CommonForm:=TForm1.Create(self);
      try
        CommonForm.ShowModal;
      finally
        CommonForm.Free;
      end;  CommonForm:=TForm2.Create(slef);
      try
        CommonForm.ShowModal;
      finally
        CommonForm.Free;
      end;
    end;以上使用一个TForm的对象,来实现两个从TForm继承来的Form,Form1和Form2,实现一些通用操作。
    但是如果你要实现的操作不在TForm中的话,你需要从TForm继承出一个TBaseForm,实现,或者只是定义你要实现功能的接口,然后从该TBaseForm继承实现具体的TForm1和TForm2,另外也可以使用Interface,只声明接口类型,具体实现在继承该Interface的class中完成。
      

  2.   

    一样啊,也是用TForm啊,唯一不同的是DELPHI中是用类变量的
    TMyForm = class(TForm)
    begin
    ...
    end;var
      MyForm1,MyForm2,MyForm3...,MyForm : TMyForm;
    ...begin
      MyForm := MyForm1;  // 之前MyForm只定义但不实例化(Create),而MyForm1,MyForm2...是实例化的
      ...
      MyForm := MyForm2;
      ...
    end;
      

  3.   

    好像写错了一点,应该是:
    TForm:=(TForm)TForm1.Create(self);