如何最小化所有子窗体(100分)

  • 主题发起人 主题发起人 HWJYT1
  • 开始时间 开始时间
H

HWJYT1

Unregistered / Unconfirmed
GUEST, unregistred user!
如下代码能够最小化所有子窗体,但是把(*NOTE*)字句改为反序则有一个子窗体不能最小化,为什么,谢谢!
procedure TForm1.N6Click(Sender: TObject);
VAR I:INTEGER;
begin
StatusBar1.Panels[0].Text:=inttostr(MDIChildCount);
FOR I:=MDIChildCount-1 downto 0 DO(*NOTE*)
begin
MDIChildren.WindowState:=wsMinimized;//所有子窗体最小化

end;
end;
 
生成的顺序问题。
 
Use MDIChildCount to get the number of open MDI child forms.

MDIChildCount is meaningful only if the form is an MDI parent (that is, if the form抯 FormStyle property is set to fsMDIForm).
 
应该不管生成顺序的事,
很奇怪。
 
MDI就是这样有趣,很多与标准FORM的不同之处,所以才单列一类,DELPHI的源码也
只是给出提示:
{ Must be done backwards through the MDIChildren array }
没有什么具体说明。

其实,MDICHildren数组不是静态的,当一个子FORM在最前面时,在数组中它也是最
顶端,当他不是最前面时,就会被调整到中间,这样如果不按顺序从前端依次删除
FORM,会影响mdichildren数组的顺序。
在Delphi中downto总是比to更完美一些,比如在count数值变化,也要用downto来处
理,多用几次就会熟悉了。
 
但他不是删除,只是最小化,
 
主窗体最小化
 
当然不是删除,但还是引起ZORDER数组变化。
 
呵呵,反应过来了,当时没反应过来。
 
我追加一问:我在任务栏点“最小化所有窗口”时,为何OICQ窗口纹丝不动?
 
与激活顺序有关。
 
oicq屏壁了最小化消息.
 
多人接受答案了。
 

Similar threads

后退
顶部