为什么表单的默认操作是caHide?

问题描述 投票:-1回答:1

为什么用户单击表单的关闭按钮时,默认操作是caHide而不是caFree?从编程的角度看似乎很直观。此行为背后有隐藏的原因吗?

delphi
1个回答
2
投票

正如Sertac所说,这是因为Delphi IDE希望在应用程序的开头创建表格,并在应用程序处于活动状态时将其保存在表格中。即,当您创建新表单时,将在表单的单位中创建该表单的全局变量。使用Application.CreateForm(...)在项目的主块中以新格式初始化此变量。没有对free的显式调用,这些形式在TApplication.Destroy的应用程序末尾被销毁。使用caHide的默认操作,此方法就可以正常工作-您在开始时获得了一个有效的表单实例,并且该实例在应用程序结束之前一直有效。如果默认操作为caFree,则在第一次关闭表单时,全局变量的内容将无效(因为无法知道应将哪个位置设置为nil),并且您将获得一个指针,该指针看起来像有效,但使用时会引起各种问题(如果幸运的话,会发生EAccessViolation;如果不幸运,则会“随机”覆盖内存)。

© www.soinside.com 2019 - 2024. All rights reserved.