修改 Application 后,BPL 里每个组件都得手动 parent := nil,怎办?

EDDGA 2019-07-22 04:07:59
环境是 Delphi 7 + XP,问题的一些相关的情况如下:
1、需要在程序启动之前做一些前置操作,我修改了Application(Controls.pas),于是工程不能 build with vcl。
2、新建了BPL,包含有一些自定义的TNewFrame,继承自TFrame,通过类似如下的 function 加入到程序界面

function build(c : TWinControl) : TNewFrame;
//……
begin
f := TNewFrame.Create(c);
f.Parent := c; // ->这一句导致 AV
result := f;
end;

export build;


问题是:程序关闭会AV。测试过有2种做法不会AV
1、程序在关闭前 f.Parent := nil,不会 AV;这样的话每个自定义的组件都得 parent := nil,
2、build with vcl,不会AV。可是这样就不能修改 Application 了

请问有什么方法,既可能修改 Application,又不用 parent := nil

PS: 我的 Delphi 7 的 vcl 只有 dcp,没有 dpk,没法 build。
...全文
63 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

5,928

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧