【发布时间】:2014-01-10 16:34:34
【问题描述】:
我的应用程序中有一个 test.bpl 包,它有一个名为 myPackageForm 的表单。 当我想关闭 myPackageForm 时加载我的包后,应用程序将终止。
主项目初始化:
Application.Initialize;
Application.CreateForm(TMainForm,MainForm);
Application.Run;
MainForm 表单创建:
aPackage := LoadPackage('my bpl path'+test.bpl);
@P_ItemClick := GetProcAddress(aPackage,'ItemClickExcecute');
主窗体按钮点击:
P_ItemClick(Sender);
testPackage 命令单元:
Procedure ItemClickExecute(Sender : TObject)
begin
TmyPackageForm.ShowForm();
end;
exports
ItemClickExecute;
end.
myPackagForm 有一个类过程来显示它:
Class Procedure TmyPackagForm.ShowForm;
begin
if not Assigned(myPackagForm)
myPackagForm := Application.CreateForm(TmyPackagForm ,myPackagForm );
myPackagForm.Show;
end;
并且在 OnClose 程序中有:
Release;
作为解决方案,我尝试了另一个命令:
myPackagForm := TmyPackagForm.Create(Application);
到 myPackagForm 创建;
谁能知道 Delphi XE4 在包上使用 CreateForm 命令时发生了什么?
【问题讨论】:
-
没有任何改变。用 CreateForm 制作的第一个表单是主表单。
-
@David Heffernan 你是对的。但是为什么在我的包中使用 Application.CreateForm 命令时在 Delphi7 中关闭包表单没有问题?
-
我有理由确定我知道发生了什么。我会写一个答案。
标签: delphi package delphi-xe4 terminate bpl