フォームに置いたコントロールのレイアウトを崩さない

設計時と実行時でフォントサイズが異なると、フォームに置いたコントロールのレイアウトが崩れてしまうことがあります。これは、TCustomFormのBorderStyleに設定した値に影響を受けて起こります。BorderStyleの値とレイアウトの関係は次の通りです。
 
BorderStyleの値 レイアウト
bsSizeable 崩れる
bsSizeToolWin 崩れる
bsDialog 崩れない
bsNone 崩れない
bsSingle 崩れない
bsToolWindow 崩れない

この問題は、BorderStyleの値を実行時に変更することによって回避できます。例えば、設計時にはbsDialog等の安全なダミー値を設定しておき、実行時に本来の値を設定します(コード1)。

コード1.

//---------------------------------------------------------------------------
__fastcall TForm1::TForm()
{
        // Keep proper layout of the controls
        BorderStyle = bsSizeable;
}
//---------------------------------------------------------------------------
最終更新: 2009-05-03

戻る