Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Traer formulario principal al frente (https://www.clubdelphi.com/foros/showthread.php?t=83958)

drykea 21-08-2013 14:45:39

Traer formulario principal al frente
 
Hola a tod@s,

Tengo una aplicacion con dos forms, el principal y uno auxiliar, los dos tienen el formStyle=fsNormal.
El segundo lo muestro usando Show (no ShowModal)

En mi aplicion, llamo al form auxiliar desde el principal (una o varias veces, esto funciona bien), el problema es que una vez que tengo el form auxiliar abierto, el principal siempre se queda detrás del auxiliar y no sé por qué. ¿Es el comportamiento normal (yo creo que no, pero bueno)?

Lo que quiero es poder ir pasando de uno a otro indistintamente y cuando pinche en uno este se ponga al frente, ya he probado con:
Código Delphi [-]
 fPrincipal.BringToFront;
Tanto en el evento OnClick y como en el OnActivate del principal y nada.
¿os a pasado alguna vez? ¿Se os ocurre que puede ser?.

Como siempre ¡Gracias de antemano!

ecfisa 21-08-2013 17:03:24

Hola drykea.

Si como comentas en tu mensaje, las propiedades FormStyle estan en fsNormal, el form auxiliar mostrado con el método Show y ambos se visualizan, no haría falta siquiera llamar al método BringToFront. Bastaría con darle el foco mediante un click a cualquiera para que este pasara al frente.

Lo que sí podría estar pasando, si el form secundario es lo suficientemente grande para ocultar al principal, es que no pudieras acceder a este para darle el foco por estar oculto.

Saludos. :)

drykea 22-08-2013 11:04:28

Gracias por responder.

El segundo formulario es grande, pero no cubre toda la pantalla, de hecho puedo ver parte del formulario principal detras del auxiliar. Además puedo mover el formulario por la pantalla (no está maximizado) y mostrar el formulario principal completo, pero sigue estando detras del principal, es como si el auxiliar estuviera como modal, pero sin estarlo :confused:

No se me ocurre que puede pasar, si a alguien se le ocurre algo más???

Jais 22-08-2013 13:59:18

Hola drykea

Quizas la api SetWindowsPos te pueda ayudar.

"Mantenerlo por encima":

Código Delphi [-]
SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE)

Quitar "Mantenerlo por encima":

Código Delphi [-]
SetWindowPos(Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);

Saludos


La franja horaria es GMT +2. Ahora son las 13:27:09.

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