レイアウトを管理する
アプリケーション ユーザー インターフェイスの開発:インデックス への移動
最も簡単な方法として,フォーム内のどこにコントロールを配置するかによってユーザーインターフェースのレイアウトを管理できます。選択された配置は,コントロールの Top,Left,Width,Height の各プロパティに反映されます。実行時にこれらの値を変更して,フォーム内のコントロールの位置とサイズを変更できます。
このほかにも,コントロールには,自動的にコンテンツまたはコンテナを調整できるプロパティがあります。これにより,フォームを全体的に統一された形式に収まるようにレイアウトできます。
コントロールの位置合わせおよびサイズが親との関連でどのように決定されるかに影響するプロパティが 2 つあります。Align プロパティを使用すると,ほかのコントロールが配置された後で,コントロールを親の特定の端に沿ってまたはクライアント領域全体を埋めるように親のサイズに完全に合わせるように強制できます。親がサイズ変更されると,それに合わせて位置合わせされたコントロールが自動的にサイズ変更され,特定の端に合わせて配置されます。
コントロールを親の特定の端に対して位置合わせするが,必ずしもその端に接触させたり,サイズ変更しない場合,つまり端全体に対して位置合わせする場合は,Anchors プロパティを使用できます。
コントロールが大きくなりすぎたり,小さくなりすぎないようにする場合は,Constraints プロパティを使用します。Constraints を使用すると,コントロールの高さの最大値と最小値,および幅の最大値と最小値を指定できます。これらの値を設定してコントロールの高さと幅のサイズ(ピクセル単位)を制限します。たとえば,コンテナオブジェクト上の Constraints の MinWidth と MinHeight を設定すると,子オブジェクトが常に見えるようにできます。
配置される子がサイズ制限を持っているため,Constraits の値は親/子階層を通じて継承されるので,オブジェクトのサイズは制限できます。Constraints は,ChangeScale メソッドが呼び出されたときにコントロールが特定の寸法にスケールされることを防止できます。
TControl は,TConstrainedResizeEvent 型のプロテクトイベント OnConstrainedResize を導入します。
TConstrainedResizeEvent = procedure(Sender: TObject; var MinWidth, MinHeight, MaxWidth, MaxHeight: Integer) of object;
void __fastcall (__closure *TConstrainedResizeEvent)(System::TObject* Sender, int &MinWidth, int &MinHeight, int &MaxWidth, int &MaxHeight);
このイベントを利用すると,コントロールをリサイズしようとしたときのサイズ制限をオーバーライドできます。制限の値は参照(var)パラメータとして渡されるので,イベントハンドラ内で変更できます。OnConstrainedResize はコンテナオブジェクト向けにパブリッシュされます(TForm,TScrollBox,TControlBar,TPanel)。また,コンポーネントを作成するときに,このイベントを TControl の下位オブジェクトで使用したりパブリッシュにできます。
内容によってサイズを変更できるコントロールは,フォントや含まれているオブジェクトに合わせてサイズを調整する AutoSize プロパティがあります。