モニタ解像度1024×768ピクセルの開発環境でFormをHeight=9000,Width=10000の大きさに規定しています。(ScaleMode=1-Twip)
しかしながら使う人のモニタ解像度が1024×768とは限らないことから、開発環境を800×600ピクセルに変更してプログラムを実行してみたところ、案の定Form下側が全く見えなくなりました。
使用する側のPCモニタ解像度によってFormを自動で調節するにはどうしたらよいのでしょうか?
ご教示下さい。
(まだ、VBを初めて2週間なのでわかりやすく説明していただけると助かります)
環境を書き忘れました。
VB6+XP SP2です。よろしくお願いします。
Screen.Width、Height、TwipsPerPixelX、TwipsPerPixelXプロパティ
などを調べましょう。
コントロール(ボタンやテキストボックス)の大きさやフォントを
モニタ解像度によって調整したいということでしょうか?
残念ながらメソッドやプロパティ一発で自動的に調整してくれるようなものは
ありません。
自分で全てのコントロールの大きさやフォントのサイズを調整することになります。
現在のスクリーン解像度を取得するにはK.J.K.さんのおっしゃるとおりの
プロパティを調べてください。
私ならそのフォームをMDIフォームの子フォームとして表示し解像度により
見えない部分は、使い難いけどスクロールして使ってもらうようにしますが。
K.J.Kさん、くろさん、早々のご回答ありがとうございました。
くろさんの「残念ながらメソッドやプロパティ一発で自動的に調整してくれるようなものはありません。」で、「ハッ」と気づきました。
ホームページ作成の場合と同じ考え方ですよね。
今まで一般的なアプリケーションを使用して、様々な解像度でも必要なアイテムが見えなくなったりすることが無かったため、モニタに応じて勝手に自動調整していると思いこんでいたことが原因でした。(webで検索してもヒットしなかったのは、当たり前すぎて疑問にもなっていなかったのでしょう)
そのことに気付いてから、いくつかアプリケーションを確認してみたら、動作環境が800×600以上となっているものは、ちゃんと横幅が800ピクセル時でも、必要なアイテムは必ず見えるようなレイアウトになっていました。(エクセルの場合、よく見るとメニューバーやツールバーは800ピクセルに収まるよう左に寄っていました)
K.J.Kさんのご助言で、モニタ解像度情報の取得方法がわかりましたので、やろうと思えばできそうですが、(解像度に対応した倍率でオブジェクトの大きさや配置情報を変更するコードを書く・・・コードから変更できないプロパティもありそうですが・・・)レイアウトを800×600で表示可能なようにレイアウトしなおすか、動作環境としての必要解像度を1024×768以上とするかという結論に至りました。
K.J.Kさん、くろさん、本当にありがとうございました。感謝致します。
ツイート | ![]() |