Navigating Months and Years

From RAD Studio
Jump to: navigation, search

Go Up to Customizing a grid Index

Properties are useful for manipulating components, especially at design time. But sometimes there are types of manipulations that are so common or natural, often involving more than one property, that it makes sense to provide methods to handle them. One example of such a natural manipulation is a "next month" feature for a calendar. Handling the wrapping around of months and incrementing of years is simple, but very convenient for the developer using the component.

The only drawback to encapsulating common manipulations into methods is that methods are only available at run time. However, such manipulations are generally only cumbersome when performed repeatedly, and that is fairly rare at design time.

For the calendar, add the following four methods for next and previous month and year. Each of these methods uses the IncMonth function in a slightly different manner to increment or decrement CalendarDate, by increments of a month or a year.

 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);
 }

Be sure to add the declarations of the new methods to the class declaration.

Now, when you create an application that uses the calendar component, you can easily implement browsing through months or years.

See Also

Code Examples