空白セルの除外
日付(日)の変更 への移動
カレンダーに書き込む際には、空のセルも選択できますが、その場合、日付は変更されません。それなら、空のセルを選択できないようにするのが理にかなっています。
特定のセルが選択可能かどうかを制御するには、グリッドの 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 }
これで、ユーザーが空のセルをクリックしたり、矢印キーで空のセルに移動しようとした場合でも、カレンダーでは、現在のセルが選択されたまま変わりません。