コンポーネントのサイズ変更イベントを受け取る方法。
コンポーネントのサイズが変更された時、WM_SIZEメッセージが送られます。
このWM_SIZEに応答するメソッドを作成することで、コンポーネントのサイズが変更されたときに応答するメソッドを作成できます。
class TSampleGrid : public TStringGrid
{
//省略
protected:
//WM_SIZE メッセージに応答するイベント
void __fastcall WMSize(TWMSize &Message);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_SIZE, TWMSize, WMSize)
END_MESSAGE_MAP(TStringGrid)
};
TWMSizeの内容は次の通り。
struct TWMSize {
unsigned Msg;
Longint SizeType; //サイズ変更のタイプ
Word Width; //クライアント領域の幅
Word Height; //クライアント領域の高さ
Longint Result;
};
グリッドのサイズが変更された時に列の幅を均等に広げる処理です。
/**
* コンポーネントのサイズが変更された時に呼ばれるイベント
*/
void __fastcall TSampleGrid::WMSize(TWMSize &Message)
{
//すべての線を結合した長さの計算結果
int GridLines = ColCount * GridLineWidth;
// 新しいデフォルトのセル幅を設定
DefaultColWidth = (Message.Width - GridLines) / ColCount;
}