如何在Delphi中动态创建新表单并从现有表单继承表单

如何在Delphi中动态创建新表单并从现有表单继承表单,delphi,delphi-7,Delphi,Delphi 7,在Delphi中,是否有任何方法可以在动态创建一个表单之前从现有表单继承? 我知道如何使用tobjects.create()动态创建新表单,但我需要创建一个与已创建表单完全相同的表单,方法是在创建新表单时继承该表单 var Form2: TForm1; begin Form2 := TForm1.create(nil); try // now form2 is exactly "like" form1 when it w

在Delphi中,是否有任何方法可以在动态创建一个表单之前从现有表单继承? 我知道如何使用
tobjects.create()
动态创建新表单,但我需要创建一个与已创建表单完全相同的表单,方法是在创建新表单时继承该表单

   var
       Form2: TForm1;
    begin
       Form2 := TForm1.create(nil);
       try
          // now form2 is exactly "like" form1 when it was created 
          Form2.Top := Form1.Top;
          Form2.Left := Form1.Left;
          // now some of Form2's properties are like Form1's are now                                              
          Form2.ShowModal;
       finally
          Form2.Free;
       end;
所以问题是,你说的“喜欢”是什么意思?如果在创建Form1后对其进行了运行时更改,则需要在创建form2后对其应用相同的运行时更改。遗产不能为你这样做。继承是“容器”,而不是数据。要复制表单的“数据”,需要编写一个过程,将form2的所有属性值设置为form1的属性值。或者,复制您关心的属性。

试试这个

interface
uses Forms, SysUtils, Classes, Controls;

type
    TCommonFormClass = class of TCommonForm;
    TCommonForm = class(TForm)
    private
      // Private declaration
    public
      // Public declaration
      constructor Create(Sender: TComponent); virtual;
    end;

implementation 

constructor TCommonForm.Create(Sender: TComponent);
begin
  inherited Create(Sender);
  // do other
end;
您的子窗体将是这样的

type
    TMyForm = class(TCommonForm)
    private
        // Private declaration
    public
        // Public declaration
    end;

implementation

{$R *.dfm}

end.
要创建子对象,请使用:

procedure CallChild;
var MyForm: TMyForm;
begin
  MyForm:= TMyForm.Create(nil);
  try    
    MyForm.ShowModal;
  finally
    MyForm.Free;
  end;
end;

那不是继承。它只是创建一个新实例,每次运行应用程序时都会这样做
Application.CreateForm
在项目flie中执行此操作,您可以使用
NewForm:=TForm1.Create()
在代码中执行此操作,将
t FORM1
替换为您要使用的表单类的名称。谢谢您的回答,先生。我问这个问题是想知道我是否可以切换到指定的表单。例如:在某些事件中,我需要切换到我在EditBox中指定的表单问另一个问题!