创建(AOOwner)

动态创建从TControl继承的Delphi对象时,例如TForm(表示Delphi应用程序中的窗体/窗口),构造函数“create”需要一个“Owner”参数:...

动态创建从TControl继承的Delphi对象时,例如TForm(表示Delphi应用程序中的窗体/窗口),构造函数“create”需要一个“Owner”参数:

constructor Create(AOwner: TComponent) ;

AOOwner参数是TForm对象的所有者。表单的所有者负责在需要时释放表单,即表单分配的内存。表单将显示在其所有者的组件数组中,当其所有者被销毁时,表单将自动销毁。

AOwner参数有三种选择:Nil、self和application。

要理解答案,您首先需要了解“零”、“自我”和“应用”的含义

  • Nil指定没有对象拥有表单,因此开发人员负责释放创建的表单(当您不再需要表单时,通过调用myForm.Free)
  • Self指定调用方法的对象。例如,如果您正在从按钮的OnClick处理程序(该按钮位于MainForm上)中创建一个新的TMyForm表单实例,self将引用“MainForm”。因此,当释放MainForm时,它也将释放MyForm。
  • 应用程序指定在运行应用程序时创建的全局应用程序类型变量。“应用程序”封装了您的应用程序,并提供了程序后台的许多功能。

示例:

  1. 情态形式。当您创建一个表单,以便在用户关闭表单时以模式显示并释放时,使用“nil”作为所有者:var myForm:TMyForm;begin myForm:=TMyForm.Create(nil);试试myForm.showmodel;最后是我的形式。自由;终止终止
  2. 非模态形式。使用“应用程序”作为所有者:varmyForm:TMyForm;。。。myForm:=TMyForm.Create(应用程序);

现在,当您终止(退出)应用程序时,“application”对象将释放“myForm”实例。

为什么不推荐TMyForm.Create(应用程序)以及何时不推荐?如果表单是模态表单并且将被销毁,则应为所有者传递“nil”。

您可以通过“应用程序”,但将通知方法发送到应用程序拥有或间接拥有的每个组件和表单所造成的时间延迟可能会造成中断。如果您的应用程序由许多具有许多组件的表单组成(以千计),并且您正在创建的表单有许多控件(以百计),那么通知延迟可能会非常大。

将“nil”作为所有者而不是“application”传递将导致表单更快地出现,并且不会影响代码。

但是,如果您需要创建的表单不是模态的,并且不是从应用程序的主表单创建的,那么当您指定“self”作为所有者时,关闭所有者将释放创建的表单。当您不希望表单比其创建者长寿时,请使用“self”。

警告:要动态实例化Delphi组件并在稍后明确释放它,请始终将“nil”作为所有者传递。不这样做可能会带来不必要的风险,以及性能和代码维护问题。

在SDI应用程序中,当用户关闭表单(通过单击[x]按钮)时,表单仍然存在于内存中——它只会被隐藏。在MDI应用程序中,关闭MDI子窗体只会使其最小化。OnClose事件提供了一个操作参数(属于TCloseAction类型),可用于指定用户尝试关闭窗体时发生的情况。将此参数设置为“caFree”将释放表单。

Delphi提示导航器:»从TWebBrowser组件获取完整的HTML«如何将像素转换为毫米

  • 发表于 2021-10-17 03:53
  • 阅读 ( 162 )
  • 分类:数学

你可能感兴趣的文章

创建现有windows硬盘驱动器的虚拟机克隆

... 本文将介绍如何创建系统的VM克隆,以及在成功创建虚拟机后如何使用它。 ...

  • 发布于 2021-03-14 13:29
  • 阅读 ( 230 )

如何创建一个托管免费网站与itty比特

...了。每天,互联网上的程序员都在利用他们的技能为公众创建小型项目。ittybitty,一个由谷歌前设计师、Dropbox Nocholas Jitkoff现任副总裁创建的网站,就是这样一个小项目。 ...

  • 发布于 2021-03-24 06:30
  • 阅读 ( 223 )

如何在git中创建新分支

...。本文将介绍什么是分支,以及如何使用多种不同的工具创建分支。 ...

  • 发布于 2021-03-29 17:44
  • 阅读 ( 218 )

如何在windows10上创建桌面快捷方式

Windows10仍然允许您创建应用程序、文件、文件夹甚至网站的桌面快捷方式。桌面图标可能有点过时,但作为一个组织良好的桌面的一部分,它们仍然很有用。 如何创建应用程序的快捷方式 要以简单的方式执行此操作,请打开W...

  • 发布于 2021-04-03 06:30
  • 阅读 ( 152 )

如何创建、设置和管理discord服务器

...面中隐藏了一些选项。幸运的是,这很容易开始。 如何创建discord服务器? 创建Discord服务器非常简单。首先,您需要下载Discord(Windows、macOS、Linux、iOS或Android)或打开Discord web界面。无论哪种方式,你都需要创建一个免费的用...

  • 发布于 2021-04-05 00:21
  • 阅读 ( 268 )

如何在excel中创建自定义模板

很有可能你一次又一次地创建相同类型的Excel电子表格。创建自定义模板有助于使该过程更加顺畅。 当面对创建类似的电子表格时,许多人会弹出一个现有的表格,删除他们不需要的数据,然后将其另存为一个文件。更糟糕的...

  • 发布于 2021-04-06 16:11
  • 阅读 ( 252 )

linux下如何使用命令行快速创建文本文件

...以完成很多事情,只要使用Linux命令行。例如,如果需要创建文本文件,有一些易于使用的方法。 使用cat命令创建文本文件 我们创建文本文件的第一种方法使用cat命令。如果您想立即向新文件中添加一些文本,那么它非常有用...

  • 发布于 2021-04-06 17:23
  • 阅读 ( 168 )

在windows上创建符号链接的完整指南

...。您可以使用命令提示符或第三方工具linkshell Extension来创建它们。 什么是符号链接(symbolic links)? 符号链接基本上是高级快捷方式。创建指向单个文件或文件夹的符号链接,该链接将显示为与指向Windows的文件或文件夹相同,...

  • 发布于 2021-04-08 12:16
  • 阅读 ( 144 )

如何在linux上创建和使用符号链接(又称symlinks)

Linux允许您创建指向计算机上另一个文件或文件夹的符号链接。最好的方法是使用ln terminal命令,尽管有些图形文件管理器也可以创建符号链接。 什么是符号链接(symbolic links)? 符号链接基本上是高级快捷方式。您创建的符号...

  • 发布于 2021-04-08 12:26
  • 阅读 ( 155 )

如何使windows在启动时自动创建系统还原点

默认情况下,系统还原每周自动创建一次还原点,也可以在安装应用程序或驱动程序等重大事件之前创建。如果您想获得更多保护,可以在每次启动电脑时强制Windows自动创建还原点。 相关:如何在Windows7、8和10中使用系统还原 ...

  • 发布于 2021-04-08 21:10
  • 阅读 ( 209 )
KjSj6457
KjSj6457

0 篇文章

相关推荐