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)

egostar 28-02-2008 02:07:20

Cita:

Empezado por Caral (Mensaje 269238)
Hola
Hoy estas susceptible, por que sera

N'ombre, cual suceptible, si yo soy un hombre feliz......:)

Cita:

Empezado por Caral (Mensaje 269238)
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.

Como siempre amigo, mis consejos te han servido para migrar de NOVATO a MASTER :D:D:D

Cita:

Empezado por Caral (Mensaje 269238)
Ah, se me olvida, si no saben usar un INI, es bueno leer el archivo leeme.

:D:D:D, pensé que nos ibas a mandar aquí

Salud OS

spyfenix 06-03-2008 20:57:18

Como podria saber el nombre del frame que se carga en ejecucion
 
Que tal genete, este codigo me ha sio de bastante ayuda la vdd.
le quiero modificar un aspecto que seria el seiguiente :

Código Delphi [-]
LockWindowUpdate(self.handle);
    TheTop:= 36;
    Dias := DaysInMonth(Fecha);// cuantos días tiene ese més?
    for cont := 1 to Dias  do
    begin
      dia := TfrmCelda.Create(frmPrincipal.tbCalendario);
      dia.Fecha := RecodeDay(fecha,cont); // asignamos la fecha y el caption de esa celda
      dia.Name := dia.Name + IntToStr(cont); // le ponemos un nombre irrepetible.
      dia.Left:= (DayOfTheWeek(dia.Fecha)-1) * dia.Width; // segun el dia de la semana y el ancho del Freame, lo situamos en pantalla.
      if dia.Left = 0 then
        TheTop := TheTop + dia.Height; // si el dia es 1 es Lunes, aumentamos el Top para la siguiente linea
      dia.Top := TheTop;
      dia.Parent:= frmPrincipal.tbCalendario; // lo hacemos visible en el Form
  
AQUI ME GUSTARIA AGREGAR ESTE BLOQUE PARA QUE CARGUE LOS DATOS SI HAY DATO SEGUN LA FECHA    
  
//cargamos las actividades que se hayan registrado
      {frmPrincipal.ADOQuery2.Close;
      frmPrincipal.ADOQuery2.Parameters.ParamByName('An').Value := frmPrincipal.EAn.Text;
      frmPrincipal.ADOQuery2.Parameters.ParamByName('Me').Value := frmPrincipal.EMes.Text;
      frmPrincipal.ADOQuery2.Parameters.ParamByName('Di').Value := cont;
      frmPrincipal.ADOQuery2.Open;
      if frmPrincipal.ADOQuery2.RecordCount  > 0 then
      begin
        dia.Memo1.Text := frmPrincipal.ADOQuery2.Fields[0].Value;
      end;}
      LockWindowUpdate(0);
   end;

Solo tengo un problema, como puedo saber el nombre del objeto que esta creando para pasar cargar los datos de la consulta

muchas gracias por la ayuda, saludos a todos

Caral 06-03-2008 21:01:00

Hola
dia := TfrmCelda.Create(frmPrincipal.tbCalendario);
Saludos

spyfenix 06-03-2008 21:36:04

Listo, algo adornado si alguien le interesa
 
Que tal Caral
gracias por la ayuda, mira esta es la funcion cuando se crea el calendario, y le acabo de agregar que mientras se va creando va cargando informacion si hay alguna actividad en dicho dia.
Espero les guste

saludos

Código Delphi [-]
procedure TfrmPrincipal.CreaCalendario(const Fecha :TDateTime);
var
  Dias, cont, TheTop : Integer;
  Dia, aCelda : TfrmCelda;
  aNombre : String;
begin
  LockWindowUpdate(self.handle);
    TheTop:= 36;
    Dias := DaysInMonth(Fecha);// cuantos días tiene ese més?
    for cont := 1 to Dias  do
    begin
      dia := TfrmCelda.Create(frmPrincipal.tbCalendario);
      dia.Fecha := RecodeDay(fecha,cont); // asignamos la fecha y el caption de esa celda
      dia.Name := dia.Name + IntToStr(cont); // le ponemos un nombre irrepetible.
      dia.Left:= (DayOfTheWeek(dia.Fecha)-1) * dia.Width; // segun el dia de la semana y el ancho del Freame, lo situamos en pantalla.
      if dia.Left = 0 then
        TheTop := TheTop + dia.Height; // si el dia es 1 es Lunes, aumentamos el Top para la siguiente linea
      dia.Top := TheTop;
      dia.Parent:= frmPrincipal.tbCalendario; // lo hacemos visible en el Form
      //cargamos los datos segun corresponda la fecha
      frmPrincipal.ADOQuery2.Close;
      frmPrincipal.ADOQuery2.Parameters.ParamByName('An').Value := StrToInt(frmPrincipal.EAn.Text);
      frmPrincipal.ADOQuery2.Parameters.ParamByName('Me').Value := StrToInt(frmPrincipal.EMes.Text);
      frmPrincipal.ADOQuery2.Parameters.ParamByName('Di').Value := cont;
      frmPrincipal.ADOQuery2.Open;
      if frmPrincipal.ADOQuery2.RecordCount  > 0 then
      begin
        dia.Memo1.Text := ADOQuery2comentarios.Value;
      end;
      LockWindowUpdate(0);
   end;
end;

Caral 06-03-2008 22:31:15

Hola
Muy bonito, se ve que as estado trabajando.
Hay que tener en cuenta que es mejor cambiar el código que llama al procedimiento (CreaCalendario) al evento onShow.
Viendo el código que aportaste (excelente) modifique la manera de mostrar el memo completo, añadiendo un panel a la celda (al lado de guardar) que indique VER, así no se tendrá que usar el combobox si no se quiere.
Muy bueno, ahora solo falta la aprobación del Creador.:)
Saludos

Lepe 06-03-2008 23:45:04

¿aprobar? ¿quien soy yo para aprobar o suspender? Ni que fuera un maestro :p

En serio, me alegra que os sirva, ese era el propósito del calendario.

Saludos

spyfenix 07-03-2008 00:46:42

Exelente
 
Un saludo Caral y Lepe


Gracias

dalsim 06-07-2008 03:24:20

monthcalenar y algunos componentes
 
envian dd mm y aaaa como puedo cambiarlo a mm dd aaaa gracias


La franja horaria es GMT +2. Ahora son las 11:42: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