Calendar (Delphi)

From RAD Studio Code Examples
Jump to: navigation, search

Description

This code shows the use of the TCalendar component. It uses a Calendar, some buttons, a checkbox, an edit box and some labels. Basic calendar cycling functionality is covered by the btnNextMonth, btnPrevMonth, btnNextYear, and btnPrevYear buttons.

The edtNewDate checkbox allows you to enter a new date and force the Calendar to display it, on the fly. The correct date format is mm/dd/yyyy.

The btnDisplayDate button displays a message on the screen with the date picked up from the Calendar by its components (day, month, and year).

Code

procedure TMainForm.btnNextMonthClick(Sender: TObject);
begin
  { Advance a month. }
  Calendar1.NextMonth;
end;

procedure TMainForm.btnPrevMonthClick(Sender: TObject);
begin
  { Retrograde a month. }
  Calendar1.PrevMonth;
end;

procedure TMainForm.btnNextYearClick(Sender: TObject);
begin
  { Advance a year. }
  Calendar1.NextYear;
end;

procedure TMainForm.btnPrevYearClick(Sender: TObject);
begin
  { Retrograde a year. }
  Calendar1.PrevYear;
end;

procedure TMainForm.btnNewDateClick(Sender: TObject);
begin
  { Assign the Calendar a new Date. }
  try
    { Try to set the new date. }
    Calendar1.CalendarDate := StrToDateTime(edtNewDate.Text);
  except
    { Show an error message. }
    Application.MessageBox('Error setting the new date. Possible an incorrect format.' +
                           #13#10 + 'The correct date format is: mm/dd/yyyy', 'Error', mb_Ok);
  end;
end;

procedure TMainForm.btnDisplayDateClick(Sender: TObject);
begin
  { Show a message. }
  Application.MessageBox(PChar(Format('Day is: %d' + #13#10 + 'Month is: %d' + #13#10 +
                         'Year is: %d', [Calendar1.Day, Calendar1.Month, Calendar1.Year])),
                         'Error', mb_Ok);
end;

procedure TMainForm.Calendar1Change(Sender: TObject);
begin
  { Each time the calendar is updatet, the current date is shown on the Label. }
  Label1.Caption := Format('Current date is: %s', [DateTimeToStr(Calendar1.CalendarDate)]);
  { Also update the New Date edit box. }
  edtNewDate.Text := DateTimeToStr(Calendar1.CalendarDate);
end;

procedure TMainForm.CheckBox1Click(Sender: TObject);
begin
  { Make the calendar to use the current date. }
  Calendar1.UseCurrentDate := CheckBox1.Checked;
  Calendar1.OnChange(Self);
end;

procedure TMainForm.FormCreate(Sender: TObject);
begin
  { Make sure we update the Calendar when creating the Form. }
  Calendar1.OnChange(Self);
end;

Uses

See Also