Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Activar y desactivar evento BeforePost (https://www.clubdelphi.com/foros/showthread.php?t=53264)

JarLem 15-02-2008 19:07:58

Activar y desactivar evento BeforePost
 
Hola Compañeros del foro...

Tengo un problema con un IBDataSet, me explico, el IBDataSet tiene un evento BeforePost en este evento hago unas validaciones para garantizar la correcta entrada de datos, todo va bien en este sentido, el problema suscede cuando modifico este evento desde un procedure que tengo para una accion en particular en la lo tengo que desactivar.

El procedure es el siguiente:
Código Delphi [-]
procedure TDataModule.Cambio;
begin
      IBDataSet1.BeforePost := Nil;
      IBDataSet1.Edit;
      IBDataSet1.FieldByName('CAMPO_1').Value := IBQuery.FieldByName('CAMPO_1').Value;
      IBDataSet1.Post;
      IBDataSet1.BeforePost := IBDataSet1.BeforePost; // Esta linea aparentemente no hace nada
end;
Cuando se ejecuta este procedure por primera vez realiza lo que se desea, pero cuando intento guardar datos en el IBDataSet ya no se dispara el evento BeforePost de este y no puedo hacer las validaciones descritas, la unica manera que he encontrado para solucionarlo es salir y volver a entrar en la aplicación sin ejecutar el procedure, pero obviamente esto no es practico.

Creo que no es dificil la solución, pero no la se y acudo a ustedes en busca de ayuda ...

Utilizo Delphi 7 y Firebird 2.0

JarLem

gluglu 15-02-2008 19:13:17

Código Delphi [-]
procedure TDataModule.Cambio;
begin
  IBDataSet1.BeforePost := Nil;
  IBDataSet1.Edit;
  IBDataSet1.FieldByName('CAMPO_1').Value := IBQuery.FieldByName('CAMPO_1').Value;
  IBDataSet1.Post;
  IBDataSet1.BeforePost := IBDataSet1BeforePost; 
end;

JarLem 15-02-2008 19:21:58

Listo!!
 
Gracias por la respuesta no se como se me paso, si bien la solución es muy trivial no la sabia y el compilador no me daba ningun error, ahora puedo seguir con mi proyecto

De antemano muchisimas gracias ...

JarLem

Al González 15-02-2008 19:41:13

¡Hola!

Cita:

Empezado por JarLem (Mensaje 266210)
...y el compilador no me daba ningun error...

Te comento que el compilador no te reporta ningún error porque es perfectamente válido asignar a un propiedad de lectura y escritura el mismo valor que ésta ya tiene (en ese caso era Nil). Cabe mencionar que los eventos también son propiedades, sólo que sus valores son de tipo procedimental, es decir, guardan la dirección de memoria donde se encuentra una rutina. A esas rutinas métodos, asignadas a propiedades eventos, se les llama manejadores de eventos. En el ejemplo dado, el método IBDataSet1BeforePost es un manejador de evento.

Saludos.

Al González.


La franja horaria es GMT +2. Ahora son las 20:38:27.

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