在保持 FormMain 作为主窗体的同时在主窗体之前创建辅助窗体?
Create secondary form before main form while keeping FormMain as main form?
在 Delphi 10.1 Berlin IDE 中,使用 VCL Form 应用程序项目,在“项目选项”对话框中,我有以下设置:
现在我希望在 FormMain
表单之前创建 formOptions
表单,同时将 FormMain
表单作为主表单。原因是:主窗体可以在其 FormCreate
过程中加载数据(其中 formOptions
仍未创建),但要处理这些数据,它需要来自 formOptions
窗体的设置。
但是当我将 formOptions
项目拖到列表顶部时,上面的主窗体组合框也会更改为 formOptions
!
那么如何使 formOptions
表单在 FormMain
表单之前创建,同时保持 FormMain
表单作为主表单?
用 Application.CreateForm()
创建的第一个 TForm
成为 VCL 的 Application.MainForm
,并且无法更改。因此,在 CreateForm()
分配 MainForm
.
之前,请执行您需要执行的任何初始化操作
你有两个选择:
从自动创建列表中删除 formOptions
(从而删除为它生成的 CreateForm()
调用),然后自己在代码中手动创建它。 CreateForm()
在完全创建之前不会分配 MainForm
,因此您实际上可以通过两种不同的方式之一来处理它:
一个。直接在项目的 .dpr
文件中:
Application.Initialize;
Application.MainFormOnTaskbar := True;
formOptions := TFormOptions.Create(Application);
Application.CreateForm(TFormMain, FormMain);
Application.Run;
b。在 MainForm 的 OnCreate
事件中:
procedure TFormMain.FormCreate(Sender: TObject);
begin
formOptions := TFormOptions.Create(Application); // or even Self
end;
将您的共享设置移至 TDataModule
(或什至是独立的 class),然后(自动)在创建任一表单之前创建该对象。 FormMain
和 formOptions
然后可以在需要时从该对象检索它们的设置:
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TSettingsDM, SettingsDM);
Application.CreateForm(TFormMain, FormMain);
Application.CreateForm(TFormOptions, formOptions);
Application.Run;
在 Delphi 10.1 Berlin IDE 中,使用 VCL Form 应用程序项目,在“项目选项”对话框中,我有以下设置:
现在我希望在 FormMain
表单之前创建 formOptions
表单,同时将 FormMain
表单作为主表单。原因是:主窗体可以在其 FormCreate
过程中加载数据(其中 formOptions
仍未创建),但要处理这些数据,它需要来自 formOptions
窗体的设置。
但是当我将 formOptions
项目拖到列表顶部时,上面的主窗体组合框也会更改为 formOptions
!
那么如何使 formOptions
表单在 FormMain
表单之前创建,同时保持 FormMain
表单作为主表单?
用 Application.CreateForm()
创建的第一个 TForm
成为 VCL 的 Application.MainForm
,并且无法更改。因此,在 CreateForm()
分配 MainForm
.
你有两个选择:
从自动创建列表中删除
formOptions
(从而删除为它生成的CreateForm()
调用),然后自己在代码中手动创建它。CreateForm()
在完全创建之前不会分配MainForm
,因此您实际上可以通过两种不同的方式之一来处理它:一个。直接在项目的
.dpr
文件中:Application.Initialize; Application.MainFormOnTaskbar := True; formOptions := TFormOptions.Create(Application); Application.CreateForm(TFormMain, FormMain); Application.Run;
b。在 MainForm 的
OnCreate
事件中:procedure TFormMain.FormCreate(Sender: TObject); begin formOptions := TFormOptions.Create(Application); // or even Self end;
将您的共享设置移至
TDataModule
(或什至是独立的 class),然后(自动)在创建任一表单之前创建该对象。FormMain
和formOptions
然后可以在需要时从该对象检索它们的设置:Application.Initialize; Application.MainFormOnTaskbar := True; Application.CreateForm(TSettingsDM, SettingsDM); Application.CreateForm(TFormMain, FormMain); Application.CreateForm(TFormOptions, formOptions); Application.Run;