Вы не можете делать то, что хотите, потому что MonthCalendar, отображаемое в ответ на нажатие кнопки dropDown в DateTimePicker, является MonthCalendar, для которого не установлен стиль MCS_DAYSTATE.Это решение Microsoft.Это не ограничение VCL, поэтому, насколько я знаю, вы ничего не можете сделать, чтобы изменить его.Единственное, что может быть, - это не использовать его и создавать собственный собственный MonthCalendar в ответ на нажатие пользователем кнопки раскрывающегося списка;или используйте некоторые из уже доступных пользовательских компонентов.
Чтобы доказать это, приведена версия Pascal того же кода C #, который вы опубликовали.Это не работает, и, насколько мне известно, это никогда не будет.Если вы хотите проверить это, подключите его к событию DropDown DateTimePicker.
procedure TForm1.DateTimePicker1DropDown(Sender: TObject);
var
monthCalHandle: THandle;
boldDates: array[0..2] of integer;
begin
{ obtain the MonthCalendar handle using the DTM_GETMONTHCAL message
note that the handle returned changes for every time the
drop down calendar is displayed. }
monthCalHandle := SendMessage(dateTimePicker1.Handle, DTM_GETMONTHCAL, 0, 0);
{ Send the MCM_SETDAYSTATE message. This message takes an array of
3 MONTHDAYSTATEs. Every MONTHDAYSTATE is a bit set that represents a month.
Each bit (0 through 30) represents the state of a day. Whan a bit is on,
its corresponding day is emphasized in the MonthCalendar }
boldDates[0]:=$5a5a5a;
boldDates[1]:=$5a5a5a;
boldDates[2]:=$5a5a5a;
SendMessage(monthCalHandle, MCM_SETDAYSTATE, 3, integer(@boldDates));
end;