我如何在运行时获取表单的实例?

Sad*_*deh 3 delphi delphi-xe2

在我的应用程序中,我需要以多种形式显示数据,这些表单完全具有相同的VCL,事件和过程,因为这些表单的数量取决于我的应用程序,所以我不能在设计时创建所有这些.

或者如何在运行时多次复制表单?

Uwe*_*abe 7

假设您的表单被声明为TForm2,您可以轻松地创建它的10个实例,如下所示:

var 
  myForms: TArray<TForm2>;
  I: Integer;
begin
  SetLength(myForms, 10);
  for I:=0 to 9 do begin
    myForms[I] := TForm2.Create(Application);  // Application will free the forms on exit
    myForms[I].Show;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

如果您不需要访问表单实例,则可以完全省略该数组并写入:

var 
  I: Integer;
begin
  for I:=0 to 9 do begin
    TForm2.Create(Application).Show;  // Application will free the forms on exit
  end;
end;
Run Code Online (Sandbox Code Playgroud)