Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Marcar una fecha en un TMonthCalendar (https://www.clubdelphi.com/foros/showthread.php?t=53623)

Tom 25-02-2008 20:40:19

Marcar una fecha en un TMonthCalendar
 
Que tal gente
mi pregunta es la siguiente, como podria llenar en un TMonthCalendar fechas apartir de una base de datos, la parte de base de datos no hay problema, solo quisiera saber como puedo recorrer el objeto e ir marcando las fechas.

muchas gracias de antemano

saludos

Caral 25-02-2008 20:45:11

Hola
Código Delphi [-]
MonthCalendar1.Date:= StrToDate('22/02/2008');
En vez de poner el dato string de una vez, pones el dato que envia la base de datos.
Saludos

egostar 25-02-2008 20:46:42

Cita:

Empezado por Tom (Mensaje 268520)
Que tal gente
mi pregunta es la siguiente, como podria llenar en un TMonthCalendar fechas apartir de una base de datos, la parte de base de datos no hay problema, solo quisiera saber como puedo recorrer el objeto e ir marcando las fechas.

muchas gracias de antemano

saludos

Hola Bienvenido al Club, tu problema se resuelve usando el evento AfterScroll de la tabla.

Código Delphi [-]
procedure TForm1.Table1AfterScroll(DataSet: TDataSet);
begin
  MonthCalendar1.Date := Table1Fecha.Value;
end;

Salud OS

PD, Te invito a leer nuestra guia de estilo. :)

spyfenix 25-02-2008 21:32:03

Gracias por sus respuestas, mas que nada lo que quiero es marcar varias fechas en un mismo mes, y de esta forma me marca la ultima fecha

Código Delphi [-]
Calendario.Date:= StrToDate('22/02/2008');
Calendario.Date:= StrToDate('23/02/2008');
Calendario.Date:= StrToDate('24/02/2008');

Si pongo este codigo, solo aparecera marcado el dia 24, mi pregunta es como marcar varias fechas en un mismo mes.

muchas gracias

egostar 25-02-2008 22:27:53

Cita:

Empezado por spyfenix (Mensaje 268534)
Gracias por sus respuestas, mas que nada lo que quiero es marcar varias fechas en un mismo mes, y de esta forma me marca la ultima fecha

Código Delphi [-]
Calendario.Date:= StrToDate('22/02/2008');
Calendario.Date:= StrToDate('23/02/2008');
Calendario.Date:= StrToDate('24/02/2008');

Si pongo este codigo, solo aparecera marcado el dia 24, mi pregunta es como marcar varias fechas en un mismo mes.

muchas gracias

Hola spyfenix o quizas Tom :confused:

Si cambias la propiedad Multiselect del MonthCalendar a True podrás ver las fechas seleccionadas pero solo si éstas son continuas, por ejemplo 23, 24, 25, 26, pero si seleccionas fechas "saltadas" no creo que sea posible.

Salud OS

Tom 25-02-2008 23:43:25

:confused: SpyderFenix ?????
bueno, ya estuve checando esta forma de agregar las fechas pero las maneja por rango, y creo que no me servira.
lo que quiero hacer es tipo un calendario de actividades, alguien me podria dar el tipo de algun componente que hayan usado para mostrar diferentes fechas en un mismo mes ???

Muchas gracias por la ayuda
SALUDOS:D

egostar 26-02-2008 00:13:08

Tal vez esto que nuestro amigo Neftali proporcionó te ayude...

Salud OS

Caro 26-02-2008 05:16:50

Hola Tom, creo que lo mas que puedes hacer en el MonthCalendar es resaltar las fechas poniendolas en negrilla.

Código Delphi [-]
procedure TForm1.MonthCalendar1GetMonthInfo(Sender: TObject;
  Month: Cardinal; var MonthBoldInfo: Cardinal);
begin
 MonthCalendar1.BoldDays([1,6,10,13],MonthBoldInfo);
end;

eso te marca los dias 1,6,10 y 13 del mes que se esta viendo.

Saluditos

Lepe 26-02-2008 10:44:45

Y si quieres colorear más, usa el MaxCalendar, gratuito y con fuentes.

La negrilla tienen poco de resaltado, la verdad.

Saludos

Caral 27-02-2008 04:18:54

Hola
Hace algún tiempo Lepe puso un Calendario Dinámico en el club.
Le he hecho algunas modificaciones, he modificado un poco la apariencia y ahora el calendario guarda la información en una base de datos access ademas de otras cositas que espero le gusten al Maestro Lepe.
Me parece que va con el tema que se esta tratando, espero que os guste.
Pongo el archivo aquí por unos días, luego tal vez lo suba al Ftp del club, espero la anuencia de Lepe.
Saludos

Lepe 27-02-2008 15:52:43

¡¡ qué guapada !!

¿eso era mío? vaya tuneo que le has pegado!!
los 7 paneles le dan una apariencia tremenda.

Como no tenía Delphi a mano, he creado la ruta "c:\program files\ ... Projects 6.1" para probarlo, me ha gustado mucho.

En el foro he visto usar una función muy útil para el calendario. Cuando cambiamos de mes, se produce un parpadeo lógico de la pantalla, porque se borra el calendario y se crea de nuevo, bien, ese parpadeo puede evitarse:

Código Delphi [-]
 procedure TForm1.CreaCalendario;
...
begin
    LockWindowUpdate(self.Handle);
// aquí el contenido original de esta rutina
    LockWindowUpdate(0);
end;

El calendario ya se encuentra en el ftp: Directorio raíz » Delphi-Win32 » Ejemplos. Si puediera eliminarse y poner el tuyo con las modificaciones, sería fantástico.

Saludos de "Maestro" a "Maestro" ;)

Caral 27-02-2008 17:13:51

Hola
Gracias Lepe, me alegro que te gustaran los retoques, eso quiere decir que estoy aprendiendo, sobre todo de Maestros como tu.:), pero no dejan de ser mas que eso, retoques, la esencia del codigo es tuya, es lo que vale.
He intentando pone el codigo que me dices, pero me dice que self no esta declarado, no se a que se debe, si tienes un rato me explicas por favor.
En cuanto a colocar el codigo en el ftp, creo que si estas de acuerdo se podria contactar con Jhonny o dec, ellos lo pueden hacer.
Gracias de nuevo.
Saludos

Tom 28-02-2008 00:26:10

Wuooooo
 
Que buen calendario :eek:, me ha sacado de broncas, muchas gracias por este grandioso codigo, muy valioso.

Gracias y pues la vdd, despues de este programin esta todo mas que claro.

Muchas gracias por la ayuda :D:D:D

Quedo contento

Saludos

Lepe 28-02-2008 00:29:09

Puedes quitar la palabra "Self." es una manía más que otra cosa :D.

Self hace referencia al objeto que instancia la clase, digamos que es un comodín, ya que una ventana puede crearse varias veces desde distintas variables, por ejemplo al compilar:
Código Delphi [-]
var f1, f2:TForm1;
begin
f1 := TForm1.Create(application);
f2 := TForm1.Create(application);

En la unidad de TForm1 no podemos poner "Form1.width := 300" porque no estamos usando la variable "Form1", en este caso usamos f1 y f2, así que en la unidad TForm1 pondremos "Self.width := 300" o abreviando, también podemos escribir "width := 300"

Yo dije que se quitara el original por el hecho de ahorrar espacio en el FTP yno repetir programas, pero si vamos a causar más molestias que otra cosa, que se quede como está :D.

Lo dicho, se lo comentas y si le pilla de paso el FTP, que lo borre.

Saludos

Caral 28-02-2008 01:15:58

Hola
Gracias Lepe, mas que claro, ya he arreglado esto y si, mejora mucho.
Voy a implementarlo con un archivo INI (como me comento Egostar) así sera mas fácil instalarlo y poner la base de datos en donde se quiera.
Si se te ocurre algo mas que se le pueda hacer me gustaría tratar de hacerlo, con tu ayuda por supuesto.
Saludos

Tom 28-02-2008 01:26:41

no reconoce handle
 
Estoy haciendo lo que menciono Lepe usando este codigo para evitar el parpadeo al cambio de la fecha

Código Delphi [-]
 procedure TForm1.CreaCalendario;...begin    LockWindowUpdate(self.Handle);// aquí el contenido original de esta rutina    LockWindowUpdate(0);end;

pero me marca el sig error :

Undeclared identifier 'handle'

usa alguna clase este o algo para que me lo tome en cuenta ??

Gracias Saludos

Caral 28-02-2008 01:33:22

Hola
Hay que declarar el procedimiento.
Voy a cambiar el archivo, con esa modificación y con el archivo INI.
En unos minutos lo coloco, estoy en eso.
Saludos

egostar 28-02-2008 01:35:38

Cita:

Empezado por Caral (Mensaje 269228)
Hola
Gracias Lepe, mas que claro, ya he arreglado esto y si, mejora mucho.
Voy a implementarlo con un archivo INI (como me comento Egostar) así sera mas fácil instalarlo y poner la base de datos en donde se quiera.
Si se te ocurre algo mas que se le pueda hacer me gustaría tratar de hacerlo, con tu ayuda por supuesto.
Saludos

Hey, que pasó amigo, que van a pensar de mi :eek:, que soy un vago que ni eso puedo hacer...... :D:D:D:cool:

Salud OS

Tom 28-02-2008 01:36:00

Ok
 
Ok Muy bien, entonces esperare unos minuticos y a checar :D:D:D:D

Saludos :D

Caral 28-02-2008 01:56:04

Hola
Hoy estas susceptible, por que sera :D:D
Ya sabes que a lo que me refiero es a que me indicaste, muy atinadamente que le pusiera un archivo ini, que seria mejor y que TU, te harías el tuyo.:D
Bueno, ya hice las modificaciones y he puesto el programa en el mismo hilo, para que no cambie el concepto.
Ya lo podéis bajar ahí.
Saludos
Ah, se me olvida, si no saben usar un INI, es bueno leer el archivo leeme.:D


La franja horaria es GMT +2. Ahora son las 01:41:02.

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