PDA

Ver la Versión Completa : Como usar el ApplicationEvents ?


Raptor
21-11-2003, 15:59:50
hola chicos como estan espero que bien..

bueno mi pregunta como dice arriba
Como usar el ApplicationEvents ?

solo me interesa para capturar los errores
que no recuerdo como se hace
ya se que se debe de poner en el menu principal para captura todos los errores y usar el enventos

ApplicationEvents1Exception


gracias de antemano




---[Dar es mejor que recibir]--

Descendents
21-11-2003, 16:15:35
En el evento on exception del componente le pones el código

Te tiene que quedar mas o menos asi:

procedure TForm1.ApplicationEvents1Exception(Sender: TObject;
E: Exception);
begin
showmessage('Error en el sistema');
end;

Un saludo

Descendents
21-11-2003, 16:22:10
Que por cierto,me olvide

Yo no uso el componente, y capturo los errore igual.
Hago lo siguiente.

//En el formulario Principal pongo:
procedure TForm1.FormCreate(Sender: TObject);
begin
application.OnException := ControlErrores;
end;


//Que este código me llama a este procedimiento
procedure Tform1.ControlErrores(Sender: TObject;E:exception);
begin
showmessage('Error');
end;

Más saludos ;p

delphi.com.ar
21-11-2003, 16:23:08
El TApplicationEvents no es mas que una clase heredada de TComponent (para que la podamos poner visualmente), que captura todos los eventos del TApplication. Esta clase seguramente ha nacido por la popularidad del TAppEvents de las RxLibs.
Si quieres capturar todos los errores no controlados de tu aplicación, tienes utilizar una de las clases que he nombrado anteriormente, teniendo en cuenta que no funcionará hasta que este se cree, y dejará de funcionar cuando esta se libere. Así que si lo pones en tu menú principal, pero antes de crear el form que contiene el menú creas un DataModule y conectas tu aplicación con tu servidor de base de datos, los errores que este proceso produzca, no serán capturados por el TApplicationEnvent, precisamente porque no se ha creado. Lo que he dicho no creo que sea nada novedoso, lo que quiero poner en claro es que si verdaderamente quieres tener un evento que capture todos los errores de la aplicación, debes tener en cuenta el orden de creación de tus clases, y:
OnException only handles exceptions that occur during message processing. Exceptions that occur before or after the execution of the application’s Run method do not generate OnException events.


Saludos!

Raptor
21-11-2003, 16:50:00
Gracias por responder tan rapido, son mejores que lo tipos de las peliculas del oeste.

pero realmente lo que quiero es algo parecido a esto
saber cual es el error con componente y luego desplegar mensaje

con este ejemplo tendria que copiarlos muchas veces mientras que con el componentes seria una sola vez ... gracias


try
Vl_Produccion := Trunc((Table1Logrado.value / Table1Objetivo.value) * 100);
except
on E: EConvertError do
begin {1}
Vl_Produccion :=0;
ShowMessage(format('El campo Objetivo es Igual a 0 para la Tarjeta ====> : %s',[Table1Tarjeta.Value]));
end; {1}

on E: EZeroDivide do
begin
Vl_Produccion :=0;
ShowMessage(format('El campo Objetivo es Igual a 0 para la Tarjeta ====> : %s',[Table1Tarjeta.Value]));
end;

on E: EInvalidOp do
begin
Vl_Produccion :=0;
ShowMessage('Usted esta realizando una operación no valida '+CRLF+'Revisar valor de : Objetivo y/o Logrado no pueden ser igual a 0');
exit;
end;
end; {try except}



--[Dar es mejor que recibir]--

delphi.com.ar
21-11-2003, 17:08:06
Pues en este caso, yo preferiría hacer una validación previa!

if Table1Objetivo.value = 0 Then
raise Exception.Create('El campo obj....') {O Un ShowMessage}

...

Vl_Produccion := Trunc((Table1Logrado.value / Table1Objetivo.value) * 100);


Saludos!