Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Cómo desactivar el evento OnDataChange? (https://www.clubdelphi.com/foros/showthread.php?t=4758)

carlosmari 27-10-2003 16:37:29

Cómo desactivar el evento OnDataChange?
 
Hola !!


¿Cómo se hace para desactivar en un momento dado el evento OnDataChange de un DataSet?

Resulta que estoy insertando registros y en el OnDataChange de mi DataSet tengo ciertas cosas que no quiero que se estén ejecutando hasta tanto no haya terminado de insertar todos mis registros. Inmediatamente, luego de haber terminado mi proceso de inserciones, si necesito que se active.

Trabajo con D7 y dbExpress.

Gracias por la ayuda que puedan darme.

roman 27-10-2003 16:42:49

Puedes poner una "bandera" para indicar que en un momento dado no se debe ejecutar el evento:

Código:

var
  Actualizar: Boolean;

procedure DataSetDataChage(...);
begin
  if Actualizar then
  {
    Código del evento
  }
end;

Y poner Actualizar en false cuando requieras que no se ejecute el evento y restaurarlo a true cuando estés listo para procesar nuevamente el evento.

También puedes simplemente poner a nil el evento antes de las inserciones y reastaurarlo cuando termines:

DataSet.OnChange := nil;
...
DataSet.OnChange := DataSetChange;

// Saludos

carlosmari 27-10-2003 18:59:33

Estuve probando la segunda opción y tengo problemas al compilar ...
Te cuento lo que hago:

DataSource1.OnDataChange := nil; // aquí no tengo problemas
...
...
// cuando quiero volver a activar el evento me salta un error de compilación
DataSource1.OnDataChange := DataSource1.DataSetChange;

¿Cuál es mi error? Creo haber escrito lo que tu me dijiste
('DataSet.OnChange := DataSetChange'). Lo único que cambié es OnDataChange en lugar de OnChange.
Probé varias alternativas pero sigue dándome error de compilación.

Gracias por vuestro apoyo.

roman 27-10-2003 19:09:11

Disculpa, me equivoqué y confundí DataSource con DataSet.

De cualquier forma lo que debes hacer es asignar a DataSource.OnDataChange el evento que durante el diseño le haya asignado, que posiblemente sea DataSourceChange.

// Saludos

carlosmari 27-10-2003 19:43:00

Espectacular !!! Funcionó !!!

Mil gracias por tu ayuda.

Bendiciones para ti.


La franja horaria es GMT +2. Ahora son las 04:12:33.

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