应用程序中的最大表单数

Jes*_*ica 0 forms delphi

Delphi应用程序中的表单数量是否有任何限制?我开发了一个包含40个或更多表单的应用程序(使用Delphi XE4),我很关心它的性能!

按需创建Forms而不是在应用程序启动时创建所有这些是一个好主意吗?

NGL*_*GLN 7

不,除了可用的系统内存之外,对表单的数量没有限制.表单(和子组件)保存在TList后代中.从理论上讲,TList是它的边界,但是你可以在很久之前达到系统内存,窗口句柄或GDI限制的极限.

是的,最好按需创建表单.在应用程序启动时创建所有表单会不必要地减慢启动速度并消耗不必要的内存,因为很可能很多表单永远不会在应用程序的会话中使用.因此,您应始终在环境的" 表单设计器选项"中禁用自动表单创建.相关问题涉及IDE默认情况下添加到表单单元的全局表单变量:立即删除它们.相反,为创建的表单使用您自己的引用保持机制.

在未禁用该选项的现有项目中,您应从项目的" 表单选项"中的自动创建表单列表框中删除除主表单之外的所有表单.与此同义的是Application.CreateForm(...)从项目文件中删除所有行.

当然,这个按需创建表单的指南可能有例外.有些表格可能经常使用(创建起来可能非常昂贵),以便在启动时证明它们的创建并使它们保持活力.用户更习惯于有点长时间的应用程序启动,然后在已经处于活动状态时进行长时间的操作.在这种情况下,保持全局Form变量可以表达其永无止境的存在.

  • 很可能的窗口处理和GDI限制将是限制因素. (2认同)