2013-12-15 29 views
0

Delphi應用程序中的表格數量是否有限制? 我開發了一個包含40個或更多表單的應用程序(使用Delphi XE4),並且我很關心它的性能!應用程序中的最大表格數量

根據需求創建表單而不是在應用程序啓動時創建所有表單是一個好主意嗎?

+1

你要做的第一件事是刪除所有的全局表單變量。在需要時創建表單,並在需要引用時將其保存在局部變量中。這對模態形式很有用。對於非模態,它不太清楚。 –

回答

7

不,對可用系統內存以外的表單數量沒有限制。表單(和子組件)正在保存在TList後代中。從理論上講,TList有它的邊界,但是你很久以前就會達到系統內存,窗口句柄或GDI限制的限制。

是的,最好根據需要創建表單。在應用程序啓動時創建所有表單會不必要地降低啓動速度,並會消耗不必要的內存,因爲在應用程序的會話中絕大多數表單將永遠不會使用。因此,您應始終禁用Form Designer Options of the Environment中的自動錶單創建。一個相關的問題涉及默認情況下IDE添加到表單單元的全局表單變量:立即刪除它們。相反,使用自己的引用保存機制創建窗體。

在沒有禁用該選項的現有項目中,應從Form Options of the Project的自動創建表單列表中刪除除主表單之外的所有表單。與此同義的是從項目文件中刪除所有Application.CreateForm(...)行。

當然,本指南可能會有例外情況來創建按需表單。一些表單可能會經常使用(並且創建時可能會非常昂貴),以便在啓動時驗證其創建並保持其活躍狀態。用戶更習慣於長時間的應用程序啓動,然後在已經處於活動狀態時採取長時間的操作。在這種情況下,保持全局的Form變量可以有意義地表達它的永無止境的存在。

+0

我應該在TMain_Form.FormClose事件上釋放窗體嗎? : - ? – Jessica

+0

可能值得注意的是,按需創建表單的準則顯然會有例外。有些形式的創建和免費可能會非常昂貴,而且可能會經常使用,因此在啓動時創建它們並讓它們保持活躍狀態​​是有意義的。 –

+2

很可能的窗口句柄和GDI限制將成爲限制因素。 –

1

我有450個窗體和500個快速報告的項目。我按需創建窗體並在窗體close.application啓動時發佈它爲3秒。

相關問題