こんにちは。
開発環境は、Delphi2010 、Win7 64ビット です。
あるPC(Windows 7 32)で実行したときにだけ、
Form2 の Width と Height が小さく表示される現象が出ました。
そうなる原因を突き詰めていった所、
unit2.dfm の ClientWidth が Width に、ClientHeight が Height に
変わってしまっていた ことが判明しました。
Client〜 のものに書き換えることで、
小さく表示される現象は解消されました。
そこで疑問が2つあります。
1.自分で unit2.dfm を直接書き換えてはいないのに、
    ClientWidth が Width に変わってしまうことはあるのでしょうか?
2.小さく表示される現象が出るPCと出ないPCがあります。
    どちらも同じ Win7 32ビット です。
    例えばエクスプローラ等を表示させても、いずれも同じ見た目の状態なのです。
    現象が 出る/出ない は、どこの設定が関係しているのか分かりません。
    どこがポイントと思われますか?
変な質問ですみませんが、どうもすっきりせず、再発が心配です。
良きアドバイスをお願いいたします。
>1.自分で unit2.dfm を直接書き換えてはいないのに、
>    ClientWidth が Width に変わってしまうことはあるのでしょうか?
今までに経験した事はありませんね。
> 2.小さく表示される現象が出るPCと出ないPCがあります。
"小さく" の程度が判りませんが、幾つか考えられることがあります。
1.フォームの Scaled プロパティが True になっている。
Scaled が True だと Windows の DPI によってフォームのサイズが変化します。
# Windows 8 では ppi によって dpi が変化するようになっていたと思います。
2.フォームの BorderStyle が異なる。
bsSizeable と bsSingle でもフレームの幅が異なります。
# 今回の件とは関係なさそうですが。
3.Aero オン/オフの違い。
実は微妙に異なります。
[Frequently asked questions about the Aero Basic window frame]
http://web.archive.org/web/20080221003615/http://shellrevealed.com/blogs/shellblog/archive/2006/10/12/Frequently-asked-questions-about-the-Aero-Basic-window-frame.aspx
>あるPC(Windows 7 32)で実行したときにだけ、
>Form2 の Width と Height が小さく表示される現象が出ました。
実行時の話
>そうなる原因を突き詰めていった所、
>unit2.dfm の ClientWidth が Width に、ClientHeight が Height に
>変わってしまっていた ことが判明しました。
設計時の話
つまり設計時の時点で画面が小さくなっているはず
>あるPC(Windows 7 32)で実行したときにだけ、
ClientWidth  = Width - 16 だから
Width が  元の値より 16 小さくなっているので小さくは
なるだろうけど
特定のPCじゃなくて、全てで現象が出るはず
テキストで ClientWidht を Width に変えて保存すれば
Widthで保存できるけどフォームを表示させ、もう一度テキスト
表示すると ClientWidth に変わっている
それを読み込んでテキストで表示させると ClientWidth になっている
読み込んで何もせず保存しても ClientWidth で保存される
> DEKO さん、KHE00221 さん
コメントありがとうございます。
まだ解明でいきてませんが、ひとまず報告です。
unit2 の設計画面で、Width と Height の部分が太字になってることに
今、気付きました。(逆に Client〜 のほうは太字でありません)
それで、一旦プロジェクトを閉じて、unit2.dfm を Client〜 に書き換え、
プロジェクトを読み込み、コンパイルした所、再び、 Width と Height に
書き換えられてしまうことも分かりました。
どこが原因でこうなるのか不明なので、
そぎ落としていって原因解明しようと思います。
これが解明できた後に、
>小さく表示される現象が出るPCと出ないPC
の方を調べたいと思います。
それって  そのプロジェクトの Form2 のみがなる現象なのかな?
Form1 とか  新規作成した場合とかは  ならない?
解決としましたので、結果を報告いたします。
◆書き換えられてしまった原因
  VertScrollBar.Range に値が入っていることで、
  *.frm の Formのサイズの管理方法(?)が、
  ClientW でなく W に切り替わっていました。
  Form の縦スクロールバーがどんな時に使う物なのか、
  良くわかっていません。
  とりあえず、何かの拍子に VertScrollBar に値を
  入れてしまっていたようです。とほほ...
◆PCによる表示の違い(W=Width、H=Heightと略)
  【開発時】
    ・Form1
      W,H = 300,300
      ClientW,ClientH   = 284,262 (優先)
    ・Form2
      W,H = 300,300 (VertScrollBar.Range設定によりこちら優先)
      ClientW,ClientH   = 284,262
  【PC1で実行時】
    ・Form1
        W,H = 300,300
        ClientW,ClientH = 284,262
    ・Form2
        W,H = 300,300
        ClientW,ClientH = 284,262 
  【PC2で実行時】
    ・Form1
        W,H = 389,388
        ClientW,ClientH = 371,343
    ・Form2
        W,H = 300,300
        ClientW,ClientH = 282,255
  但し、PC1、PC2とも、Windowsのコンパネの設定では違いを
  見つけられませんでした。([Windows7ベーシック]でAeroオフ)
  WindowsXPのPC等でも確認しましたが、表示サイズがおかしいのは、
  このPC2のみ。
  この件に関しては、諦め気味です。
DEKO さん、KHE00221 さん
ありがとうございました。
| ツイート | 
        
         |