Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Validar Fecha de un TDateField (https://www.clubdelphi.com/foros/showthread.php?t=9967)

cesar_picazo 07-05-2004 00:19:10

Validar Fecha de un TDateField
 
Buenas tardes estoy utilizando delphi 6 y estoy utilizando un campo TdateField, más tengo la siguiente inquietud, para validar la fecha,

Esta Fecha tiene la mascara igual que la mascara del sistema operativo ejemplo

##/##/## dd/mm/aa, y estoy utilizando el onvalidate y onexit del campo pero no me permite manipular el objeto, aparentemente primero esta validando que la fecha que se está introduciendo sea correcta.

duda que evento tengo que utilizar para validar la fecha antes de que el sistema me envie un mensaje de error,

lo que quiero hacer es que al escribir 01 automaticamente con la exception complete la fecha con la fecha del sistema 01/05/04 o bien 01/04 y lo complete con 01/04/04.

Estuve buscando algo por el estilo y vi que usan de MaskEdit y declaran un procedure ValidateError; override; pero en el caso de un TdateField y un TTIMEField cual debo utilizar.

Por su atención gracias.

eduarcol 07-05-2004 00:38:06

Pues utiliza elevento onValidate del campo, me imagino que utilizas el componente ttable

cesar_picazo 07-05-2004 00:51:05

Ese estoy utilizando
 
Eso mismo estoy haciendo en el campo xx en el onvalidate tengo lo siguiente

procedure TPrincipal.xxonValidate(Sender: TField);
var
texto:variant;conttemp2,conttemp:integer;
cccc:variant;
Hoy : TDateTime;
Year, Month, Day: Word;
begin
showmessage('Error');
end;
Pero para entrar a este onvalidate tiene que estar bien escrita la fecha, con la mascara que le pongo ##/##/##, no se si existe un forma de capturar el error ante de esto, o que hace internamente delphi, para que yo suprima el mensaje de error que envia delphi por completar la fecha como lo comentaba.

Project api.exe raised exception class EconvertError With Message "20/04/" is not a valid date. Process Stopped. Use Step or to Continue.

Lo que necesito saber es como capturar este mensaje para en caso se de ser una fecha erronea yo completarla.

eduarcol 07-05-2004 00:54:41

Mira disculpaqueno te delainformacion completa lo que pasa esque no tengo delphi a mano en el objeto tfield debe haber otro evento(no recuerdo elnombre :o ), con eso lopodras lograr

Ahora para capturar el error puedes usar el evento del TTable que te da la excepcion al grabar

jachguate 07-05-2004 00:56:02

Cita:

Empezado por cesar_picazo
duda que evento tengo que utilizar para validar la fecha antes de que el sistema me envie un mensaje de error

Vos no queres validar la fecha... lo que queres es manipular de alguna forma el texto ingresado por el usuario... para esto valete del evento OnSetText.

Para aclarar, puedo decir que el evento OnValidate, en este caso, se disparará solo en caso que se haya introducido una fecha sintácticamente válida... en espera que vos confirmes que es una fecha aceptable...

hasta luego.

;)

eduarcol 07-05-2004 01:04:45

Cita:

Empezado por jachguate
para esto valete del evento OnSetText.
;)

Esa era elnombre que mefaltaba ;)

cesar_picazo 07-05-2004 01:48:46

listo
 
tiene razon
se tiene que hacer lo siguiente en el settext del objeto se tiene que capturar el texto y en el gettext se tiene que poner la cadena valida del texto en este caso la fecha. El validate no es necesario para este caso, por su atención gracias


La franja horaria es GMT +2. Ahora son las 07:24:34.

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