Marca días inahbiles, periodo vacacional en un calendario stringGrig
1 Archivos Adjunto(s)
Hola amigos esperando que se encuentren bien aquí de nuevo con una situación que espero me puedan ayudar a solucionar y es la siguiente. Estoy desarrollando un calendario de labores en el cual se deben especificar los días inhábiles, así como los 2 periodos vacacionales que se tienes en el año. Para eso lo que hice fue usar stringGrid para cada mes ya el procedimiento de llenar los meses con sus respectivos días y dependiendo del día en que comienzan en la semana ya esta programado el detalle es el siguiente. tengo un popmenu que al dar click sobre algún día del calendario del stringGrid le saldrá la opciones de día inhábil, primer periodo vacacional y segundo periodo vacacional. El detalle aquí es como puedo hacer que al dar click por ejemplo el día inhábil del popmenu me cambie de color esa celda por ejemplo color gris (como se ve en el archivo adjunto). ya que posteriormente de guardara en una base de datos. Espero me puedan ayudar de antemano muchas gracias.
p.d. Estoy usando lazarus y los componentes de calendario no cuenta con multselect por eso opte por usar StringGrid. Estos son los códigos que he encontrado en el foro y he usado Evento onDrawCell Evento OnMouseDown
|
Lo lógico es que guardes el estado de los días en alguna estructura que luego te servirá para almacenarlos.
Cuando seleccionas un día como inhabil, debes almacenarlo en la estructura, al pintar en el StringGrid, sólo debes consultar la estructura para saber qué días pintar de cada color. |
1 Archivos Adjunto(s)
hola Neftali
Cita:
|
HOla, no tengo delphi a la mano, pero ésta es una idea de cómo podría ser:
Guarda la información en un arreglo de dos dimensiones:
Cuando selecciones la celda en el grid cambias el estado en el arreglo
Cuando verifiques si se tiene que resaltar consultas el arreglo
|
Cita:
Si marcas 2 días inhabiles en un mes, debes tenerlos almacenados en algún sitio, de forma que luego cuando pintes el grid (en el evento DrawCell) debes consultar esos días y pintarlos. En el pintado de cada celda del stringgrid se debe hacer una consulta a la estructura, y si la celda que se está dibujando corresponde a un día inhabil, entonces debes pintarla. ¿Cómo se guardan esos días? ¿Qué estructura estás utilizando? ¿Qué función estás utilizando en el OnDrawColumnCell -o similar-? |
Hola El_Chava.
Como te comenta Neftali todo puede variar según programes la estructuración de los datos. Te pongo una idea de tantas en que podrías realizarlo. El ejemplo hace uso del mouse tanto para la elección única como múltiple de días y usa un PopupMenu cuyos ítems ponen el día o la selección en día feriado o laboral. Por la imágen que adjuntaste pareciera que usas 12 StringGrids, el ejemplo usa uno solo (StringGridEnero), pero es muy simple modificarlo para que funcione con los restantes.
Muestra: Saludos :) |
Hola ecfisa, Neftali y tmsanchez primeramente muchas gracias por responder. Al fin logre lo que quería hacer y era que por el momento solo me marcaran los días en el stringGrid antes de guardarlos en la base de datos.Investigando por la red(y claro en el foro) encontre ejemplos y los adapte a los requerimientos que necesitaba Les dejo el código espero le sean de utilidad. Saludos.
procedimientos Código:
procedure seleccionar_dia(X, Y: Integer;StrMes:TStringGrid); Código:
Código:
Código:
Código:
|
Podrías subir tu proyecto o el formulario donde hiciste eso, estoy necesitando algo parecido, te agradecería que me colaboraras. Gracias.
|
La franja horaria es GMT +2. Ahora son las 17:41:56. |
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