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
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.