月と年の移動
グリッドのカスタマイズ:インデックス への移動
プロパティはコンポーネントの操作に便利で、特に設計時に効果を発揮します。しかしときには、非常に一般的または自然で、複数のプロパティを扱うことが多いタイプの操作については、それらを処理するためのメソッドを用意する意義があります。そのような自然な処理の 1 例が、カレンダーの「翌月」機能です。月を1月に戻し、年を1つ繰り上げる、といった処理は単純ですが、コンポーネントを使用する開発者にとっては、非常に便利なものです。
メソッドに汎用的な操作をカプセル化することの、唯一の難点は、メソッドが実行時にしか使用できないことです。しかし、このような操作が一般に面倒になるのは、それが繰り返し行われる場合のみであり、それは設計時にはめったにありません。
カレンダーに対して、次の 4 つのメソッドを追加して、次または前の月または年へ移動できるようにしましょう。これらメソッドはそれぞれ、IncMonth 関数を若干異なった形で使用して、年月を増減させ、CalendarDate の値をインクリメントまたはデクリメントします。
procedure TCalendar.NextMonth;
begin
CalendarDate := IncMonth(CalendarDate, 1);
end;
procedure TCalendar.PrevMonth;
begin
CalendarDate := IncMonth(CalendarDate, -1);
end;
procedure TCalendar.NextYear;
begin
CalendarDate := IncMonth(CalendarDate, 12);
end;
procedure TCalendar.PrevYear;
begin
CalendarDate := DecodeDate(IncMonth(CalendarDate, -12);
end;
void __fastcall TSampleCalendar::NextMonth()
{
CalendarDate = IncMonth(CalendarDate, 1);
}
void __fastcall TSampleCalendar::PrevMonth()
{
CalendarDate = IncMonth(CalendarDate, -1);
}
void __fastcall TSampleCalendar::NextYear()
{
CalendarDate = IncMonth(CalendarDate, 12);
}
void __fastcall TSampleCalendar::PrevYear()
{
CalendarDate = IncMonth(CalendarDate, -12);
}
新しいメソッドの宣言を、クラス宣言に追加するのを忘れないでください。
これで、カレンダー コンポーネントを使用するアプリケーションを作成した際、年月の参照機能を、観点に実装できるようになります。