Ver Mensaje Individual
  #5  
Antiguo 27-12-2013
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.210
Reputación: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
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.
Responder Con Cita