Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   No cerrar un form abierto hasta que le den click a Cerrar (https://www.clubdelphi.com/foros/showthread.php?t=88463)

jeremiselxi 09-06-2015 20:29:19

No cerrar un form abierto hasta que le den click a Cerrar
 
3 Archivos Adjunto(s)
Buenas tardes Colegas.

Estoy diseñando un pequeño sistema para guardar registros de la productividad del departamento de auditoria ti, pero estoy teniendo la siguiente situación y no se como lo voy a hacer.

Tengo 3 formularios.

form1:=login.

En este form se digitan los datos del usuario para entrar al sistema: ver imagen1.

form2:= pantalla principal.

En este form están todas las opciones que tiene el sistema: ver imagen2.

form3:= modulo auditoria TI.

En este form están las opciones que necesita el departamento de auditoria de TI.

Hasta aquí todo bien.

Mi problema es que si ejemplo doy click al botón "Auditoria TI" ubicado en el form2, este me muestra el form3 mediante un "show", pero si doy clic a cualquier parte del formulario 2, el form3 se oculta detrás del formulario2 ya que este abre en pantalla completa.

Entonces me han pedido que siga en pantalla completa el formulario 2 pero que si abren alguna opción(en este caso el form3) se quede por encima del formulario2 hasta que se cierre ese formulario, pero no quieren que lo haga con showmodal porque a veces ellos quieren abrir un reporte que está en el formulario2 y como el showmodal bloquea todo, no pueden a los reportes.

En este sentido no tengo ni la menor idea de como resolver esto.

Agradecería una mano que me ayude :).

Saludos y gracias de antemano.

ecfisa 09-06-2015 22:30:39

Hola jeremiselxi.

Si interpreté bién la situación, para evitar el ocultamiento de form3, asigna a su propiedad FormStyle el valor fsStayOnTop desde el Object Inspector.

O si lo deseas en tiempo de ejecución:
Código Delphi [-]
procedure TForm3.FormCreate(Sender: TObject);
begin
  FormStyle := fsStayOnTop;
...

engranaje 10-06-2015 15:01:23

El fsStayOnTop de Ecfisa me parece que debería ser la solución a tu problema.

Por aportar algo mas podrias revisar también los valores fsMDIForm y fsMDIChild para la propiedad FormStyle de tus forms.

Según el ejemplo que has puesto prueba a poner a tu form2 la popiedad FormStyle a fsMDIForm mientras que a tu form3 y al resto que cuelguen le pones la popiedad FormStyle a fsMDIChild

Prueba como se comportan. Teniendo que cuenta que he entendido que el form2 tiene que estar a pantalla completa igual te puede servir que tú aplicación sea MDI, de este modo por mas que hagan click sobre el form2 nunca se sobrepondra al form3 ni a ninguno de su forms hijos.

jeremiselxi 10-06-2015 15:53:56

Cita:

Empezado por engranaje (Mensaje 493110)
El fsStayOnTop de Ecfisa me parece que debería ser la solución a tu problema.

Por aportar algo mas podrias revisar también los valores fsMDIForm y fsMDIChild para la propiedad FormStyle de tus forms.

Según el ejemplo que has puesto prueba a poner a tu form2 la popiedad FormStyle a fsMDIForm mientras que a tu form3 y al resto que cuelguen le pones la popiedad FormStyle a fsMDIChild

Prueba como se comportan. Teniendo que cuenta que he entendido que el form2 tiene que estar a pantalla completa igual te puede servir que tú aplicación sea MDI, de este modo por mas que hagan click sobre el form2 nunca se sobrepondra al form3 ni a ninguno de su forms hijos.

Excelente voy a probar ambas formas y les comento en unos minutos.

Gracias de antemano.

Saludos

jeremiselxi 10-06-2015 17:27:31

Cita:

Empezado por ecfisa (Mensaje 493088)
Hola jeremiselxi.

Si interpreté bién la situación, para evitar el ocultamiento de form3, asigna a su propiedad FormStyle el valor fsStayOnTop desde el Object Inspector.

O si lo deseas en tiempo de ejecución:
Código Delphi [-]
procedure TForm3.FormCreate(Sender: TObject);
begin
  FormStyle := fsStayOnTop;
...

Buenos días.

He probado ambas cosas tanto esta que dice ecfisa como lo de engranaje.

Les cuento que el método que propone ecfisa es el que necesito pero pasa lo siguiente, si el form3 en este caso tiene botones que llaman a otros formularios en este caso el form4 por ejemplo, aún cuando le ponga a la propiedad FormStyle := fsStayOnTop al form4, este (el form4) aparece detrás del form3 y lo que necesito es que mientras valla abriendo form, estos se queden abiertos uno detras del otro hasta que lo cierre la persona de lugar.

Pueden darme otra mano por favor^\||/:D.

orodriguezca 11-06-2015 15:46:50

No lo he probado, pero tal vez puedas cambiar el FormStyle al Form3 antes de mostrar el Form4, este sí como fsStayTop.

jeremiselxi 11-06-2015 16:25:41

Cita:

Empezado por orodriguezca (Mensaje 493185)
No lo he probado, pero tal vez puedas cambiar el FormStyle al Form3 antes de mostrar el Form4, este sí como fsStayTop.

Excelente.

Voy a probar y luego le dejo saber.


La franja horaria es GMT +2. Ahora son las 13:06:49.

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