空白セルの除外

提供: RAD Studio
移動先: 案内検索

日付(日)の変更 への移動


カレンダーに書き込む際には、空のセルも選択できますが、その場合、日付は変更されません。それなら、空のセルを選択できないようにするのが理にかなっています。

特定のセルが選択可能かどうかを制御するには、グリッドの SelectCell メソッドをオーバーライドします。

SelectCell 関数では、列と行をパラメータとして受け取り、指定のセルが選択可能かどうかを示す論理値を返します。

SelectCell をオーバーライドして、次のように、有効な日付がセルに格納されていない場合は False を返すようにします。

function TSampleCalendar.SelectCell(ACol, ARow: Longint): Boolean;
begin
  if DayNum(ACol, ARow) = -1 then Result := False            { -1 indicates invalid date }
  else Result := inherited SelectCell(ACol, ARow);      { otherwise, use inherited value }
end;
bool __fastcall TSampleCalendar::SelectCell(int ACol, int ARow)
{
  if (DayNum(ACol,ARow) == -1) return false;          // -1 indicates invalid date
  else return TCustomGrid::SelectCell(ACol, ARow);    // otherwise, use inherited value
}

これで、ユーザーが空のセルをクリックしたり、矢印キーで空のセルに移動しようとした場合でも、カレンダーでは、現在のセルが選択されたまま変わりません。

関連項目