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"
