• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複数モニタ使用時のフォームの表示位置してい)

複数モニタを使用したフォームの表示位置保存と再表示について

このQ&Aのポイント
  • 複数のモニタを接続したディスプレイで、フォームを表示させたい場合、フォームを閉じた際の位置を保存しておき、再度フォームを開くときには保存された位置に表示する方法について説明します。
  • フォームのトップとレフトの位置を保存することができれば、二つ目のディスプレイにフォームが表示されていた場合でも、一つ目のディスプレイに再度開いたときに表示されないようにすることができます。
  • ただし、GetSystemMetrics()関数を使用して仮想ディスプレイの全サイズを取得しても、ディスプレイごとのウィンドウサイズの違いがある場合、座標の調整が困難になる可能性があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • KoHal
  • ベストアンサー率60% (110/181)
回答No.1

TForm::Top, Leftなどはモニターに表示されている領域内での位置です。 フォームが現在表示されているモニターに関するの情報はTForm::Monitorで取得できます。 TMonitor::Top, Leftなどで仮想デスクトップ内でのモニターの位置が取得できますから、それとTForm::Top, Leftなどを組み合わせればフォームの仮想デスクトップ内での絶対位置がわかります。 また、フォームを表示するときにも、TForm::Monitorで表示されるモニターを指定することが可能です。 マルチモニター環境下のモニター全体の情報はTScreen*型のグローバル変数であるScreenを介してTScreen::Monitorsを参照すれば得られます。 前回アプリケーション起動時とモニター構成が変っているときは、TScreen::MonitorFromRect(), MonitorFromPoint()あたりを使えば何とかなりそうです。 あとはヘルプとにらめっこしてがんばってください。 うちにはマルチモニター環境がないので私自身は試したことがありません(苦笑。

Caya
質問者

お礼

回答ありがとうございました。 おかげでマルチモニターでも希望する位置に表示する子おtができました。

すると、全ての回答が全文表示されます。

関連するQ&A