Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-07-2004
Avatar de weke
weke weke is offline
Miembro
 
Registrado: may 2004
Ubicación: Valencia
Posts: 170
Poder: 20
weke Va por buen camino
problemilla con calendar

Buenas!
La cuestión es que me gustaría que en el calendar se marcaran una serie de días, todavía no se como marcarlos, si poniendolos en negrita, otro color, pero eso es lo de menos. Por ejemplo, con el código que he encontrado en otro hilo,
Código Delphi [-]
MonthCalendar1.BoldDays([7, 21, 25], MonthBoldInfo);
se marcan los días indicados en negrita.
Los días que quiero marcar los tengo que sacar de una tabla, supongo que con un query. Utilizo ADO y Acces. En una tabla tengo el campo 'cumpleaños' con el siguiente formato (por ejemplo: 10 de diciembre). No consigo sacar solo los días para que en el mes que toque los marque en el calendar.

Espero que me puedan echar una manita.
Muchas gracias y un saludo a todos.
__________________
De lo bueno lo mejor, de lo mejor lo superior.
Responder Con Cita
  #2  
Antiguo 06-07-2004
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Poder: 21
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
  #3  
Antiguo 06-07-2004
Avatar de weke
weke weke is offline
Miembro
 
Registrado: may 2004
Ubicación: Valencia
Posts: 170
Poder: 20
weke Va por buen camino
La fecha la guardo literalmente, es decir, un string.
En cuanto pueda pruebo tu código y te cuento si he tenido que hacer algún cambio para modificar ese "problemilla" que me pueda dar el utilizar un string directamente en lugar de un Date.
Gracias por ese pedazo de código y un saludo.
__________________
De lo bueno lo mejor, de lo mejor lo superior.
Responder Con Cita
  #4  
Antiguo 06-07-2004
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Poder: 21
andres1569 Va por buen camino
Cita:
Empezado por weke
La fecha la guardo literalmente, es decir, un string
Eso sí es un problema, mayor aún si en el mismo campo string almacenas día y mes. Si estuvieran en campos separados te serviría el código que te puse, pues a fin de cuentas no importaría que los meses estuvieran ordenados de Enero a Diciembre sino solamente agrupados. Sólo tendrías que guardar el mes en la misma variable m pero se tipo string, el resto serviría, con algún retoque ...

Cita:
Empezado por weke
En cuanto pueda pruebo tu código y te cuento si he tenido que hacer algún cambio para modificar ese "problemilla" que me pueda dar el utilizar un string directamente en lugar de un Date.
Ten en cuenta que es un error conceptual utilizar un string para guardar la fecha, quizás te suponga un trastorno cambiarlo pero seguro que a la larga ese tiempo estará bien empleado (supongo, vamos).

Saludos
__________________
Guía de Estilo
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 10:33:20.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi