在dll应用程序中创建Tform.create(所有者)

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

创建新表单时,Delphi要求“Application”,“self”或“nil”作为定义所有者的参数。但是当表单在dll而不是独立(vcl)应用程序中时会发生什么?显然'nil'由dll中编写的代码处理。但是,如果在dll中创建表单,我不清楚'Application'或'self'是否能正确处理'form.free'操作。如果是,那么表格是否被释放?

forms delphi
1个回答
3
投票

创建新表单时,Delphi要求“Application”,“self”或“nil”作为定义所有者的参数。

这是不正确的。任何组件都可以作为所有者提供,并且拥有的组件在其所有者被销毁时将被销毁。

如果在dll中创建表单,我不清楚'Application'或'self'是否能正确处理'form.free'操作。如果是,那么表格是否被释放?

在这两种情况下,当所有者被销毁时,表单将被销毁。所以问题变得非常简单,主人何时被摧毁。答案是:

  • 应用程序:卸载DLL时。在DLL中,有一个Application对象,但它的生命周期与DLL的生命周期相关,而不是可执行文件,如VCL可执行模块中的情况。
  • 自我:每当Self被摧毁,只有你知道,因为只有你知道Self是什么。
© www.soinside.com 2019 - 2024. All rights reserved.