Ir al contenido


Foto

Evitar el Círculo en el día de hoy al desplegar un TDateTimePicker


  • Por favor identifícate para responder
No hay respuestas en este tema

#1 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 04 enero 2014 - 03:32

Hace unos días respondí una duda en CD que trataba sobre como evitar el círculo que coloca windows en el día de hoy al desplegar un TDateTimePicker. La duda estaba referida a Builder C/C++ y el enlace en cuestión es este.

Me ha parecido interesante publicar el truco en DA y en delphi.
El asunto es que un TDateTimePicker no es un TCalendar hasta que no lo desplegamos, así que usaremos el evento OnDropDown para añadir el siguiente código:


delphi
  1. const
  2.   // de CommCtrl.h
  3.   DTM_FIRST =        $1000;
  4.   DTM_GETMONTHCAL =  DTM_FIRST + 8;
  5.   MCS_NOTODAYCIRCLE = $0008;  // Quita el círculo en el día de hoy
  6.   MCS_NOTODAY =      $0010;  // Quita la leyenda del día de hoy
  7.  
  8. procedure TForm1.DateTimePicker1DropDown(Sender: TObject);
  9. var
  10.   hCalendar: THandle;
  11. begin
  12.   // Encontramos el HANDLE del calendario
  13.   hCalendar:= SendMessage(DateTimePicker1.Handle, DTM_GETMONTHCAL, 0, 0);
  14.  
  15.   // Quitamos el círculo y la leyenda del día de hoy
  16.   if hCalendar > 0 then
  17.     SetWindowLong(hCalendar, GWL_STYLE, GetWindowLong(hCalendar, GWL_STYLE) or MCS_NOTODAYCIRCLE or MCS_NOTODAY);
  18. end;




Saludos.
  • 0




IP.Board spam blocked by CleanTalk.