Компонент TMonthCalendar - это календарь, в котором пользователь может выбирать даты или диапазон дат.
Компонент похож на компонент TDateTimePicker, работающий в режиме ввода дат. Но в TMonthCalendar предусмотрены некоторые дополнительные возможности: можно допустить множественный выбор дат в некотором диапазоне (свойство MultiSelect), можно отображать в календаре номера недель с начала года (свойство WeekNumbers), перестраивать календарь, задавая первый день каждой недели (свойство FirstDayOfWeek) и т.п. Для некоторых офисных приложений все это достаточно удобно.
Для дат (свойства Date) могут быть заданы максимальное и минимальное значения (MaxDate и MinDate). Дату вне этого диапазона пользователь выбрать не сможет. Свойства Date, MaxDate и MinDate в процессе проектирования задаются в принятом в вашей системе формате даты, например, дд.мм.гг. В процессе выполнения эти свойства программно могут задаваться в виде значения типа TDate, например, 35065, или с помощью функции StrToDate, например:
MonthCalendar1.Date:=StrToDate('1.12.99');
При разрешении выбора диапазона дат (MultiSelect = true) начальное значение диапазона содержится в свойстве Date, а конечное значение - в свойстве EndDate. Свойство MaxSelectRange задает максимальное количество дней, которое пользователь может выбрать, выделяя диапазон дат.
Метод BoldDays позволяет выделять в отображаемом месяце какие-то даты (например, праздники) жирным шрифтом. Для этого оператор вызова BoldDays вставляется в обработчик события OnGetMonthInfo, наступающего при каждой смене отображаемого месяца. Например, следующий оператор выделит в отображаемом месяце жирным шрифтом даты 1 и 9:
MonthCalendar1.BoldDays([1,9], MonthBoldInfo);
Следующий оператор сделает то же самое, но только для мая:
if Month = 5
then MonthCalendar1.BoldDays([1,9], MonthBoldInfo);