加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 如何避免两次调用Application.CreateForm?

发布时间:2020-12-15 09:30:54 所属栏目:大数据 来源:网络整理
导读:我偶然发现了这个页面 Why shouldn’t I call Application.CreateForm. 现在我有一些像这样的代码: SplashForm := TSplashForm.Create(Application);SplashForm.Show;SplashForm.Update; // force updateApplication.Initialize;Application.CreateForm(TCl
我偶然发现了这个页面 Why shouldn’t I call Application.CreateForm.
现在我有一些像这样的代码:

SplashForm := TSplashForm.Create(Application);
SplashForm.Show;
SplashForm.Update; // force update
Application.Initialize;
Application.CreateForm(TClientData,ClientData);
SplashForm.Update; // force update
Application.CreateForm(TClientMainForm,ClientMainForm);
Application.ShowHint := True;

Application.Run;
ClientMainForm.ServerConnected := false;
FreeAndNil(ClientMainForm);
FreeAndNil(ClientData);

首先创建一个splashform,然后创建一个datamodule并持续主窗体.页面说不应该调用Application.CreateForm两次.上面的代码应该改变吗?

解决方法

多次使用Application.CreateForm没有任何问题.但是这会为每种形式引入全局变量,这些变量可能是代码气味.
不幸的是,IDE为每个表单创建一个.虽然你可以删除它们,如果你愿意.

更好的方法是在需要时创建表单,并在准备好表单时将其释放.因此,您只能将Application.CreateForm用于主窗体.

主数据模块可以由主表单创建.但它也可以是全球性的,只是品味问题.

因此,要回答这个问题,可以通过在本地创建和发布表单来避免Application.CreateForm.

文章提到了Application.CreateForm的副作用(第一个完成的表单是主窗体).
因此,如果主窗体使用Application.CreateForm创建其他窗体,则可能会出现意外的副作用.

所以为了避免任何讨厌,你应该将yoursef限制为一次通话.这只使用一个全局表单完成.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读