Ver Mensaje Individual
  #1  
Antiguo 09-05-2007
Flecha Flecha is offline
Miembro
 
Registrado: nov 2006
Posts: 59
Reputación: 18
Flecha Va por buen camino
Question Prioridad de ejecución de eventos

Tengo un caso algo complejo de explicar. Así que primero expondré la pregunta y luego intentaré exponer el caso concreto.

La pregunta:
Tengo un TDataSet cualquiera (TTable o TQuery), y dos TDataSource que están enlazados a dicho TDataSet. También tengo programados los eventos OnDataChange de sendos TDataSource.
¿Existe alguna manera que forzar a que siempre se ejecute un OnDataChange antes que el otro?

Mi problema en concreto:
Me he creado una clase cuya finalidad es calcular el valor de una serie de campos calculados de forma centralizada en toda la aplicación. El equivalente a esto habría sido poner un montón de campos calculados en muchísimos TTable y TQuery, y repetir en todos los eventos OnCalcFields el mismo ritual de cálculo de todos esos campos, ya que las fórmulas serían siempre las mismas.
En su lugar he optado por crearme una clase que contiene un TDataSource y un TQuery. El TDataSource lo enlazo con TDataSet's externos a la clase, y el TQuery lo enlazo al TDataSource. Así consigo una relación "maestro-detalle" en la que el "maestro" es el TDataSet externo. El TQuery interno es el encargado de realizar los cálculos de campos calculados, y más cosas.
Todo me va perfecto excepto en una cosa. En ocasiones, el TDataSet externo tiene otro TDataSource relacionado a él, aparte del contenido en mi clase. En esos casos necesito que siempre se ejecute el evento OnDataChange del TDataSource de mi clase antes del OnDataChange del TDataSource externo a mi clase, pero por lo general sucede siempre al revés.

¿Alguna idea?
Responder Con Cita