Hola:
Por lo que parece, el problema no lo tienes con el Calendar sino con la consulta que lanzas para obtener las fechas. ¿No bastaría con un
Código SQL
[-]
SELECT extract (month from FECHACUMPLE) as mes,
extract (day from FECHACUMPLE) as dia
FROM CLIENTS
ORDER BY mes, dia
?
Luego recorres la consulta, y para cada mes (están agrupados) creas una matriz de números con los días encontrados, que es la que le pasas al TCalendar correspondiente:
Código Delphi
[-]
procedure AsignaCumpleañosCalendario;
var
Dias : array of Integer;
m : Integer;
function AsignaDiasMes;
var
MiCalendar : TMonthCalendar;
begin
Case m of
1 : MiCalendar := MonthCalendar1;
2 : MiCalendar := MonthCalendar2;
...
12 : MiCalendar := MonthCalendar12;
else EXIT
end;
if Length(Dias) > 0 then MiCalendar(BoldDays(Dias, MonthBoldInfo));
end;
begin
m := -1;
Query1.First;
while NOT Query1.EOF do
begin
with Query1.FieldByName('Mes') do
if AsInteger <> m then
begin
AsignaDiasMes;
m := AsInteger;
SetLength(Dias, 0);
end;
SetLength(Dias, Length(Dias) + 1);
Dias[High(Dias)] := Query1.FieldByName('Dia').AsInteger;
Query1.Next;
end;
AsignaDiasMes;
end;
ufff ! Menudo código, me he tirado un ratito haciéndolo, espero que te sirva, me queda la duda de si almacenas la fecha como DATE y no como dices literalmente "10 de Diciembre", eso sería más problemático, pero sería culpa tuya,
