Вы можете принудительно обновить отображаемые в данный момент календари, отправив сообщение MCM_SETDAYSTATE.
в дополнение к коду для ответа на событие GetMonthInfo
procedure TForm1.GetMonthBoldInfo(month:cardinal):cardinal;
begin
...
end;
procedure TForm1.MonthCalendar1GetMonthInfo(Sender: TObject;
Month: Cardinal; var MonthBoldInfo: Cardinal);
begin
monthBoldInfo:=GetMonthBoldInfo(month);
end;
вам нужен код для обновления при изменении записи календаря ...
var DayStates: array[0..2] of integer;
....
DayStates[0]:=GetMonthBoldInfo(month-1);
DayStates[1]:=GetMonthBoldInfo(month);
DayStates[2]:=GetMonthBoldInfo(month+1);
SendMessage(MonthCalendar1.Handle, MCM_SETDAYSTATE, 3, longint(@DayStates));