如何在父窗体中规范的显示子窗体?

linlingwei 2019-01-26 07:42:33
procedure show_form(var new_form:TForm;new_Class:TFormClass);
begin

if assigned(new_form) then
begin
new_form.BringToFront;
end else
begin
new_form := new_Class.Create(Application.MainForm);
new_form.FormStyle :=fsMDIChild;
new_form.Visible :=True ;
new_form.WindowState :=wsMaximized;
new_form.Show;
end;

end;
程序中除了父窗体的formstyle是fsMDIForm外,其他窗体的formstyle默认都是fsNormal。
在父窗体中用上面通用过程调用时显示正常,但是在关闭程序时,如果不关闭子窗体,直接关闭父窗体,
会经常弹出下面错误。(如逐一关闭子窗体,最后关闭父窗体就不会报错)
project hmmt.exe raised exception class einvalidopenation whit message
' cannot create form. no mdi forms are currently active'。
有什么解决办法?
...全文
390 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
BlueStorm 2019-01-28
  • 打赏
  • 举报
回复
new_form := new_Class.Create(Application.MainForm); 改为 new_form := new_Class.Create(Application); 试一下......
linlingwei 2019-01-27
  • 打赏
  • 举报
回复
@ lyhoo163: 大侠,能否详细一些?上面过程该如何改进?
lyhoo163 2019-01-27
  • 打赏
  • 举报
回复
依据我的经验:
1、创建窗口时,设置为隐藏;
2、在显示子窗体之前,就得规范好窗体的大小,以及各控件的位置。读入相关的数据和参数。
3、等待上述完成,再显示出子窗口。

  • 打赏
  • 举报
回复
写父窗体的OnClose事件处理,先逐一关闭子窗体
明空皓月 2019-01-26
  • 打赏
  • 举报
回复
创建子窗体时,改用Application.CreateForm试一试。

5,388

社区成员

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

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