在我的应用程序中,我需要以多种形式显示数据,这些表单完全具有相同的VCL,事件和过程,因为这些表单的数量取决于我的应用程序,所以我无法在设计中创建所有这些-time。
或者如何在运行时多次复制表单?
答案 0 :(得分: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;
答案 1 :(得分: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;