Ver Mensaje Individual
  #3  
Antiguo 21-11-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Reputación: 26
seoane Va por buen camino
Le he estado dando vueltas al asunto, y se me ha ocurrido algo sencillo, aunque no se si te servirá. Defines un nuevo mensaje WM_ACTUALIZAR y en todas las ventanas interceptas ese mensaje. Dentro del procedimiento que trata ese mensaje pones todo lo necesario para actualizar la ventana, de este modo cuando quieras actualizar solo tienes que mandar ese mensaje a todas las ventanas abiertas. Solo necesitaras la API SendMessage, así que no tendrás problema en llamarla desde cualquier unit.

Es solo una idea, ahora quedaría saber el handle de todas las ventanas, aunque no creo que sea difícil averiguar el handle de las ventanas hija, o en ultimo caso llevar una lista.

EDITO:

Añado un ejemplo de lo que quiero decir. En este ejemplo todos los hijos interceptan el mensaje de la misma forma, pero cada uno podría interpretarlo como quisiera, además si algún formulario no lo interceptara no pasaría nada, simplemente seria ignorado.

EDITO 2:
En el ejemplo para mandar el mensaje a todos los formularios hago esto:
Código Delphi [-]
for i:= 0 to frmMain.MDIChildCount - 1 do
   SendMessage(frmMain.MDIChildren[i].Handle,WM_ACTUALIZAR,0,0);

Pero se me ocurre otra forma que todavía hace mas independiente cada formulario del resto:
Código Delphi [-]
for i:= 0 to Screen.FormCount - 1 do
   SendMessage(Screen.Forms[i].Handle,WM_ACTUALIZAR,0,0);


PD: Como Lepe no responda rápido, seguro que va a haber un "EDITO 3"
Archivos Adjuntos
Tipo de Archivo: zip Lepe.zip (6,1 KB, 20 visitas)

Última edición por seoane fecha: 21-11-2006 a las 15:46:57.
Responder Con Cita