在主窗体之前创建辅助表单,同时保持FormMain为主窗体?

时间:2016-06-21 18:22:50

标签: forms delphi delphi-10.1-berlin

在Delphi 10.1 Berlin IDE中,使用VCL表单应用程序项目,在“项目选项”对话框中,我有以下设置:

enter image description here

现在我希望在formOptions表单之前创建FormMain表单,同时将FormMain表单保留为主表单。原因是:主窗体可以在其FormCreate过程中加载数据(其中formOptions尚未创建),但要处理这些数据,需要formOptions窗体中的设置。

但是,只要我将formOptions项目拖到列表顶部,上面的主要表单组合框也会更改为formOptions

那么如何在保留formOptions表单作为主表单的同时,在FormMain表单之前创建FormMain表单?

1 个答案:

答案 0 :(得分:11)

使用source创建的第一个TForm成为VCL' Application.CreateForm(),无法更改。因此,在Application.MainForm分配CreateForm()之前,您需要执行任何初始化。

您有两种选择:

  1. 从自动创建列表中删除MainForm(从而删除为其生成的formOptions调用),然后在代码中自己手动创建它。 CreateForm()在完全创建之前不会分配CreateForm(),因此您可以通过以下两种方式之一实际处理此问题:

    一个。直接在项目的MainForm文件中:

    .dpr

    湾在MainForm的Application.Initialize; Application.MainFormOnTaskbar := True; formOptions := TFormOptions.Create(Application); Application.CreateForm(TFormMain, FormMain); Application.Run; 事件中:

    OnCreate
  2. 将您的共享设置转移到procedure TFormMain.FormCreate(Sender: TObject); begin formOptions := TFormOptions.Create(Application); // or even Self end; (甚至是独立的类),然后在创建任一表单之前(自动)创建该对象。然后,TDataModuleFormMain可以在需要时从该对象中检索其设置:

    formOptions