Ir al contenido


Foto

Componente TCalendarView


  • Por favor identifícate para responder
8 respuestas en este tema

#1 tiquinho

tiquinho

    Member

  • Miembros
  • PipPip
  • 26 mensajes

Escrito 03 noviembre 2020 - 08:23

Hola a todos

 

Alguien sabe como delimitar un TCalendarView.

 

Lo que deseo es que cuando se cargue el calendario, este tenga deshabilitado los días posteriores a la fecha actual. Y también se puede delimitar por ejemplo 3 meses antes. 

 

 

Agradezco su colaboración


  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.192 mensajes
  • LocationMéxico

Escrito 04 noviembre 2020 - 09:38

Hola a todos

 

Alguien sabe como delimitar un TCalendarView.

 

Lo que deseo es que cuando se cargue el calendario, este tenga deshabilitado los días posteriores a la fecha actual. Y también se puede delimitar por ejemplo 3 meses antes. 

 

 

Agradezco su colaboración

 

Hola

 

No tiene las propiedades MinDate y MaxDate?

 

Saludos


  • 0

#3 tiquinho

tiquinho

    Member

  • Miembros
  • PipPip
  • 26 mensajes

Escrito 06 noviembre 2020 - 08:50

Hola

 

No tiene las propiedades MinDate y MaxDate?

 

Saludos

 Hola

 

No, no los tiene


  • 0

#4 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.192 mensajes
  • LocationMéxico

Escrito 06 noviembre 2020 - 11:14

 Hola

 

No, no los tiene

 

Ah vaya, pues tocará agregar las propiedades, No se.... podría ser a través de un CAST del componente padre o agregar la funcionalidad a través de la creación de un nuevo componente o a través de algún helper, habría que ver que es más fácil. ¿Qué versión de Delphi estás utilizando? 

 

Saludos 


  • 0

#5 escafandra

escafandra

    Advanced Member

  • Moderadores
  • PipPipPip
  • 3.965 mensajes
  • LocationMadrid - España

Escrito 06 noviembre 2020 - 05:06

No reconozco ese componente como de delphi. TMonthCalendar si dispone de MinDate y MaxDate. Si estamos hablando un componente de terceros en de entrono Windows, la API nos permite manejar intervalos de fechas válidos con MonthCal_SetRange que usa el mensaje MCM_SETRANGE.

 

Saludos.


  • 0

#6 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.192 mensajes
  • LocationMéxico

Escrito 07 noviembre 2020 - 08:13

No reconozco ese componente como de delphi. TMonthCalendar si dispone de MinDate y MaxDate. Si estamos hablando un componente de terceros en de entrono Windows, la API nos permite manejar intervalos de fechas válidos con MonthCal_SetRange que usa el mensaje MCM_SETRANGE.

 

Saludos.

 

Hola

 

Las ultimas versiones de Delphi agregaron éste componente, lo raro es que el CalendarView de la RTL de Windows si tiene estas propiedades  MINDATE, MAXDATE  pero no están en el componente, tocará, como había comentado, agregarlas de algún modo.

 

Saludos

Archivos adjuntos


  • 0

#7 escafandra

escafandra

    Advanced Member

  • Moderadores
  • PipPipPip
  • 3.965 mensajes
  • LocationMadrid - España

Escrito 09 noviembre 2020 - 05:00

Hola
 
Las ultimas versiones de Delphi agregaron éste componente, lo raro es que el CalendarView de la RTL de Windows si tiene estas propiedades  MINDATE, MAXDATE  pero no están en el componente, tocará, como había comentado, agregarlas de algún modo.
 
Saludos

 
Lo buscaré en Berlin. Quizás se pueda solucionar sin mucho embrollo.
 
Saludos.
  • 0

#8 escafandra

escafandra

    Advanced Member

  • Moderadores
  • PipPipPip
  • 3.965 mensajes
  • LocationMadrid - España

Escrito 09 noviembre 2020 - 10:55

En Berlin ese componente no aparece. Muestro la forma de controlar el calendario entre dos días dados. Como no he encontrado TCalendarView, el ejemplo lo pongo para un TMonthCalendar.
 
En el ejemplo confino el calendario entre el 1-1-2020 y el 31-1 2020 usando la API, en concreto el mensaje MCM_SETRANGE.
 
 


delphi
  1. var
  2.   ST: array [0..1] of SYSTEMTIME;
  3. begin
  4.   ZeroMemory(@ST, 2*sizeof(SYSTEMTIME));
  5.   ST[0].wYear:= 2020;
  6.   ST[0].wMonth:= 1;
  7.   ST[0].wDay:= 1;
  8.   ST[1].wYear:= 2020;
  9.   ST[1].wMonth:= 12;
  10.   ST[1].wDay:= 31;
  11.   SendMessage(MonthCalendar1.Handle, $1012 {MCM_SETRANGE}, 1 {GDTR_MIN} or 2 {GDTR_MAX}, integer(@ST));
  12. end;

Saludos.


  • 1

#9 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.192 mensajes
  • LocationMéxico

Escrito 09 noviembre 2020 - 07:49

En Berlin ese componente no aparece. Muestro la forma de controlar el calendario entre dos días dados. Como no he encontrado TCalendarView, el ejemplo lo pongo para un TMonthCalendar.
 
En el ejemplo confino el calendario entre el 1-1-2020 y el 31-1 2020 usando la API, en concreto el mensaje MCM_SETRANGE.
 
 


delphi
  1. var
  2.   ST: array [0..1] of SYSTEMTIME;
  3. begin
  4.   ZeroMemory(@ST, 2*sizeof(SYSTEMTIME));
  5.   ST[0].wYear:= 2020;
  6.   ST[0].wMonth:= 1;
  7.   ST[0].wDay:= 1;
  8.   ST[1].wYear:= 2020;
  9.   ST[1].wMonth:= 12;
  10.   ST[1].wDay:= 31;
  11.   SendMessage(MonthCalendar1.Handle, $1012 {MCM_SETRANGE}, 1 {GDTR_MIN} or 2 {GDTR_MAX}, integer(@ST));
  12. end;

Saludos.

 

Hola amigo,

 

Ya hice la prueba y no toma la configuración como lo hace con el MonthCalendar, es probable que no funcione así ese objeto, le he puesto un rango del 1 de Julio de 2020 al 10 de Noviembre de 2020.

 

Saludos

Archivos adjuntos


  • 0