0

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 を復元すると、両方のフォームがまったくフォーカスされません。

4

1 に答える 1