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