Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Manejo de Excepciones (https://www.clubdelphi.com/foros/showthread.php?t=34415)

anghell77 09-08-2006 06:30:25

Manejo de Excepciones
 
Hola compañeros....una pregunta....
Tengo un Evento OnExit de un MaskEdit

Código Delphi [-]
procedure TForm2.MaskEdit1Exit(Sender: TObject);
begin
DBEdit6.Text:=MaskEdit1.Text;
end;

Esto lo hago para que los datos de la fecha que desee capturar el usuario se guarden en el campo DBEdit6 que es de tipo Date, porque por defecto se captura la fecha del sistema....

Como puedo validar que MaskEdit si al usuario se le van los dedos y se sale sin capturar datos o que no me arroje errores como

Cita:

" / / /" is not a valid date..... o "Invalid input value",
sé que se puede hacer atrapando la excepcion, pero no se como es esto...si alguien me puede ayudar, lo agradezco....

Saludos...

kuan-yiu 09-08-2006 09:07:18

Algo así
Código Delphi [-]
try
  // Código que puede dar problemas
except
  // Lo que harás si da problemas
end;

roman 09-08-2006 15:26:01

Hola, el problema aquí es dónde colocar el try-except porque la validación de la máscara se hace antes del evento OnExit. Anteriormente hemos hablado de esto, quizá estos hilos sean de utilidad:

http://clubdelphi.com/foros/showthre...light=maskedit
http://www.clubdelphi.com/foros/showthread.php?t=4453

// Saludos

anghell77 10-08-2006 03:02:32

Gracias Kuan_Yiu, eso si lo sabía, lo que necesitaba era ver más o menos que código agregar ahí donde dices, "código que puede dar problemas", pero ahora Roman me ha dado unos enlaces y estoy viendo todos los hilos que se enlazan a la respuesta.... Gracias Roman, yo notifico si he logrado hacer que funcione, o si se me atora en algún otro lado este asunto...

Saludos...

anghell77 10-08-2006 07:40:55

Lo he intentado...
 
:confused: :confused: :( :(

He intentado, las sugerencias....

Código Delphi [-]
 
try
 DataModule2.DespachoFECHA.Value:=StrToDate(MaskEdit1.text);
  except
    Application.MessageBox('Formato de fecha incorrecto','Atención',mb_Ok +mb_IconQuestion);
    MaskEdit1.SetFocus;
  end;

Y aún me sigue mandando errores: "Invalid Input Value", o al escribir fechas invalidas, pues arroja "15/15/15 is not a valid Date"....
También intenté crear la clase subalterna del MaskEdit como sugiere Roman

[left]
Código Delphi [-]
 <div align="left"><div align="left">type
  TMaskEdit = class(Mask.TMaskEdit)
  protected
    procedure ValidateError; override;
  end;

  TForm1 = class(TForm)
    { métodos y propiedades }
  end;

implementation

procedure TMaskEdit.ValidateError;
begin
  MessageBeep(0);
  raise EDBEditError.Create('Formato incorrecto');
end;
end.div>div>

Pero ésta alternativa sólo no avisa nada....obviamente no deja que siga con los demás procesos que realizo, como Guardar, el cual está condicionado a la captura correcta de todos los datos; pero no dice que esté mal la entrada ni dice si no se ha escrito algo, obvio es funcional porque no aparecen los errores en inglés pero no los señala tampoco como lo escribimos....

Alguna sugerencia?? GRACIAS.....

{Saludos}

Lepe 10-08-2006 09:53:33

Ejecuta el programa desde el explorador de windows.

¿no será que tienes la opcion de "Stop on Delphi Exception" activada en tools -> debugger options -> language

Saludos

dec 10-08-2006 12:31:16

Hola,

Yo también estuve haciendo pruebas, y, me temo que la clave la ha dado Román más arriba:

Cita:

Empezado por Román
Hola, el problema aquí es dónde colocar el try-except porque la validación de la máscara se hace antes del evento OnExit.

Fíjate en lo que Juan Antonio dice en este mensaje, precisamente, que el componente que estás tratando de utilizar tiene un problema "de diseño", que implica que lanza determinados mensajes sin que puedas hacer nada por evitarlo, por lo que se ve.

Tal vez debas plantearte cambiar de componente.

anghell77 10-08-2006 18:46:48

:confused:

Cada que me ocurre algo por el estilo me siento bien babas....
Había olvidado desactivar "Stop on Delphi Exception"...:( :( :mad:

Se ha solucionado la cuestión...ahora, como me han aconsejado, ubicar el código de la excepción para que valide el formato antes de salir del MaskEdit...

Por lo demás, fijate Dec, que me he puesto a leer el enlace y me ha dejado pensando al respecto... más adelante intentaré realizar pruebas con otros componentes para evitar los "errores del diseño" del MaskEdit...

Muchas Gracias a Todos!!!


{Saludos}


La franja horaria es GMT +2. Ahora son las 03:59:29.

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