Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   TDataSetNotifyEvent (https://www.clubdelphi.com/foros/showthread.php?t=5880)

tango01 09-12-2003 14:34:42

TDataSetNotifyEvent
 
hola gente, necesito deshabilitar el evento onCalcFields de un dataset momentaneamente.

para lo cual hice lo siguiente:

Código:

...
var
  p : TDataSetNotifyEvent;
begin
...
p:= dataset.OnCalcFields;
dataset.OnCalcFields := nil;
...
// calculos con los campos
...
dataset.OnCalcFields := p;
dataset.OnCalcFields(dataset);
dataset.Post;
...

esto funciona bien, siempre y cuando el evento onCalcfields del dataset este definido, sino da un error de access violation.

para lo cual le encontre una solucion un poco sucia:

Código:

...
var
  p : TDataSetNotifyEvent;
begin
...
p:= dataset.OnCalcFields;
dataset.OnCalcFields := nil;
...
// calculos con los campos
...
dataset.OnCalcFields := p;
dataset.Post;
dataset.Edit; // con el edit y el post se ejecuta el evento
dataset.Post; //  onCaclfield sin errores aunque no este definido
...

Mi pregunta es, hay alguna forma más ortodoxa de hacer esto, es decir, como puedo saber de antemano si el evento onCalcFields esta definido en el objeto.

gracias por su ayuda

fede.-

Argentina.-

tango01 09-12-2003 15:08:48

me retracto, la solucion sucia no funciona.

peor aun. :(

tango01 09-12-2003 16:12:52

SOLUCION:
Código:

...
var
  p : TDataSetNotifyEvent;
  pt : pointer;
begin
...
p:= dataset.OnCalcFields;
pt := @dataset.OnCalcFields;
dataset.OnCalcFields := nil;
...
// calculos con los campos
...
dataset.OnCalcFields := p;
if pt <> nil then
        dataset.OnCalcFields(dataset);
...



La franja horaria es GMT +2. Ahora son las 20:30:19.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi