ウィンドウタイトルバーやメインメニューの高さ、スクロールバーの幅を求める
|
17 |
SystemMetrics |
動作確認 |
Delphi2007 |
更新日 |
2008/01/07(月) |
OSの設定でウィンドウタイトルバー(キャプションバーって言うかな?)や
メインメニューの高さ(メインメニューを独自実装してない場合ね)や
スクロールバーの幅を求めたいときは次のようにします。
タイトルバーの高さ
GetSystemMetrics (SM_CYCAPTION)
ウィンドウの枠幅
GetSystemMetrics(SM_CYFRAME)
1行分のメニューバーの高さ
GetSystemMetrics (SM_CYMENU)
縦スクロールバーの幅
GetSystemMetrics(SM_CXVSCROLL)
横スクロールバーの高さ
GetSystemMetrics(SM_CXHSCROLL)
Vistaで試しました。
XPのLunaインターフェースやVistaのウィンドウタイトルバーの高さは
結構太くなっています。
この幅は
SM_CYCAPTIONだけでは足りずに枠幅SM_CYFRAMEを含んでいて
GetSystemMetrics (SM_CYCAPTION) + GetSystemMetrics(SM_CYFRAME)
このように求める事ができるようです。
メニューが折り返されて何行になっているかは求める方法はわかりません。
Self.BoundRect.Topと
Self.ClientToScreen(Self.ClientRect.TopLeft).Top
との差分から、さらにWindowsのタイトルバー高さを引いて
1行分のメニューバーの高さで割れば求まりそうです。
必要なら試してください。
|