动态创建从TControl继承的Delphi对象时,例如TForm(表示Delphi应用程序中的窗体/窗口),构造函数“create”需要一个“Owner”参数:
constructor Create(AOwner: TComponent) ;AOOwner参数是TForm对象的所有者。表单的所有者负责在需要时释放表单,即表单分配的内存。表单将显示在其所有者的组件数组中,当其所有者被销毁时,表单将自动销毁。
AOwner参数有三种选择:Nil、self和application。
要理解答案,您首先需要了解“零”、“自我”和“应用”的含义
示例:
现在,当您终止(退出)应用程序时,“application”对象将释放“myForm”实例。
为什么不推荐TMyForm.Create(应用程序)以及何时不推荐?如果表单是模态表单并且将被销毁,则应为所有者传递“nil”。
您可以通过“应用程序”,但将通知方法发送到应用程序拥有或间接拥有的每个组件和表单所造成的时间延迟可能会造成中断。如果您的应用程序由许多具有许多组件的表单组成(以千计),并且您正在创建的表单有许多控件(以百计),那么通知延迟可能会非常大。
将“nil”作为所有者而不是“application”传递将导致表单更快地出现,并且不会影响代码。
但是,如果您需要创建的表单不是模态的,并且不是从应用程序的主表单创建的,那么当您指定“self”作为所有者时,关闭所有者将释放创建的表单。当您不希望表单比其创建者长寿时,请使用“self”。
警告:要动态实例化Delphi组件并在稍后明确释放它,请始终将“nil”作为所有者传递。不这样做可能会带来不必要的风险,以及性能和代码维护问题。
在SDI应用程序中,当用户关闭表单(通过单击[x]按钮)时,表单仍然存在于内存中——它只会被隐藏。在MDI应用程序中,关闭MDI子窗体只会使其最小化。OnClose事件提供了一个操作参数(属于TCloseAction类型),可用于指定用户尝试关闭窗体时发生的情况。将此参数设置为“caFree”将释放表单。
Delphi提示导航器:»从TWebBrowser组件获取完整的HTML«如何将像素转换为毫米
...了。每天,互联网上的程序员都在利用他们的技能为公众创建小型项目。ittybitty,一个由谷歌前设计师、Dropbox Nocholas Jitkoff现任副总裁创建的网站,就是这样一个小项目。 ...
Windows10仍然允许您创建应用程序、文件、文件夹甚至网站的桌面快捷方式。桌面图标可能有点过时,但作为一个组织良好的桌面的一部分,它们仍然很有用。 如何创建应用程序的快捷方式 要以简单的方式执行此操作,请打开W...
...面中隐藏了一些选项。幸运的是,这很容易开始。 如何创建discord服务器? 创建Discord服务器非常简单。首先,您需要下载Discord(Windows、macOS、Linux、iOS或Android)或打开Discord web界面。无论哪种方式,你都需要创建一个免费的用...
很有可能你一次又一次地创建相同类型的Excel电子表格。创建自定义模板有助于使该过程更加顺畅。 当面对创建类似的电子表格时,许多人会弹出一个现有的表格,删除他们不需要的数据,然后将其另存为一个文件。更糟糕的...
...以完成很多事情,只要使用Linux命令行。例如,如果需要创建文本文件,有一些易于使用的方法。 使用cat命令创建文本文件 我们创建文本文件的第一种方法使用cat命令。如果您想立即向新文件中添加一些文本,那么它非常有用...
...。您可以使用命令提示符或第三方工具linkshell Extension来创建它们。 什么是符号链接(symbolic links)? 符号链接基本上是高级快捷方式。创建指向单个文件或文件夹的符号链接,该链接将显示为与指向Windows的文件或文件夹相同,...
Linux允许您创建指向计算机上另一个文件或文件夹的符号链接。最好的方法是使用ln terminal命令,尽管有些图形文件管理器也可以创建符号链接。 什么是符号链接(symbolic links)? 符号链接基本上是高级快捷方式。您创建的符号...
默认情况下,系统还原每周自动创建一次还原点,也可以在安装应用程序或驱动程序等重大事件之前创建。如果您想获得更多保护,可以在每次启动电脑时强制Windows自动创建还原点。 相关:如何在Windows7、8和10中使用系统还原 ...