Si te estoy entendiendo
bien, pues creo que lo que necesita es crearte tu propio
mensaje de ventana y enviarlo con la Api
SendMessage a la ventana activa;
Para Obtener la ventana activa puedes usar la API
GetActiveWindow que te devuelve el handle de la ventana activa.
Pero para que cualquier Formulario pueda capturar tu "mensaje de ventana personalizado" debes crearte en cada uno, el procedure correspondiente de capturamiento.
Resumiendo y ejemplificando todo lo anterior tenemos :
Primero debemos declararnos un
mensaje de ventana propio, eso lo podemos hacer en cualquier unidad, solo hay que tener en cuenta que dicha unidad va ser usada por todos los formularios de la aplicacion.
Código Delphi
[-]Const
WM_MyMENSAJE=WM_USER+30;
Segundo en el evento
Onnotice del componente DB del modulo de datos, debes enviar el mensaje de ventana que hemos creado, a la ventana activa de la aplicacion más o menos así:
Código Delphi
[-]
...
var h:THandle;
begin
h:=GetActiveWindow; SendMessage(h,WM_MyMENSAJE,0,0);...
end;
Finalmente para que en cualquier ventana nos demos cuenta que ha llegado el mensaje
WM_MyMENSAJE pues debemos crearnos el procedimiento(Procedure) que capture el momento de recibir nuestro mensaje de ventana( en nuestro caso es WM_MyMENSAJE), entonces nos nos queda de otra que crearnos dicho procedimiento
en todos y cada uno los formularios de la siguiente manera:
Código Delphi
[-]....
private
Procedure Capturar_Mensaje(Var msg:TMessage); message WM_MyMENSAJE; public
end;
Y la implementacion asi:
Código Delphi
[-]procedure TForm1.Capturar_Mensaje(var msg: TMessage);
begin
ShowMessage('Ha llegado un mensaje');
...
...
end;
Quizás algunos dirán: "Pero es muy laborioso crear éste procedimiento cuando son muchos formulario", pues en ese caso se podría crear un
formulario Padre que implemente dicho procedure y todos los otros
heredar de él. Eso debería funcionar ya que los formulario hijos ya heredan la implementacion del capturamiento de nuestro mensaje.
Espero haberte podido ayudar.
Saludos...