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

时间:2017-12-26 17:30:00

标签: forms delphi

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

1 个答案:

答案 0 :(得分:3)

  

创建新表单时,Delphi要求“应用程序”,“自我”,“不要”等。作为定义所有者的论据。

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

  

我不清楚是否应用程序'或者' self'将妥善处理' form.free'如果在dll中创建表单,则执行操作。如果是,那么表格是否被释放?

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

  • 应用程序:卸载DLL时。在DLL中,有一个Application对象,但它的生命周期与DLL的生命周期相关,而不是可执行文件,如VCL可执行模块中的情况。
  • 自我:只要Self被销毁,只有您知道,因为只有您知道Self是什么。