
複数のモニタを接続したディスプレイで、
フォームを表示させたいのですが、
フォームを閉じた際に、どの位置で表示されていたかを保存しておき、
それを元に、再度フォームを開くときには閉じられた位置に表示をさせたいと思います。
フォームのトップ、レフトを保存しておいた場合、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(アクセス)
-
Access VBA でForm位置を参照するプロパティ?
Access(アクセス)
-
-
4
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
5
【マクロ】フォルダを2つのモニターの定位置に並べたい
Excel(エクセル)
-
6
エクセルVBAで画面の大きさを取得する方法!
Excel(エクセル)
-
7
フォームの位置を取得したい
Visual Basic(VBA)
-
8
拡張ディスプレイの関連でエクセルの表示がおかしくなりました
モニター・ディスプレイ
-
9
エクセルVBAで、MsgBox やInputBox は、画面の中央以外に表示させたい。
Excel(エクセル)
-
10
パソコンの画面に合わせてユーザーフォームを表示させたい
Visual Basic(VBA)
-
11
VBAのリストボックスで、横スクロールバーを表示するには?
Visual Basic(VBA)
-
12
エクセルVBAでオプションボタンを無効にする方法
Excel(エクセル)
-
13
Access サブフォームでの選択行の取得
その他(データベース)
-
14
Excel VBAで、ユーザーフォームをモードレス表示している間、処理を止めるには?
Visual Basic(VBA)
-
15
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
16
どこにもフォーカスを当てたくない
Access(アクセス)
-
17
UserForm1.Showでエラーになります。
工学
-
18
VBAのリストボックスをマウスでスクロール
PowerPoint(パワーポイント)
-
19
モニタのサイズをVBAで取得することは可能ですか?
その他(Microsoft Office)
-
20
VBA、UserFormを前面に出力してから処理後にももう一度前面に出したい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
ExcelVBAのユーザーフォームの...
-
ユーザーフォーム上に現在日時...
-
(Excel+VBA)ユーザーフォームの...
-
アクセス2013 フォームが...
-
エクセルのチェックボックスの...
-
クリックイベントなのに、2回ク...
-
ブックをCloseまたはQuitで閉じ...
-
オブジェクト(コントロール)...
-
ユーザーフォームのテキストボ...
-
コントロールの存在確認
-
なぜエラーになるのでしょう?...
-
エクセルVBAのフォームを最...
-
エクセルVBA フォーム上でOnkey...
-
Excelにて、ユーザーフォームで...
-
Hideについて(.NET)
-
VBAでユーザーフォームを再表示...
-
Access-VBAのPublic変数につい...
-
VBAのテキストフォームの折り返...
-
Form_Load と Form_Activate の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
ExcelVBAのユーザーフォームの...
-
ユーザーフォームのテキストボ...
-
VBAでユーザーフォームを再表示...
-
クリックイベントなのに、2回ク...
-
Microsoft Formsの「個人情報や...
-
ACCESSのフォーム、開くんです...
-
Form_Load と Form_Activate の...
-
モーダルフォームとモードレス...
-
ユーザーフォーム上に現在日時...
-
Hideについて(.NET)
-
VBA(エクセル)のユーザー...
-
フォームウィンドウを最前面に...
-
(Excel+VBA)ユーザーフォームの...
-
コントロールの存在確認
-
VB.NETでフォームロード中のエ...
-
VBAのテキストフォームの折り返...
-
パソコンの画面に合わせてユー...
-
モードレスでユーザーフォーム...
-
ユーザーフォームのラベルに時...
おすすめ情報