![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Investigando un poco el tema, porque antes no se me había dado esta cuestión, he visto que las únicas diferencias entre un form de tipo fsNormal y fsMDIChild está en el FormStyle y en el Visible. En el caso de formularios modales (fsNormal), el Visible es False, mientras que en los fsMDIChild el visible es true. Esto, que parece una tontería, es la diferencia que hace que no pueda abrirse un formulario no modal como modal.
Si bien, se podría hacer algo del tipo: Código:
with Tform_no_modal.create(self) do
begin
FormStyle:=fsNormal;
Showmodal;
Free;
end;
Si tratamos de poner el Visible:=false antes del FormStyle o después, pero antes del showmodal, se produce el mismo error. Otra alternativa que he probado es a definirme mi propio constructor para la form, de manera que tratemos de poner el estilo y el visible antes del create, de la forma siguiente: Código:
unit formulario_no_modal;
..
constructor crearmodal;
...
constructor TForm_no_modal.crearmodal;
begin
FormStyle:=fsNormal;
Visible:=false;
inherited; // Para construir el resto de los objetos
end;
Un saludo. |
|
#2
|
|||
|
|||
siendo Form1 MDIForm y Form2 MDIChild en tiempo de diseño, a mi este codigo me funciona... |
|
#3
|
|||
|
|||
|
Tienes un error de concepto : no existen forms 'modales' o 'no modales', es segun como se las llama, como te hemos comentado. Ten en cuenta que no se puede llamar modalmente una form MDIChild porque seria ilogico, ya que una MDIChild se supone que es para que existan varias dentro de otra principal, sin ninguna con el foco fijado en ella y sin que ninguna tenga preferencia, y un showmodal es para que una tenga preferencia y foco fijo. Vamos, que los dos conceptos son autoexcluyentes. Pero si cambias la propiedad formstyle...pues ya esta. Ten en cuenta que si esta visible, es ilogico llamar a que se muestre, por lo tanto, las escondemos antes de llamarla.
Última edición por coso fecha: 01-08-2008 a las 12:48:21. |
|
#4
|
||||
|
||||
|
Creo, sur-se, que te estás haciendo demasiados líos con esto. Toma en cuenta que de por sí es raro, al menos visto desde fuera, que una ventana deba mostrarse unas veces como modal y otras como MDIChild, como ya te lo comento coso, las ventanas MDIChild están pensadas para ser no modales.
Ahora, si te fijas en el mensaje #5, comenté que dejaras el formulario como fsNormal de inicio y sólo cuando quisieras mostrarlo como MDChild, le cambiaras el estilo. Alrevés no es tan sencillo, porque si el formulario es MDIChild, automáticamente se va a hacer visible y por ello el error al usar ShowModal. // Saludos |
|
#5
|
|||
|
|||
|
Hola. Gracias a todos por la ayuda.
El problema de hacerlo como roman dice, es decir, ponerlo como Modal (fsNormal) y abrirla como MDIChild cuando lo necesite no lo puedo hacer, por eso he seguido con el tema. El motivo es que tengo más muchos sitios en los que tendría que cambiar la llamada a la pantalla ya que está puesta como mdi child y tendría que hacer los cambios correspondientes, y como el hecho de abrirlo en Modal es sólo para uno o dos sitios, era más sencillo. Probaré lo que me comentais. Gracias de nuevo. |
|
#6
|
|||
|
|||
|
mira, usa esta funcion,
|
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Ventanas Modales Vs Formularios Mdi | ingmichel | Internet | 7 | 04-08-2008 04:41:23 |
| Ayuda sobre gestion de ventanas modales y no modales | Delphius | Varios | 13 | 13-12-2006 05:10:25 |
| Formularios modales | pyanqn | Varios | 10 | 04-11-2005 18:51:35 |
| No puedo Ejecutar Formularios Modales | IcebergDelphi | OOP | 4 | 17-11-2003 09:31:31 |
| Problema con Formularios Modales bajo Citrix Metaframe | sarackganda | Varios | 0 | 04-06-2003 02:47:50 |
|