![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
複数のモニタを接続したディスプレイで、
フォームを表示させたいのですが、
フォームを閉じた際に、どの位置で表示されていたかを保存しておき、
それを元に、再度フォームを開くときには閉じられた位置に表示をさせたいと思います。
フォームのトップ、レフトを保存しておいた場合、2つめのディスプレイで
表示されていた場合も、一つ目のディスプレイに再度開いたときに表示されてしまいます。
閉じられたときには2台接続されていて、2台目に表示があったとしても、
次開かれるときに2台目がない場合表示されていないように見えたり、
GetSystemMetrics()関数を使用して仮想ディスプレイの全サイズを
取得しても、1台目と2台目のウィンドウサイズが違った場合、
座標をうまくずらすことができなかったりしています。
何とかなりませんでしょうか?
環境はC++Builder6です。
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
TForm::Top, Leftなどはモニターに表示されている領域内での位置です。
フォームが現在表示されているモニターに関するの情報はTForm::Monitorで取得できます。
TMonitor::Top, Leftなどで仮想デスクトップ内でのモニターの位置が取得できますから、それとTForm::Top, Leftなどを組み合わせればフォームの仮想デスクトップ内での絶対位置がわかります。
また、フォームを表示するときにも、TForm::Monitorで表示されるモニターを指定することが可能です。
マルチモニター環境下のモニター全体の情報はTScreen*型のグローバル変数であるScreenを介してTScreen::Monitorsを参照すれば得られます。
前回アプリケーション起動時とモニター構成が変っているときは、TScreen::MonitorFromRect(), MonitorFromPoint()あたりを使えば何とかなりそうです。
あとはヘルプとにらめっこしてがんばってください。
うちにはマルチモニター環境がないので私自身は試したことがありません(苦笑。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Access2016でフォーム内にExcelの複数シートを 表示させるイメージで複数テーブルの デー 1 2022/11/25 15:30
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- モニター・ディスプレイ windows10 モニタに表示されなくなった 2 2023/08/04 16:58
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Excel(エクセル) エクセル関数の変わった使い方 3 2022/05/13 17:12
- その他(データベース) Accessフォームにて指定のフィールドの平均値を小数点第一位で表示できない 2 2022/08/30 17:19
- JavaScript ラジオボタンによるフォームの開閉を行いたい 3 2022/03/31 21:30
- Excel(エクセル) エクセルの散布図で新たに入力した値のデータラベルが空欄になる現象 1 2022/04/26 09:31
- モニター・ディスプレイ 識別番号の決まり方 1 2022/06/14 20:44
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
2画面表示でのVBAのボタン押下後のform表示の位置
Excel(エクセル)
-
Access VBAにおいて画像を任意のディスプレイに表示させる方法
Access(アクセス)
-
デュアルディスプレイ 起動画面を指定するには?
モニター・ディスプレイ
-
-
4
エクセルVBAで画面の大きさを取得する方法!
Excel(エクセル)
-
5
ユーザーフォームをホイールでスクロールする方法(Excel2000VBA)
Excel(エクセル)
-
6
Accessの画面更新を一時的に停止する方法。
その他(データベース)
-
7
Excel VBAでデュアルディスプレイを使用するメリットについて
Excel(エクセル)
-
8
マルチディスプレイを使用していますがexcelマクロが使えない
Visual Basic(VBA)
-
9
C# マルチディスプレイにて、フォームの初期位置をCenterScre
その他(プログラミング・Web制作)
-
10
コンボボックス ▼ボタンをクリックしたらイベント
PowerPoint(パワーポイント)
-
11
エクセルVBAで、MsgBox やInputBox は、画面の中央以外に表示させたい。
Excel(エクセル)
-
12
UserForm
Visual Basic(VBA)
-
13
拡張ディスプレイの関連でエクセルの表示がおかしくなりました
モニター・ディスプレイ
-
14
GROUP BYを行った後に結合したい。
Oracle
-
15
【VBAユーザーフォームで閉じるボタンを表示したくない】
Visual Basic(VBA)
-
16
msgboxの表示位置
Visual Basic(VBA)
-
17
メッセージボックスを前面に表示させるには?
Visual Basic(VBA)
-
18
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
19
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
20
DoEventsがやはり分からない
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
EXCEL VBA ユーザーフォームの...
-
ユーザーフォームのテキストボ...
-
Accessで、一つのフォーム画面...
-
ExcelVBAのユーザーフォームの...
-
vb2008にてDefaultCellStyleが...
-
VBでのモジュールの使い方
-
ExcelVBAのユーザーフォームでe...
-
VBAでユーザーフォームを再表示...
-
ブックをCloseまたはQuitで閉じ...
-
【Excel VBA】ユーザフォームを...
-
VBA ユーザーフォームを速く開...
-
フォーム2つを並列処理
-
クリックイベントなのに、2回ク...
-
ユーザーフォーム上に現在日時...
-
モードレスでユーザーフォーム...
-
モーダルフォームとモードレス...
-
アクティブでないフォームを、...
-
特定のフォームが開いているか...
-
VBAのテキストフォームの折り返...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
ExcelVBAのユーザーフォームの...
-
エクセルVBAのフォームを最...
-
ユーザーフォームのテキストボ...
-
クリックイベントなのに、2回ク...
-
モーダルフォームとモードレス...
-
Form_Load と Form_Activate の...
-
VBAでユーザーフォームを再表示...
-
Hideについて(.NET)
-
ACCESSのフォーム、開くんです...
-
MSGBOXのフォント大きさ変更
-
Excelにて、ユーザーフォームで...
-
【VBAユーザーフォームで閉じる...
-
ユーザーフォーム上に現在日時...
-
VBA(エクセル)のユーザー...
-
access2021 更新前に処理をしたい
-
Accessで、一つのフォーム画面...
-
コントロールの存在確認
-
Microsoft Formsの「個人情報や...
-
複数モニタ使用時のフォームの...
おすすめ情報