![]() |
Capturar Raise Notice y enviarlo al formulario activo
Hola que tal, estoy usando los componentes PostgresDac 2.5.5 y quiero capturar los (eventos o mensajes) del postgres el 'Raise Notice' y enviarlo al formulario activo de la aplicación, una vez echo eso, que en cada formulario activo se programe lo que se quiera.
Resumen de lo que tengo: 1 - Modulo de datos con un PSQLDatabase, llamado DB. 2 - Un formulario llamado form1, que tiene un query1, tedit1, tbutton1. 3 - Un formulario llamado form2, que tiene otras cosas. En la base de datos tengo la siguiente funcion
En el formulario 1 tengo. El query1 tiene la siguiente instrucción. select probando(:idprueba) El codigo del button1 es: -------------------------------- Ahora lo que quiero es programar el evento, onnotice del componente DB del modulo de datos para que, envié un mensaje al formulario activo y este lo capte y se produzca un evento que se pueda programar en el formulario. Bueno espero que halla sido claro, estuve tratando de usar el componente application events, pero no se como enviarle un mensaje o string al formulario activo y que este al recibir el mensaje produzca el evento, además no quiero programar al formulario en modo de escucha, quiero que sea por evento. Desde ya muchas gracias. |
Si te estoy entendiendo :rolleyes: 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. 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í: 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: Y la implementacion asi: 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...:) |
Muchisimas gracias.
Hola, recién leo el mensaje, creo que me entendiste a la perfección, es más estoy por implementar herencia visual, y la idea es usar un formulario padre como dices, en general el mensaje del raise notice, es para escribir es un archivo que sirva de auditoria, en caso de que alguna ventana no funcione, sirve mucho en la etapa de desarrollo de nuevas funcionalidades que pide el cliente. Y como va haber distintos tipos de formularios padres por ahí se va a necesitar polimorfismo por eso necesito que el mensaje llegue al formulario activo en caso que se quiera hacer otra cosa con el raise notice.
Desde ya muchas gracias voy a ver si hoy en el horario de trabajo me queda tiempo libre para implementar lo que me dijiste. |
La franja horaria es GMT +2. Ahora son las 06:43:28. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi