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.