Win7+XE3 starter
お世話になります。DPIの設定が違うPCで動かした場合でもScaled:=false; AutoScroll:=False; にして各コンポーネントの位置、サイズがDPIの既定値(96DPI)で設計した時のスタイルが崩れないようになりました。しかしMonthCalendarは枠をはみ出して表示が欠けてしまいました。
そこでもしもできるのであればDPIが既定値以外に設定してあったら起動時にDPIを既定値に変更させれば良いのではないかと考えました。変更方法など教えてください。よろしくお願いします。
ディスプレイの解像度の変更のことでしょうか?
編集 削除deldel様
>ディスプレイの解像度の変更のことでしょうか?
はい、そうです。 デスクトップを右クリックして「個人設定」で規定値以外に変更
したときのトラブル対策を考えたものです。
よろしくお願いします。
規定値が何かを判断するのは置いといて、解像度の変更は、
Mr.XRAYさんのサイトにばっちりありますよ^^
mrxray.on.coocan.jp/Delphi/plSamples/020_DisplayResolution.htm
deldel様 お返事をありがとうございます。
ご紹介のあった中から「03_設定可能な解像度のリストから選択して解像度を
変更」をコピペして下記の行を入れてテストしてみました。
with panel1 do begin
width:=238; height:=207; left:=400; top:=100; color:=clblack;
end;
with monthcalendar1 do begin // Panel1の上にカレンダーを貼り付け
width:=218; height:=187; left:=10; top:=10;
end;
これでDPIを既定値(100%)で確認後
* コントロールパネルでDPIを125%に変更==>カレンダーで左右(日、土)が欠ける。
* 画面のサイズ一覧から既定値と思われる1920x1080 32bits 60Hzでサイズ変更
この結果ではやはりカレンダーが正常に描かれませんでした。いろいろサイズ一覧から選択
して試したのですが同じでした。
この問題に対処するにはカレンダーの自作しかないのでしょうか?
よろしくお願いします。
解決方法ではありません.
ちょっと気になったものですから.
「画面の解像度」と言った場合,一般的には,縦方向と横方向の,画面のピクセル (ドット数) を意味するようです.
[020_画面 ( ディスプレイ ) の解像度の取得と変更] は,その解像度関係のテストサンプルです.
DPI の変更は,レジストリの操作で可能なようです.
[020] [10_画面サイズの mm 単位までの取得と DPI 仮想化]
http://mrxray.on.coocan.jp/Delphi/plSamples/020_DisplayResolution.htm#10
にある参考リンクの
[すべてのユーザーに対して DPI を変更する方法]
の記事を参考にしてみてください.
レジストリの値の変更には管理者権限が必要です.
Mr.XRAY様
解像度など勉強させていただきました。ありがとうございました。
解像度が「既定値」で一定であればMonthCalendarも設計時の状態で表示され
るものと期待して質問させていただきましたがこの方法ではMonthCalendar
には反映されないことが分かりました。
とりあえずDateTimePickerならスペースに収まるのでこれを使うことにしますが
やはりCalendarが便利ですのでMr.XRAY様のサイトを参考に自作していきたいと
思います。またDelphi6であればMonthCalendarも設計時とおりに収まるので場合によっては
Delphi6に戻すことも対策かとも思います。
色々と勉強になりました。 ありがとうございました。