首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在主窗体之前创建的DataModule

在主窗体之前创建的DataModule
EN

Stack Overflow用户
提问于 2010-01-14 23:34:14
回答 5查看 4.3K关注 0票数 6

一些数据库应用程序开发人员更喜欢在主窗体之前创建数据模块,方法是编辑项目源文件,如下所示

代码语言:javascript
复制
begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TDM, DM);
  Application.CreateForm(TMainForm, MainForm);
{...}
  Application.Run;
end.

问题是--为什么?什么是正反两面?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-01-14 23:44:01

显而易见的原因是,如果主窗体需要数据模块来进行设置。例如,如果其中有主窗体在其OnCreate中引用的内容,那么当然必须首先准备好数据模块。

否则,这并不重要。

票数 17
EN

Stack Overflow用户

发布于 2010-01-15 00:08:38

我同意梅森的回答,因为它解释了为什么人们会这样做。然而,我认为这是一种糟糕的方法,因为它隐藏了由IDE维护的代码中的依赖项。在我看来,数据模块应该从自动创建列表中删除,并且应该在主窗体的OnCreate方法中创建。

票数 6
EN

Stack Overflow用户

发布于 2010-01-15 01:10:02

在这个问题上,确实有两个阵营,而且都是正确的。

第一个让应用程序管理每个表单/数据模块的生命周期。在这种情况下,如果主窗体使用数据模块,则必须先创建它,然后才能使用它。这对于小型应用程序很有效,但是当您使用具有多个forms...however的大型应用程序时,加载开销一旦应用程序加载,然后显示表单几乎是即时的,因为它已经在内存中创建。因为已经创建了每个表单/资源,所以在运行应用程序时也会有很大的内存占用率。当您向应用程序添加新的表单/数据模块时,Delphi也会“引导”您使用此方法。如果您不在mainform的OnCreate中使用数据模块,那么它在创建顺序中可能会更低,因为它只有在Application.Run启动之后才会被调用。

第二阵营希望处理每个表单/数据模块本身的创建和销毁(通常用于除MainForm之外的所有表单)。这种方法的优点是应用程序加载速度更快,并且在启动时立即消耗更少的内存。通常,在此场景中,是主表单(或其他表单)完全管理它们使用的每个表单/数据模块的生命周期。此方法最适合具有多个表单的大型应用程序。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2065235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档