Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   ¿como abortar ejecución de eventos? (https://www.clubdelphi.com/foros/showthread.php?t=32458)

pjjorda 06-06-2006 20:06:49

¿como abortar ejecución de eventos?
 
Saludos,
uso Delphi7.
exposición:
1)tengo un Dbedit y en el evento Onexit verifico la integridad del dato introducido y varias cosas más.
2)en el evento Onkeydown del formulario controlo la pulsación de varias teclas de función que hacen varias cosas.
3)si pulso la tecla F4, primero corre el Onkeydown en el que mando el foco a otro Dbedit y luego el Onexit del Dbedit anterior.

¿que poner en el onkeydown para que no se llegue a ejecutar el onexit?

Seguramente es una pregunga chorra, pero favor de contestarme.
Gracias por anticipado.

maeyanes 06-06-2006 20:13:07

Una opción sería:

Código Delphi [-]
procedure TForm1.OnKeyDown({...});
begin
  // ...
  // DBEdit que no quieres que ejecute el evento OnExit...
  DBEdit.OnExit := nil
end;

Claro, que luego tendrías que volver a asignar el manejador de evento al DBEdit para que vuelva a funcionar como se espera.

Otra opción sería la de tener un condicional en el evento OnExit, el cual se ejecute solo cuando ocurra algo que desees:

Código Delphi [-]
priocedure TForm1.DBEditOnExit(Sender: TObject);
begin
  if TalCondicion then
  begin
    // Código que desees que se ejecute o no de acuerdo a la condición...
  end
end;

Espero que te sirva de algo...



Saldos...

pjjorda 06-06-2006 20:24:55

Gracias
 
Gracias por tu prontísima respuesta.
La segunda opción es la que estoy usando hasta ahora.

La primera opción me parece más práctica en principio,
pero ¿como se vuelve a activar el onexit?

Yo esperaba que hubiera una especie de Abort o Exit para cancelar los eventos pendientes.
Gracias.

maeyanes 06-06-2006 20:30:20

Para volver a asignar un evento por código:

Código Delphi [-]
DBEdit.OnExit := DBEditOnExit;

Ahora, si bien existe un exception Abort, no se si se pueda usar para estos fines...

También tienes el uso del Exit que se puede usar con la segunda forma que te comente:

Código Delphi [-]
procedure TForm1.DBEditOnExit(Sender: TObject);
begin
  if TalCondicion then
    Exit;
  // Código que deseas ejecutar si no se comple la condición de salida...
end;

Saludos...

pjjorda 06-06-2006 20:38:19

Gracias de nuevo,

al ejecutar DBEdit1.OnExit := DBEdit1OnExit;
obtengo:
[Error] : Undeclared identifier: 'DBEDIT11ONEXIT'
algo no hago bien.

pjjorda 06-06-2006 20:59:59

He creado una variable tipo Dbedit, a la que copio Dbedit1 al abrir el form.
y luego le paso a dbedit1 el evento Onexit cuando es necesario.

Repito muchas gracias Maeyanes.


La franja horaria es GMT +2. Ahora son las 11:14:13.

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