简单问题:请问如何一下子关闭所有的MDI窗口?(50分)

  • 主题发起人 主题发起人 小天
  • 开始时间 开始时间
var

I: Integer;
begin
with Form1 do
for I := MDIChildCount-1 downto 0 do
MDIChildren.Close;

end;
///from Delphi5 help
 
我也写一个:
var

I: Integer;
begin
with Form1 do
for I := 0 to MDIChildCount-1 do
MDIChildren[0].Close;

end;
 
很ease,看:

var
liMDICount:Integer;
begin
if self.MDIChildCount>0 then
for liMDICount:=0 to self.MDIChildCount-1 do
self.MDIChildren[liMDICount].Close;
end;
 
补充一下:
若是用CLOSE没问题,但若是用FREE,则应为:
for i:=self.MDIChildCount-1 downto 0 do
.....
因为用FREE会使MDIChildCount动态减少。
 
我也有一个,很好啊!
procedure tfrmmain.CloseAllWindows;
var
I: Integer;
F: TForm;
begin
for I := 0 to Application.ComponentCount - 1 do
begin
if Application.Components is TForm then
begin
F := TForm(Application.Components);
if (F <> Self) and (F.Visible) then F.Close;
end;
end;
end;
 
用TScreen(其全局变量为Screen),中间有很多属性可以得用,查查看吧?
 
我觉得不对呀,for i := 0 to XX.count -1 do
xx.close/

后面的会自动补上的,就会出错呀。
 
所以应该是XX。COUNT-1 DOWNTO 0 嘛
 
多人接受答案了。
 
后退
顶部