Ver Mensaje Individual
  #1  
Antiguo 30-10-2015
briast briast is offline
Miembro
NULL
 
Registrado: may 2011
Posts: 50
Reputación: 13
briast Va por buen camino
Ocultación de pantallas modales en Windows 7

Hola. Tengo un problema "absurdo" con una aplicación desarrollada en Delphi 2010 ejectuándose en Windows 7 y superiores. Las pantallas (forms) modales a veces se quedan detrás de otras, especialmente detrás de pantallas no modales. Es algo extraño pues en Windows XP / Vista no ocurría.

No pasa siempre y no he conseguido reproducir ninguna pauta en la que ocurra, pero ocurre. A veces, abres una pantalla modal (con showmodal) desde una pantalla no modal (mdi) y se queda oculta detrás, cuando debería ser la pantalla principal. Incluso entre diferentes equipos instalados con Windows 7, en algunos pasa más que en otros.

He estado buscando por internet diferentes soluciones, como por ejemplo aquí, pero ninguna ha surtido efecto. Lo último que he puesto la pantalla modal es este código:

Código:
procedure TForm1.CreateParams(var params: TCreateParams);
begin
  inherited;
       try
          params.WndParent := Screen.ActiveForm.Handle;
       except
        params.WndParent := 0;
       end;

       if (params.WndParent <> 0) and (IsIconic(params.WndParent)
         or not IsWindowVisible(params.WndParent)
         or not IsWindowEnabled(params.WndParent)) then
         params.WndParent := 0;

       if params.WndParent = 0 then
         params.WndParent := Application.Handle;
end;
Por lo que he leído esta cuestión tiene que ver con la gestión de las pantallas en Windows 7 y que no permite controlar el zindex de las mismas (supongo que por el tema de los virus o adware) para evitar que controlen quien se pone en primer plano.

¿Alguien sabe como solucionarlo o tiene alguna sugerencia?
Gracias por vuestra ayuda.
Responder Con Cita