PDA

Ver la Versión Completa : Multiples Ventanas en una Aplicacion


Nomad
18-05-2007, 20:38:51
Hola

Deseo tener una aplicacion y poder abrir varias ventanas dentro de la misma aplicacion y pasarme de una otra. Creo que es una aplicacion MDI o algo, en fin cualquier contribucion es bien recibida y se los agradezco de antemano...\

Saludos desde CR

dec
18-05-2007, 20:50:42
Hola,

Puedes empezar por:


File -> New -> Other... -> Projects -> MDI Application


O, sencillamente, iniciar un nuevo proyecto:


File -> New -> Application


...y dando a la propiedad "FormStyle" del formulario principal el valor "fsMDIForm". Al resto de formularios (que añadas) a la aplicación cámbiales también la propiedad "FormStyle" a "fsMDIChild".

Nomad
18-05-2007, 20:59:16
Eso hice, pero entonces me abre automaticamente las ventanas, pero yo quiero que uno abra la ventana que desee y no automaticamentes...

dec
18-05-2007, 21:02:50
Hola,

No puedes ocultar (Visible:=False) formularios "MDI", pero, puedes impedir que se creen cuando se crea la aplicación. Quiere decirse que en cuento se crea un formulario MDI este pasa a ser mostrado, empero, hasta que el formulario no se crea, evidentemente no se muestra.

Echa un vistazo en el archivo del proyecto "*.dpr" y probablemente veas algo como esto:


begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
//Application.CreateForm(TForm2, Form2);
Application.Run;
end.


Pues bien, la línea que he comentado puedes y aun debes borrarla, de modo que no se cree el formulario de turno, y por tanto no se muestre.

Nomad
18-05-2007, 21:39:04
Y no hay forma de poder cerrar esa ventana una vez que esta abierta?

dec
18-05-2007, 21:46:54
Hola,

¿El formulario hijo? Claro que sí, hombre. Puedes usar su método "Close". En el evento "OnClose" correspondiente tienes que dar un valor al parámetro "Action" que se te pasa por referencia: "caFree", me parece, para "ocultar" el formulario.

PD. No puedes ocultar un formulario "MDI", así que con "caFree" lo liberas al cerrarse, de modo que tendrás que crearlo cuando vayas a mostrarlo de nuevo.

Nomad
18-05-2007, 22:07:46
Listo! muchas gracias!

jcarteagaf
18-05-2007, 22:12:28
Yo hago lo siguiene

if frmventanaHija = nil then
frmVentanaHija := TfrmVentanaHija.Create(Application);
frmVentanaHija.Show;

En el evento Onclose de la ventanaHija coloco:

Action := caFree;
frmVentanaHija := nil;

Espero que te ayude