Ver Mensaje Individual
  #9  
Antiguo 15-03-2005
rafita rafita is offline
Miembro
 
Registrado: ago 2003
Ubicación: Cuenca- España.
Posts: 309
Reputación: 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