У меня есть приложение с 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, и я не могу до него добраться. Как я могу активировать / сфокусировать ModalForm и поместить его перед моей MainForm после того, как моя MainForm была восстановлена? Мой Application.MainFormOnTaskbar
установлен на False
РЕДАКТИРОВАТЬ: если ModalForm открыт, и я восстанавливаю свою MainForm, обе формы вообще не будут фокусироваться.
Restore
был неправильным термином. Я не скрываю никаких модальных форм. - person Benjamin Weiss   schedule 08.08.2013