MDI如此关闭有错误吗?

childbaby 2003-09-15 11:25:23
在MDI的子窗体中有一个“返回”按钮,是执行关闭功能。我在点击事件中写了:close;
在窗体的onclose事件中,有:

procedure TFrm_KCGL_YLGL_PWGG.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action := caFree;
Frm_KCGL_YLGL_PWGG:=nil;
end;

如果不使用按钮关闭就不会报错 。但使用按钮关闭以后,可以关闭。但在从主窗体中点击进入时,系统会报一个地址错误。请教各位高手。
...全文
21 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
childbaby 2003-09-24
  • 打赏
  • 举报
回复
谢谢各位大侠,这段代码是没问题,问题就出在我的皮肤控件上,我设置过WINDOWSTATE为wsMaximized,在关闭释放的时候,需要把它改回为wsnormal;控件的问题。谢谢各位,结帖。
FrameSniper 2003-09-15
  • 打赏
  • 举报
回复
楼主的关闭肯定是没有错误的,如果你这里出错,应该是以下问题:

1.你的子窗体是否是动态创建的,如果是动态创建就不应该有这种错误,否则在窗体显示前就应该有一个AV错误;

2.如果不是动态创建的,那肯定是要出错了!
Maple119 2003-09-15
  • 打赏
  • 举报
回复
procedure TFrm_KCGL_YLGL_PWGG.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action := caFree;
Frm_KCGL_YLGL_PWGG:=nil;
end;
//上面的做法是对的.我也是这样处理的.

//创建代码
IF Frm_KCGL_YLGL_PWGG= Nil Then Application.CreateForm(Frm_KCGL_YLGL_PWGG, TFrm_KCGL_YLGL_PWGG)
Frm_KCGL_YLGL_PWGG.Show
childbaby 2003-09-15
  • 打赏
  • 举报
回复
我是动态创建的
if IsExistsFormName('Frm_KCGL_YLGL_PWGG') = False then
begin
Frm_KCGL_YLGL_PWGG := TFrm_KCGL_YLGL_PWGG.Create(Application);
Frm_KCGL_YLGL_PWGG.Show;
end;
我不知道是不是我用了皮肤控件的问题。
myshushu005 2003-09-15
  • 打赏
  • 举报
回复
将 Frm_KCGL_YLGL_PWGG:=nil; 写在 ondestroy 事件中就可以。
yu98041154 2003-09-15
  • 打赏
  • 举报
回复
据我估计,应该是你的窗体的创建的问题,而不是关闭的问题
你可能将窗体设置成自动创建的得了
建议在工程中将窗体设置成动态创建
然后再主窗体点击进入时
写如下代码:
Frm_KCGL_YLGL_PWGG:=TFrm_KCGL_YLGL_PWGG.create(application);
Frm_KCGL_YLGL_PWGG.show;

试一下,应该就可以了。
lldwolf 2003-09-15
  • 打赏
  • 举报
回复
同意楼上,关闭代码是正确的,因为我也一直是这样用的。可在显示此窗体前加入

if not Assigned(Frm_KCGL_YLGL_PWGG) then
begin
Application.CreateForm(TFrm_KCGL_YLGL_PWGG, Frm_KCGL_YLGL_PWGG);
end;

祝你好运

5,379

社区成员

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

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