Delphi - Capturar EDBEditError

 
Vista:

Capturar EDBEditError

Publicado por crapo (4 intervenciones) el 20/04/2003 19:56:24
Estoy tratando de capturar la excepción EDBEditError en una EditMask, con la máscara LLLL00000. Ya intenté con un try...except, pero no captura el error. Qué puedo hacer???
De antemano, Gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Capturar EDBEditError

Publicado por Ernesto De Spirito (706 intervenciones) el 20/04/2003 22:26:00
Imagino que puedes interceptar esa excepción a nivel de aplicación en el evento OnException. La forma más fácil de asignar un procedimiento para manejar ese evento es usando el componente ApplicationEvents (pestaña "Additional" en la Paleta de Componentes) si es que viene en tu versión de Delphi, si no, tendrás que asignar el evento programáticamente (mira el ejemplo en la ayuda del evento OnException del objeto TApplication).

Como sea, en el manejador del evento OnException, Sender es el objeto que lanzó la excepción, y E es la excepción. Llama a Application.ShowException(E) si quieres mostrar el diálogo estándar para la excepción, y no hagas nada si no quieres mensaje alguno. También puedes definir tus mensajes personalizados. Ejemplo:

procedure TForm1.AppException(Sender: TObject; E: Exception);
begin
if E is EDBEditError then
with Sender as TMaskEdit do
Application.MessageBox(PChar(Format(
'El valor "%s" es incompatible con la máscara "%s".',
[Text, EditMask]), PChar(Application.Title),
MB_OK + MB_ICONSTOP)
else
Application.ShowException(E)
end;

Espero que te sirva.

Ernesto De Spirito
http://www.latiumsoftware.com/es/index.php
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Capturar EDBEditError

Publicado por crapo (4 intervenciones) el 21/04/2003 03:34:40
Ya lo intenté, pero ni así puedo interceptar esa excepción. De cualquier manera aprecio mucho tu ayuda, y pues seguiré intentando se otras maneras. Gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Capturar EDBEditError

Publicado por Ernesto De Spirito (706 intervenciones) el 21/04/2003 10:46:34
A ver, prueba esto que a mí me funciona perfectamente:

type
TForm1 = class(TForm)
:
:
procedure FormCreate(Sender: TObject);
protected
procedure AppException(Sender: TObject; E: Exception);
:
:
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnException := AppException;
end;

procedure TForm1.AppException(Sender: TObject; E: Exception);
begin
if E is EDBEditError then
if Sender is TDBEdit then
Application.MessageBox(PChar(Format(
'El valor "%s" es incompatible con la máscara "%s".',
[TDBEdit(Sender).Text, TDBEdit(Sender).Field.EditMask])),
PChar(Application.Title),
MB_OK + MB_ICONSTOP)
else
Application.ShowException(E)
else
Application.ShowException(E)
end;

Ernesto De Spirito
http://www.latiumsoftware.com/es/index.php
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar