Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problemas al mostrar ventanas de la aplicación (https://www.clubdelphi.com/foros/showthread.php?t=93496)

usuario1000 17-10-2018 22:35:27

Problemas al mostrar ventanas de la aplicación
 
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

Cita:

Empezado por usuario1000 (Mensaje 529051)
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

Código Delphi [-]
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:

Código Delphi [-]
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

Cita:

Empezado por usuario1000 (Mensaje 529051)
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.


La franja horaria es GMT +2. Ahora son las 16:28:29.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi