Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Como usar el ApplicationEvents ? (https://www.clubdelphi.com/foros/showthread.php?t=5457)

Raptor 21-11-2003 15:59:50

Como usar el ApplicationEvents ?
 
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:
Cita:

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!

Código:

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

  ...

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

Saludos!


La franja horaria es GMT +2. Ahora son las 18:48:14.

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