Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Desarrollo en Delphi para Android
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos


Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-07-2021
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
TCalendar, deshabilitar días fuera del mes actual

Saludos.
Hace mucho que no solicitaba vuestra ayuda. Estoy intentando deshabilitar los días que aparecen en la rejilla del TCalendar y que no corresponden al mes seleccionado. Estoy usando la versión 10.3.3

El motivo es muy simple: cuando pulsas en un día del mes anterior o del mes siguiente el dia que pulsas no es el que se muestra en la rejilla del mes correspondiente.

Por ejemplo: si estamos en el actual mes de julio, aparecen los días 28,29 y 30 de junio al principio y a partir del 31 de julio aparecen del 1 al 8 de agosto.

Cuando seleccionas el 29 de junio (p.ej.) el calendario se actualiza al mes de junio, pero con el día 1 seleccionado. (Se supone que debería presentar el 29 de junio seleccionado)

Cuando seleccionas el 28 de junio (p.ej.) el calendario se actualiza al mes de mayo (¡¿..?!) con el día 31 de mayo seleccionado. (Se supone que debería presentar el 28 de junio seleccionado)

Ahora vayamos al final del mes de julio y seleccionemos los días de agosto que se presentan en la rejilla.

Cuando seleccionas el 1 de agosto (p.ej.) el calendario se actualiza al mes de agosto, pero con el día 29 seleccionado. (Esperábamos que seleccionara el 1 de agosto. ¿no?)

Cuando seleccionas el 7 de agosto (p.ej.) el calendario se actualiza al mes de septiembre, pero con el día 4 seleccionado. (Esperábamos que seleccionara el 7 de agosto. ¿no?)

Este comportamiento un poco ERRÁTICO, (a mi parecer), desearía evitarlo.

Se me ocurren 2 formas:
1.- Inhabilitando las casillas de la rejilla que no correspondan al mes seleccionado.
2.- Conseguir que el resultado sea el esperado. Es decir si pulsar el 1 de agosto, que el calendario se actualice al 1 de agosto.

Aquí está mi problema. NO SE RESOLVER NINGUNA DE LAS 2 MANERAS PROPUESTAS.

Y lo que solicito de vosotros es ayuda para resolver cualquiera de las 2 soluciones.

Gracias anticipadas por vuestra paciencia y vuestra ayuda.

Un saludo cordial.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10)
"...si no tengo caridad, nada soy..." (1 Cor 13,1-13)

Última edición por jhonalone fecha: 13-07-2021 a las 14:57:45.
Responder Con Cita
  #2  
Antiguo 16-07-2021
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
Se me olvidó hacer la precisión de que en Windows se actualiza correctamente al día y mes que clicas. Aunque sea una fecha del mes anterior o del mes siguiente.
Sin embargo en Android ocurre lo que ya he descrito.

Saludos.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10)
"...si no tengo caridad, nada soy..." (1 Cor 13,1-13)
Responder Con Cita
  #3  
Antiguo 26-07-2021
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
Hola de nuevo, amigos.
Después de mucho buscar, probar y comprobar, he conseguido algo.
Basado en este enlace, he modificado un poco el fichero "My.FMX.Calendar.Style.pas" y he conseguido (creo) lo que buscaba.
Adjunto archivo Calendar_un_mes_solo.rar

Confieso que he estado intentando modificar los colores de las casillas, porque me parece muy poco estético ver el calendario en tonos grises, basándome en este enlace. Pero no lo he conseguido de una forma aceptable. SIGO TRABAJANDO EN ELLO.

Voy a iniciar un nuevo hilo para este propósito.

Espero que mis esfuerzos le sirvan a alguien más.

Saludos a todos.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10)
"...si no tengo caridad, nada soy..." (1 Cor 13,1-13)
Responder Con Cita
  #4  
Antiguo 04-08-2021
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
Hola de nuevo, amigos.
Después de mucho MAS buscar, probar y comprobar, he conseguido AMBAS COSAS: DIAS OCULTOS Y COLORES.
Basado en este enlace, he modificado y eliminado algunas cosas que no venían al caso en el fichero MainFrm.pas , en el fichero FMX.Calendar.Helpers.pas, y (sobre todo) en el fichero FMX.CalendarHolidayDays.Style.pas.

Al final he conseguido lo que buscaba, colorear los días y ocultar los días correspondientes al mes anterior y el siguiente.

Cada cual podrá adaptar los colores a su gusto.

Aviso que sólo lo he probado en la versión 10.3.3 de Delphi.

Aquí tenéis los archivos necesarios. Prueba Calendario Club Delphi.rar

Espero que mis esfuerzos le sirvan a alguien más.


Saludos a todos.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10)
"...si no tengo caridad, nada soy..." (1 Cor 13,1-13)
Responder Con Cita
  #5  
Antiguo 04-08-2021
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
TCalendar Color y sólo días mes seleccionado (Resuelto)

Hola amigos.

Creo que es conveniente abrir un nuevo hilo para los buscadores.
Si los administradores lo juzgan necesario, pueden borrar el hilo.

Después de mucho MAS buscar, probar y comprobar, he conseguido AMBAS COSAS: DIAS OCULTOS Y COLORES.
Basado en este enlace, he modificado y eliminado algunas cosas que no venían al caso en el fichero MainFrm.pas , en el fichero FMX.Calendar.Helpers.pas, y (sobre todo) en el fichero FMX.CalendarHolidayDays.Style.pas.

Al final he conseguido lo que buscaba, colorear los días y ocultar los días correspondientes al mes anterior y el siguiente.

Cada cual podrá adaptar los colores a su gusto.

Aviso que sólo lo he probado en la versión 10.3.3 de Delphi.

Aquí tenéis los archivos necesarios. Archivo Adjunto 3930

Espero que mis esfuerzos le sirvan a alguien más.


Saludos a todos.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10)
"...si no tengo caridad, nada soy..." (1 Cor 13,1-13)
Responder Con Cita
  #6  
Antiguo 04-08-2021
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
Hola de nuevo amigos.
Creo que puedo facilitaros las cosas un poquito mas.

Si alguien no quiere estar "comiéndose el coco" para implantar esta funcionalidad en algún proyecto que ya tenga operativo, os explico a continuación cómo lo hice yo y funcionó a la primera.

Recuerdo que uso la versión 10.3.3.

1) Copiamos los ficheros siguientes (desde la carpeta donde hemos descomprimido el fichero "Prueba Calendario Club Delphi.rar") a la carpeta de nuestro proyecto donde tenemos el formulario que lleva el TCalendar.
FMX.Calendar.Helpers.dcu
FMX.Calendar.Helpers.pas
FMX.Calendar.Style.dcu
FMX.Calendar.Style.pas
FMX.CalendarHolidayDays.Style.dcu
FMX.CalendarHolidayDays.Style.pas
MainFrm.fmx
MainFrm.pas
(Estos dos últimos no se usarán en tu proyecto, pero te hará falta abrir MainFrm.pas en la pestaña "Design" para copiar el libro de estilos "stilbk1".)

2) Incorporamos un TCalendar, (si no lo teníamos), al formulario donde tenemos o queremos tener el TCalendar.

3) Copiamos el libro de estilos llamado "stilbk1", (que está en el fichero MainFrm.pas), en el Layout donde hemos puesto el TCalendar.

4) Añadimos, a la cláusula uses del formulario que lleva el TCalendar, los ficheros que nos falten de entre los siguientes:
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
FMX.Calendar, FMX.Controls.Presentation, FMX.MultiView, FMX.DateTimeCtrls, FMX.Layouts, FMX.ListBox,
FMX.Ani;

5) Después de la cláusula "implementation" añadimos estos ficheros al uses del formulario donde va el TCalendar:
uses
FMX.Calendar.Helpers, System.Rtti;

6) Añadimos al proyecto las unidades:
FMX.Calendar.Helpers
FMX.CalendarHolidayDays.Style

7) Añadimos al procedimiento OnCreate de nuestro formulario con el TCalendar:
Calendar1.Model.ShowWeekends := True;
Calendar1.Date := now;

8) Configuramos el TCalendar de este modo:
ControlType : Styled
FirstDayOfWeek : dowLocaleDefault
HitText : True
Name : Calendar1
ParentShowHint : False
Size/PlataformDefault : False
StyleLookUp : calendarstyle
TodayDefault : True

Con estos pasos, a mí me ha funcionado A LA PRIMERA en un proyecto que ya tenía terminado.

Ya sabéis que me gusta compartir mis soluciones.

Me alegraría saber que alguien se ha beneficiado de mis esfuerzos. Gracias.

Saludos a todos.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10)
"...si no tengo caridad, nada soy..." (1 Cor 13,1-13)
Responder Con Cita
  #7  
Antiguo 17-09-2021
Ralevi Ralevi is offline
Miembro
 
Registrado: ago 2021
Posts: 20
Poder: 0
Ralevi Va por buen camino
Calendario con fechas coloreadas

Buenas a todos.

Estaba buscando un calendario en el que poder colorear determinados días siguiendo unos criterios, básicamente turnos de trabajo, para visualmente saber cuales te tocan, y llegue a este hilo.

Me parece muy interesante, pero es mas de lo que necesito, y finalmente opte por una solución mas "artesanal", que comparto por si le es útil a alguien.

Creo un TGridLayout con 7 columnas y 6 filas, cuarenta y dos casillas, 31 días mas 11 vacías

Lo relleno con 42 TButton, del 1 al 31 con el numero correspondiente, y del 32 al 42 sin texto, y deshabilitados.

Con DaysInMonth(fecha dia 1 del mes) calculo la posición del primer día del mes

Con DayOfTheWeek calculo los días que tiene ese mes, y oculto los que no corresponden (28 o 29 en febrero, 31 en los meses que no deben)

Modificas el mes y año a consultar con el control que quieras, en mi caso un TLabel y dos TSpeedButton, y dibuja el mes.

Y funciona, luego modificas el botón del día concreto con las propiedades de color de texto y/o color de fondo.

Puede que no sea una manera muy elegante, pero funciona.

Saludos
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
TCalendar, deshabilitar días fuera del mes actual jhonalone Desarrollo en Delphi para Android 3 04-08-2021 01:46:08
Busqueda y visualizacion en DBGrid seleccionado solo Fila sisne OOP 9 26-03-2010 22:22:05
TListBox. Cambiar el color del elemento seleccionado adebonis OOP 1 08-11-2007 07:37:01
Modificar el color de fuente de un tmemo solo en determinadas lineas gaz-g7 Varios 3 28-06-2007 00:33:44
cabiar de color dias especificos Dayvis Varios 3 16-03-2005 12:12:37


La franja horaria es GMT +2. Ahora son las 09:47:55.


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