现实生活中的例子:我的应用程序有一个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;
没有任何反应,直到我关闭最顶层的模式窗体,然后一切会马上闭合。
这是假设所有形式比其他' MainForm'将用于管理使用。如果您为非管理用户创建新表单会怎么样? –
你是对的。这个假设目前适用于我的申请。其实我还有非管理员用户的其他形式,但还有另一种假设,即从MainForm触发的任何形式都是模态的。所以目前我知道当AdminForm显示时,没有其他窗体可见。当这种假设不再成立的时候,我会为了更好的解决方案而伤透脑筋。 – Zalumon