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.-