3

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

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

4

2 回答 2

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;

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

var 
  I: Integer;
begin
  for I:=0 to 9 do begin
    TForm2.Create(Application).Show;  // Application will free the forms on exit
  end;
end;
于 2012-08-26T16:29:50.550 回答
0

要创建数量不定的表格,您可以使用此代码..

private
   MyForm: array of TForm;

procedure TForm1.CreateForms(Sender: TObject);
begin
  SetLength(MyForm, Length(MyForm) + 1);
  MyForm[Length(MyForm) - 1] := TForm1.Create(Self);
  MyForm[Length(MyForm) - 1].Name := 'Form' + IntToStr(Length(MyForm));
  MyForm[Length(MyForm) - 1].Caption := 'Form' + IntToStr(Length(MyForm));
  MyForm[Length(MyForm) - 1].Show;
end;
于 2012-08-26T18:59:13.780 回答