Ver Mensaje Individual
  #1  
Antiguo 19-11-2014
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Reputación: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
TExtCalendar - Calendario alternativo a TCalendar

Os pongo en antecedentes:

Necesitaba un calendario para mi próximo proyecto (un gestor de actividades). El problema es que TCalendar, el que viene por defecto con Lazarus, no permite marcar fechas de ninguna forma, y como depende del sistema operativo no hay forma de menterle mano. Me puse a buscar y encontré TCalendarLite en un hilo del foro de FreePascal/Lazarus. Me gustó, pero tampoco permite marcar varias fechas, así que me puse a mirarlo para añadirle yo esa eventualidad, pero me encontré con un desaguisado de aúpa: Tres clases, una de las cuales no hace lo que se supone que debe hacer, y un código enrevesado y más complejo de lo que, en mi opinión, debería ser. Total, que me puse a re-escribirlo. La intención primera era mejorar TCalendarLite, pero al final he creado mi propio componente, mucho más simple y creo que mejor, Acabo de terminar hace unos minutos su funcionalidad básica y he decidido compartirlo con todos.

Funciona con Lazarus/FreePascal en Fedora, pero no creo que de problemas en Windows. Lo que me pregunto es si funcionaría en Delphi (a ver si puedo probarlo en mi viejo Delphi6 esta tarde). Permite cambiar muchas cosas del aspecto gráfico, también diferencia entre la fecha actual (o definida por el programador) y la fecha seleccionada por el usuario, y tiene casi todos los eventos de TCalendar y alguno más; todo ello en un código fuente elegante y magníficamente comentado. El "pero" es que le falta alguna cosilla todavía.

En fin, aquí tenéis el invento, según se ve con el programa de demostración (para Lazarus) adjunto:


Estoy pensando en modificarlo ligeramente, de forma que se comporte de forma similar a como lo hace TDrawGrid, para que el programador pueda dibujar cada casilla como le plazca. ¿Quizá extendiéndola a una TDrawExtCalendar? ¿O al revés, que TExtCalendar descienda de TDrawExtCalendar?

También estoy pensando en cómo podría extender una clase TDBExtCalendar que pudiera obtener información de una base de datos para marcar diferentes fechas. Esto último no sé muy bien cómo hacerlo, todavía. Me refiero, más que nada, a cómo indicar los campos a tener en cuenta (¿por defecto? ¿Propiedades? ...).
Archivos Adjuntos
Tipo de Archivo: zip extcalendar-141119-src-pas.zip (135,3 KB, 62 visitas)
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita