PDA

Ver la Versión Completa : Problemas al mostrar ventanas de la aplicación


usuario1000
17-10-2018, 22:35:27
Buenas noches,



Ante todo dar las gracias por vuestra ayuda desinteresada.


Tengo una aplicacion hecha en la que todos los formularios las abro en "ShowModal" es decir, que hasta que no se cierra dicho formulario no deja interactuar con el anterior que lo llamó. Pues bien, tengo el formulario principal.showmodal, este llama a otro formulario que se llama seleccioncriterios.showmodal y cuando elijo los criterios y le doy a "aceptar" se llama a otro formulario con una tabla donde muestra los resultados(resultados.showmodal). Pues ocurre que muchas veces el formulario donde se muestran los resultados aparece por detrás de la ventana de "seleccioncriterios.showModal" que es la que le precede y que deberia quedar por detrás.


No siempre actua así, pero sí bastantes veces, con lo que el usuario pincha en la ventana que se muestra "seleccionCriterios.Showmodal" y lógicamente no hace nada, puesto que la activa es la ventana de los resultados y que queda por detras de la selección de criterios, creando desconcierto en el usuario.


A alguien se le ocurre alguna cosa de por qúe actua así los formularios si voy abriendolos siempre en "showModal" para que una ventana siempre quede encima de la otra y no deje tocar la anterior hasta que se cierra la ventana activa.


Perdón por el tocho.


Gracias a todos.

CarlosReyesg
18-10-2018, 02:48:11
Buenas noches,



Ante todo dar las gracias por vuestra ayuda desinteresada.


Tengo una aplicacion hecha en la que todos los formularios las abro en "ShowModal" es decir, que hasta que no se cierra dicho formulario no deja interactuar con el anterior que lo llamó. Pues bien, tengo el formulario principal.showmodal, este llama a otro formulario que se llama seleccioncriterios.showmodal y cuando elijo los criterios y le doy a "aceptar" se llama a otro formulario con una tabla donde muestra los resultados(resultados.showmodal). Pues ocurre que muchas veces el formulario donde se muestran los resultados aparece por detrás de la ventana de "seleccioncriterios.showModal" que es la que le precede y que deberia quedar por detrás.


No siempre actua así, pero sí bastantes veces, con lo que el usuario pincha en la ventana que se muestra "seleccionCriterios.Showmodal" y lógicamente no hace nada, puesto que la activa es la ventana de los resultados y que queda por detras de la selección de criterios, creando desconcierto en el usuario.


A alguien se le ocurre alguna cosa de por qúe actua así los formularios si voy abriendolos siempre en "showModal" para que una ventana siempre quede encima de la otra y no deje tocar la anterior hasta que se cierra la ventana activa.


Perdón por el tocho.


Gracias a todos.

no me queda claro lo que describes...!!!
puedes hacerlo alterando el orden de mostrar los formularios
puedes usar el API de Windows
en el evento Create de formulario
copia este código


SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NoMove or SWP_NoSize);


saludos

orodriguezca
18-10-2018, 05:24:02
A veces ocurre que el formulario que ejecuta el método Showmodal recibe algún mensaje de Windows justo antes de que se visualice la nueva ventana y por eso se muestra encima de todas las demás. Una forma de evitar este efecto es desactivando la ventana invocadora:


procedure TForm2.Button1Click(Sender: TObject);
begin
Self.Enabled := False;
try
Form3.ShowModal;
finally
Self.Enabled := True;
end;
end;


También puede ser que alguno de tus formularios tenga establecida la propiedad FormStyle a fsStayOnTop; Esto afecta el orden de visualización de las ventanas y bajo ciertas circunstancias puede generar el efecto que mencionas.

Neftali [Germán.Estévez]
18-10-2018, 11:52:21
Tengo una aplicacion hecha en la que todos los formularios las abro en "ShowModal"

Creo que no es un comportamiento "normal", aunque lo normal siempre depende de las circunstancias.
Si puedes cambiarlo, yo pensaría en variarlo porque no es estandard y puede provocar cosas "raras" como las que te pasan.



Si por lo que sea no puedes cambiarlo, tendrás que controlarlo, tal vez manteniendo en memoria una lista de ventanas abiertas y controlar tú manualmente el orden en pantalla de cada una de ellas.

usuario1000
18-10-2018, 23:03:46
Gracias a todos por las aportaciones.
Me pongo a trabajar en ello, a ver si lo soluciono, con vuestros consejos.
Un millón de gracias.