Tienes que usar un tipo TDateTime... por ejemplo:
Quiero resaltar el dia 20 de cada mes:
Código Delphi
[-]
uses DateUtils:
var Resalta:TDateTime:
begin
Resalta := RecodeDay(ADate, 20);
if Adate = Resalta then
color := clRed
else
color := clBlack;
"ADate" es el parámetro de ese evento. Si te fijas lo que hago es comparar si la fecha que se va a pintar coincide con el día 20 de ese mes.
No trae ayuda, pero trae el código fuente, así que manteniendo control pulsado mientras haces click sobre la palabra "stDay" te llevará más o menos a esto:
Código Delphi
[-]
TmxStyleType = (stSelected, stToday, stDay, stWeekEnd, stIndirect );
Intuyo que:
- StSelected es la fecha seleccionada en el calendario
- StToday si se trata de la fecha actual de windows.
- StDay (de lunes a viernes)
- stWeekEnd (si es un fin de semana, según el código fuente, usa sábado y domingo.
- stIndirect.... no lo he mirado a fondo, creo que es para los días de otro mes... me explico: Si el día 1 de abril empieza en miercoles, entonces puede pintar los días
30 y 31 de Marzo en el Primer Lunes y Martes del mes abril. (hay que retocar otras propiedades para que eso funcione.
Ten en cuenta que solo puedes pintar los colores del mes que se está mostrando, no de otros meses.
Si quieres pintar un conjunto de fechas, podrías usar algo así:
Código Delphi
[-]
var Resalta: array of Tdate;
begin
SetLength(Resalta, 10) ; Resalta[0] : = EncodeDate(2007,3, 20);
etc.
end;
color := clText
if AStyleType = stDay then
for i:= low(Resalta) to high(Resalta) do
if ADate = Resalta[i] then
begin
color := clRed
break;
end;
El hecho de preguntar por if AStyleType = stDay, es porque solo quiero que entre en ese bucle en los días laborables, así impedimos que entre preguntando en fines de semana... es decir, nos estamos ahorrando 8 bucles del for en cada mes (todos los fines de semana de ese mes). Como es un evento que se aplica por cada día a pintar del mes, tenemos que hacerlo eficiente.
En fin, técnicas hay muchas, solo tienes que guardar las fechas que quieres resaltar y después comparar.
Saludos.