Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-03-2005
alfredosg19 alfredosg19 is offline
Miembro
 
Registrado: ene 2005
Ubicación: Barcelona
Posts: 91
Poder: 20
alfredosg19 Va por buen camino
Problema con el TDate.

Hola a todos, mi problema es que tengo un componente del tipo DAtaTimePicker que comienza con la fecha del sistema, pero cuando hago click sobre el para elegir una fecha la fecha del Tdate se modifica y no hay forma de volverle a introducir la fecha actual. El problema es que si queremos hacer una reserva para una fecha que ya pasó me encuentro con dos problemas:
- doy el mensaje de error pero la fecha sigue modificada y sigue pudiéndose hacer la selección de reservas en fechas pasadas.
- Si hago un bucle como la fecha no se actualiza no sale nunca (se cuelga).
He probado de actualizar el Tdate con la hora del sistema incluso haciendo una función, o ligándola al botón de reservas pero no se puede. ¿Existe alguna posibilidad?. Gracias de antemano.
Código:
 DtDAta.DAte(DAte)
__________________
"La perseverancia es el camino del éxito"
Responder Con Cita
  #2  
Antiguo 10-03-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Código Delphi [-]
DateTimePicker1.Date:=Date;

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 10-03-2005
alfredosg19 alfredosg19 is offline
Miembro
 
Registrado: ene 2005
Ubicación: Barcelona
Posts: 91
Poder: 20
alfredosg19 Va por buen camino
No se puede cambiar fecha al Tdate.

El problema sigue siendo el mismo, es muy curioso pero nbo se puede ¿no existe otra función?.
__________________
"La perseverancia es el camino del éxito"
Responder Con Cita
  #4  
Antiguo 10-03-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
El ejemplo que te estoy dando es para un DateTimePicker.

Código Delphi [-]
 procedure TForm1.Button1Click(Sender: TObject);
 begin
 DateTimePicker1.Date:=Date + 10;
 end;

Qué componente estás utilizando, o al menos muestra el código al completo para ver que es lo que está ocurriendo.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #5  
Antiguo 11-03-2005
alfredosg19 alfredosg19 is offline
Miembro
 
Registrado: ene 2005
Ubicación: Barcelona
Posts: 91
Poder: 20
alfredosg19 Va por buen camino
El componente DataTimePicker no se actualiza.

HOla, pongo el trozo de código, se trata de un programa que hace reservas y claro no se pueden hacer reservas de días pasados, ni con más de una semana de anticipación para eso hice una función para saber los dias pasados y otra para saber si la fecha es anterior. Hasta aquí todo muy bien, pero al final del código el TData.Date no hay forma de ponerle la fecha de hoy (al principio cuando el programa comienza sí), he probado con todo incluso he hecho una función para coger la fecha del sistema (que es una tonteria pero por probar). No sé que hacer al final la única opción que veo y poco elegante es poner en el botón de hacer reservas que si la fecha no es correcta obligue al usuario a moficarla manualmente (esta opción no me gusta nada).

Cita:
if (Diasdesde(DatetoStr(DtData.Date))<=0) and (Diaspasats(DtData.Date)<7) then
begin
Showmessage(DatetoStr(DiasDesde(DatetoStr((DtData.Date)))));
data(FormatDateTime('dddd',dtData.Date),FormatDateTime('mmmm',dtData.Date));
lbBselec.Caption:='';
stSalaplena.Visible:=False;
Llegeixdades;
sgSala.Enabled:=True;
ImPeli.Visible:=True;
Esborratot;
Cerca;
Salapeli;
lbBlliures.Caption:=InttoStr(Contar);
Salaplena;
{NOTA: no puc canviar la data a la data actual}No puedo canviar la fecha
DtData.Date:=DataSistema(Date);
end
else
{NOTA: Passa ho mateix, s'ha de clicar dues vegades quan surt el misatge)} tengo que clicar dos veces para salir
Begin
Showmessage('La data no es correcta'); La fecha no es correcta
DtData.Date:=DataSistema(Date);
end;
Para terminar agradecer vuestra ayuda, ha! y las notas que están aquí puestas no están en castellano (es como están en el programa) pero he puesto al lado lo que significa, espero no molestar a nadie con eso. Muchas gracias.
__________________
"La perseverancia es el camino del éxito"
Responder Con Cita
  #6  
Antiguo 11-03-2005
Avatar de Kreyser
Kreyser Kreyser is offline
Miembro
 
Registrado: ago 2004
Ubicación: Barcelona
Posts: 114
Poder: 20
Kreyser Va por buen camino
Arrow DtData.Date

Hola.

No queda me queda muy claro el código, que indicas, de todas formas la lógica de lo que deseas hacer es algo tal que así??

Código:
if (Condicion1) and (Condicion2) then
begin
  Showmessage('Fecha OK!!');
  {NOTA: no puc canviar la data a la data actual}
  //		--> Pero la fecha es valida!!
  // luego no hay que...  DtData.Date:=DataSistema(Date);
end
else
begin
  Showmessage('Error');
  DtData.Date:=Date;
end;
end.
Has hecho la depuración paso a paso??, en que linea te salta el error??, que error??... la lógica de las condiciones es correcta??, and??, or??...
__________________
"Es imposible hacer un programa 100% contra tontos, ya que éstos son muy ingeniosos"
Responder Con Cita
  #7  
Antiguo 11-03-2005
alfredosg19 alfredosg19 is offline
Miembro
 
Registrado: ene 2005
Ubicación: Barcelona
Posts: 91
Poder: 20
alfredosg19 Va por buen camino
No se actualiza el DataTimePicker

Quiero decir que si comienzas un programa actualizando el DataTimePicker después no puedes actualizarlo otra vez, el código que tú tienes ya lo probé y tampoco me va. . ASí que no sé como hacer para cambiarlo. Gracias.
__________________
"La perseverancia es el camino del éxito"
Responder Con Cita
  #8  
Antiguo 11-03-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
El DateTimePicker lo puedes actualizar las veces que desees:

Aquí tienes un ejemplo, necesitas.
1 DateTimePicker
3 Botones.

Copia el códiigo y haz la prueba, fíjate que utilizo Now en vez de Date, esto es para que me actualice fecha y hora cuando pulse los botones 2 y 3 con el botón 1 visualizo la fecha y hora actuales para ver como cambia.

Código Delphi [-]
  procedure TForm1.Button1Click(Sender: TObject);
  begin
  ShowMessage(FormatDateTime('',DateTimePicker1.date));
  end;
  
  procedure TForm1.Button2Click(Sender: TObject);
  begin
  DateTimePicker1.DateTime:=Now;
  end;
  
  procedure TForm1.Button3Click(Sender: TObject);
  begin
  DateTimePicker1.DateTime:=Now;
  end;

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #9  
Antiguo 15-03-2005
rafita rafita is offline
Miembro
 
Registrado: ago 2003
Ubicación: Cuenca- España.
Posts: 309
Poder: 21
rafita Va por buen camino
Hola Alfredosg19,

Solo quería decirte que te ocurre lo que a mí: te curras todo a mano, incluso funciones que ya existen. Tengo cientos de líneas de código sustituidas por una sola función que trae Delphi, y que descubrí tras largas horas de trabajo y buenos dolores de cabeza.

Para saber si la fecha introducida es anterior a la fecha actual o una semana posterior utiliza las funciones DaysSpan y CompareDate:
Código:
if CompareDate(FechaD.Date,Now)=-1 then
    ShowMessage('¡Aviso! Estas realizando una reserva en un día anterior a hoy');
 if Round(DaysSpan(Fecha1.Date,Now))<0 then 
    ShowMessage('Anterior a hoy');
Para poner la fecha del sistema simplemente utiliza la función NOW:
Código:
    DtData.Date:=Now;
También te sirve para la hora (actual)
Código:
DTFechaYHora.DateTime:=Now;
 DTSoloHora.Time:=Now;
Como dice Marcos, puedes cambiar el valor tantas veces como quieras. Suele ser lo habitual.

Puedes comprobar la validez de la fecha al salir del campo DTData. Yo lo hago de la siguiente forma:
Evito que el usuario introduzca una fecha a mano: en el evento OnKeyPress pongo una función con un
Código:
Key:=#0;
Capturo el repliege del calendario en el evento OnCloseUp.
Código:
var FHBuena : TDateTime;
 begin
 if (not TryStrToDate(DateToStr(FechaD.Date), FHBuena)) or
 		 (not TryStrToDate(DateToStr(FechaH.Date), FHBuena)) or
 		 (not TryStrToTime(HoraD.Text, FHBuena)) or
 		 (not TryStrToTime(HoraH.Text, FHBuena)) then
 		 begin
 		 ShowMessage('¡Error! Faltan datos (fecha u hora) para poder realizar la reserva');
 		   Exit;   // podría haberlas inicializado FechaD.Date:=NOW; ....
 		 end;
Por último, te recomiendo que le eches un vistazo a los componentes de las RXLib, sobre todo a uno llamado DateEdit.

Seguimos en contacto.
__________________
Rafita.

Última edición por rafita fecha: 15-03-2005 a las 13:08:08.
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 01:34:40.


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