La solución que propone
Ñuño Martínez sería de esta forma:
Código:
class TMiDateTimePicker: public TDateTimePicker
{
public:
void __fastcall SetShowTodayCircle(bool v) {ShowTodayCircle = v;}
};
// Para quitar el círculo
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TMiDateTimePicker *DateTimePicker = (TMiDateTimePicker*)DateTimePicker1;
DateTimePicker->SetShowTodayCircle(false);
}
Pero aunque te saltas la seguridad de la herencia, no funciona, te cambia la visualización (Kind) a Time. Se debe a que el TDateTimePicker no es un TCalendar hasta que no lo desplegamos.
La solución puede hacerse desde la API de Windows asignando al evento OnDropDown el siguiente código:
Código:
void __fastcall TForm1::DateTimePicker1DropDown(TObject *Sender)
{
// Encontramos el HANDLE del calendario
HANDLE hCalendar = (HANDLE)SendMessage(DateTimePicker1->Handle, DTM_GETMONTHCAL, 0, 0);
if(hCalendar > 0)
SetWindowLong(hCalendar, GWL_STYLE, GetWindowLong(hCalendar, GWL_STYLE)|MCS_NOTODAYCIRCLE);
}
Saludos.