我要怎么办??? 很菜的子窗体问题

szkingrose 2001-01-05 01:58:00
我想在一个程序中用多文档窗体,但我发现错误了,程序如下 :
procedure TF_main.N12Click(Sender: TObject);
begin
if not assigned(form2) then //
begin
// form2是动态建产的窗体,没有设定错误
form2:=tform2.Create(self);
form2.show ;
end ;
end;
这段程序在第一次执行可以显示,但我在用
action=cafree
关闭子窗体后再也不能用上面的语句建立窗体了,我想知道程序
错误在什么地方,你能告诉我吗??谢谢!!
...全文
106 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hank 2001-01-05
  • 打赏
  • 举报
回复
ether的方法是正确的,我可以写一个不是很好的解决你问题的方法:
procedure TF_main.N12Click(Sender: TObject);
begin
if not assigned(form2) then //
begin
// form2是动态建产的窗体,没有设定错误
form2:=tform2.Create(self);
form2.show ;
end
else
form2.show; //如果有了直接显示!
end;
ether 2001-01-05
  • 打赏
  • 举报
回复
Sorry,错了。MDI子窗口是Free了,但form2并没有清空。
在form2的Close事件里,在action=cafree前还要form2:=nil才行。

btw: 你这样的写法,难道只想同时出现一个MDI子窗口吗?

ePing 2001-01-05
  • 打赏
  • 举报
回复
在子窗体的FormClose中加上 Form2 := nil;

三少 :o)
ether 2001-01-05
  • 打赏
  • 举报
回复
是因为MDI子窗口未Free。
想象当from2未Free会怎样?N12Click就等于什么也不用干了。 :)
墨梅无痕 2001-01-05
  • 打赏
  • 举报
回复
我想,可能错在form2:=TForm2.Create(self);这一句;
form2的owner不应该是TF_main吧,而应该是TApplication才对;
哎,我也挺菜的!

5,931

社区成员

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

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