Ver Mensaje Individual
  #2  
Antiguo 06-07-2004
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Reputación: 24
andres1569 Va por buen camino
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,
__________________
Guía de Estilo

Última edición por andres1569 fecha: 06-07-2004 a las 13:46:51.
Responder Con Cita