Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-12-2003
tango01 tango01 is offline
Miembro
 
Registrado: jun 2003
Ubicación: Mar del Plata - Argentina
Posts: 46
Poder: 0
tango01 Va por buen camino
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.-
__________________
El secreto de la libertad está en no tener miedo.
Responder Con Cita
  #2  
Antiguo 09-12-2003
tango01 tango01 is offline
Miembro
 
Registrado: jun 2003
Ubicación: Mar del Plata - Argentina
Posts: 46
Poder: 0
tango01 Va por buen camino
me retracto, la solucion sucia no funciona.

peor aun.
__________________
El secreto de la libertad está en no tener miedo.
Responder Con Cita
  #3  
Antiguo 09-12-2003
tango01 tango01 is offline
Miembro
 
Registrado: jun 2003
Ubicación: Mar del Plata - Argentina
Posts: 46
Poder: 0
tango01 Va por buen camino
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);
...
__________________
El secreto de la libertad está en no tener miedo.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 07:55:26.


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
Copyright 1996-2007 Club Delphi