微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

表单 – 在主表单之前创建辅助表单,同时将FormMain保留为主表单?

在Delphi 10.1 Berlin IDE中,使用VCL Form应用程序项目,在Project Options对话框中,我有以下设置:

enter image description here

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

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

那么如何在FormMain表单之前创建formOptions表单,同时将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;

湾在MainForm的OnCreate事件中:

procedure TFormMain.FormCreate(Sender: TObject);
begin
  formOptions := TFormOptions.Create(Application); // or even Self
end;

>将您的共享设置移动到TDataModule(甚至是独立的类),然后在创建任一Forms之前(自动)创建该对象.然后,FormMain和formOptions可以在需要时从该对象检索其设置:

Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TSettingsDM,SettingsDM);
Application.CreateForm(TFormMain,FormMain);
Application.CreateForm(TFormOptions,formOptions);
Application.Run;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐