TTrayIcon
メインフォームを「非表示」および「復元」するために使用するコンポーネントを含むアプリケーションがあります。これが私が「隠す」ために使用するものです(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 を復元すると、両方のフォームがまったくフォーカスされません。