Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > PostgreSQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #2  
Antiguo 24-12-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 19
rgstuamigo Va por buen camino
Arrow

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; // mi mensaje tiene como Identificador WM_MyMENSAJE
// se puede poner cualquier nombre de identificador
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;// obtengo el handle de la aventana Activa
 SendMessage(h,WM_MyMENSAJE,0,0);// mando mi mensaje a la ventana Activa
...
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
    { Private declarations }
 Procedure Capturar_Mensaje(Var msg:TMessage); message WM_MyMENSAJE;// voy a capturar el mensaje WM_MyMENSAJE 
  public
    { Public declarations }
  end;
Y la implementacion asi:
Código Delphi [-]
procedure TForm1.Capturar_Mensaje(var msg: TMessage);
begin
ShowMessage('Ha llegado un mensaje');
{Código para hacer algo cuando recibamos el 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...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
 



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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ayuda para capturar 'Raise Notice' de postgres en delphi 6 o 7. martinartaza Conexión con bases de datos 2 31-08-2011 01:55:37
Formulario activo siempre, y formulacio inicio que desaparezca tras 5 o 6 segundos Petolansa Varios 3 14-12-2007 02:50:25
Conocer Formulario Activo wolfang Varios 1 06-03-2007 07:02:59
Pregunta Interesante: Formulario siempre activo sonjeux Varios 5 10-02-2007 05:17:44
Formulario Activo? buitrago Varios 1 19-09-2003 02:03:16


La franja horaria es GMT +2. Ahora son las 19:13:55.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi