我有一个带有TTrayIcon
组件的应用程序,我用它来“隐藏”和“恢复”我的 MainForm。这是我用来“隐藏”的内容(OnTrayClick)
procedure TMainWindow.TrayIcon1Click(Sender: TObject);
var
I : Integer;
begin
if Application.MainForm.Visible then begin
{ Hide }
Application.MainForm.Visible := FALSE;
end else begin
{ Restore }
Application.MainForm.Visible := TRUE;
WindowState := wsNormal;
Application.BringToFront();
{ Workaround for ModalForms }
for I := 0 to Screen.FormCount-1 do begin
if (fsModal in Screen.Forms[I].FormState) then begin
Screen.Forms[I].BringToFront;
Screen.Forms[I].SetFocus;
break; // Stop looking for more ModalForms
end;
end;
end;
end;
如果没有打开其他(模态)表单,则此示例可以正常工作。但是如果有一个 ModalForm 打开并恢复我的 MainForm,ModalForm 似乎在 MainForm 后面,我无法访问它。恢复 MainForm 后,如何激活/聚焦 ModalForm 并将其放在 MainForm 前面?我Application.MainFormOnTaskbar
的设置为False
编辑:如果一个 ModalForm 打开并且我恢复了我的 MainForm,那么这两个表单都不会集中。