如何关闭特定的MDI子窗口(100分)

  • 主题发起人 主题发起人 sungolf
  • 开始时间 开始时间
S

sungolf

Unregistered / Unconfirmed
GUEST, unregistred user!
新建MDI应用程序,点击File|New打开许多子窗口,标题默认为NONAME*,
现在我想关闭标题为NONAME3的子窗口,程序如下:
h:=FindWindow('TMDIChild','NONAME3');
if h<>0 then
DestoryWindow(h);

但是,FindWindow总是返回0,请问该如何找到NONAME3这个子窗口呢?
现在连DestoryWindow都调不成了。
还有,如果h<>0,把子窗口显示到最前面该如何做?
关闭与最前显示子窗口有没有其他好的方法?谢谢!
 
你在子窗体的onclose的事件里面指定
action := cafree; //就搞定啦!
 
谢谢您。
这我知道,但我想关闭特定的子窗口,由菜单控制。请看清楚题目。
 
不知道sorry
 
for i:=fmdi.MDIChildCount downto 0 do
if fmdi.MDIChildren.Caption='NONAME3' then
fmdi.MDIChildren.close;
 
你用的API函数不对,应该用查找子窗体的,如下代码:
if FindWindowEx(0,0,nil,'NONAME3')<>0 then
begin
//Do SomeThing;
end;
 
也可以用:
SendMessage(NONAME3.Handle,WM_Close,0,0);
^^^^^^^^^^^^^^ 子窗口句柄
 
你可以Form的属性找到当前那个子窗体的处于激活状态,然后MDIChildren.Close,即可
 
多人接受答案了。
 
后退
顶部