1

现实生活中的例子:我的应用程序有一个 MainForm。用户可以单击按钮并登录以查看模态 AdminSettingsForm。从 AdminSettingsForm,他可以打开更多的模态表单等等。

当用户登录以显示 AdminSettingsForm 时,将启动一个计时器,该计时器应在一段时间不活动(空闲)后关闭 AdminSettingsForm。

我试过这个:

 for i := Screen.FormCount - 1 downto 1 do begin
   if Screen.Forms[i] <> MainForm then begin
     Screen.Forms[i].Close();
   end;
 end;

在我关闭最顶层的模态表单之前,什么都不会发生,然后其他所有内容都会立即关闭。

4

2 回答 2

1

尝试这个

with Screen do
     for I := FormCount - 1 downto 0 do
       if Forms[I] <> Application.MainForm then
           Forms[I].Close;
于 2014-07-21T12:46:57.273 回答
0

对不起,但我想我已经找到了解决方案:

 Screen.ActiveForm.Close();

 for i := Screen.FormCount - 1 downto 1 do begin
   if Screen.Forms[i] <> MainForm then begin
     Screen.Forms[i].Close();
   end;
 end;

似乎工作...

于 2013-06-04T13:58:25.283 回答