首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

请问怎么开打一个窗口后,怎么关闭前一个窗口

2013-01-23 
请教如何开打一个窗口后,如何关闭前一个窗口窗口名为InvDealResultFrm 类型为fsMDIChild窗口名为infoFrm

请教如何开打一个窗口后,如何关闭前一个窗口
窗口名为InvDealResultFrm 类型为fsMDIChild
窗口名为infoFrm 类型为fsNormal

程序要求:
在InvDealResultFrm 中打开窗口infoFrm后,想关闭窗口InvDealResultFrm 。

我在InvDealResultFrm 窗口按钮中这么编写如下程序,但是实际效果为必须等infoFrm窗口关闭后InvDealResultFrm窗口才关闭。

=========================================
infoFrm := TinfoFrm.Create(application);
infoFrm.ShowModal;
infoFrm.Free;
infoFrm:=nil;

InvDealResultFrm.Close;
=========================================


[解决办法]



infoFrm := TinfoFrm.Create(application);
InvDealResultFrm.hide; //先隐藏
infoFrm.ShowModal;
infoFrm.Free;
infoFrm:=nil;

InvDealResultFrm.Close;//消耗

[解决办法]
窗体如果用ShowModal方式显示出来,则这行代码后面的代码是要等到窗体关闭后才执行的
所以要达到你的效果,可以在infoFrm的onshow事件中关闭InvDealResultFrm
也可以用楼上的办法
[解决办法]
也可以隐藏 
self.hide; //最好是 self.close

[解决办法]
infoFrm := TinfoFrm.Create(application);
infoFrm.ShowModal;
infoFrm.Free;
infoFrm:=nil;
你说关闭InvDealResultFrm ,为何要把infoFrm给关了?infoFrm:=nil就是关闭的意思
这样当然是infoFrm关了,InvDealResultFrm 才会关
infoFrm:= TinfoFrm.Create(application);
InvDealResultFrm.Close;
infoFrm.ShowModal;
infoFrm.Free;
infoFrm:=nil;

[解决办法]
在 infoFrm 的 onShow 事件中向 InvDealResultFrm 发送关闭消息或是 InvDealResultFrml.Free;

热点排行