コンポーネントのサイズ変更イベントを受け取る方法

コンポーネントのサイズ変更イベントを受け取る方法。

コンポーネントのサイズが変更された時、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;
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください