Formularios MDI
MDI: Definición:
MDI significa en inglés Múltiple Document Interfaz y en español Interfaz de múltiples documentos y sirve para desplegar varios formularios a partir de un Formulario principal.
La contraparte del MDI, es el SDI que es un Single Document Interfaz, es decir, cuando el proyecto es un solo formulario o única interfaz.
En un MDI hay un formulario principal ó formulario Padre que contendrá a los formularios secundarios o formularios hijos.
En este libro se enseñan dos métodos usando dos ejemplos para crear MDI y ambos tienen igual resultado.
Ejercicio MDI
- Abra Visual Basic para crear un nuevo proyecto y asígnele el nombre Formulario MDI
- Al formulario que se despliega cámbiele la propiedad Name a FrmPrincipal
Y la propiedad IsMdiContainer cámbiela a True
Con la acción anterior, le da la categoría de Padre al formulario principal.
Al hacer esto, el formulario se vuelve de un color más oscuro que el tradicional.
- Agregue los formularios hijos dando clic derecho en el proyecto Formulario MDI en el Explorador de soluciones
Y se desplegará el siguiente menú contextual.
- Elija Agregar Windows Forms
Luego se mostrará la siguiente ventana ya conocida por usted, en donde después de seleccionar Windows Forms, le da clic en Agregar; pero antes debe elegir el nombre del nuevo formulario; En este ejemplo déjelo como está, Form1.Vb que dicho sea de paso en la siguiente imagen aparece como Form4.Vb por que es el tercer formulario que se agrega al proyecto.
Observe que en el explorador de soluciones ya aparece el formulario agregado.
- Agregue otro formulario al proyecto pero para conocer otra forma de hacerlo, hágalo desde el menú Proyecto ---> Agregar Windows Forms…
Agregue un formulario más, usando uno de los dos métodos que se han explicado en este libro.
- Asegúrese que la propiedad IsMdiContainer de los formularios 2,3 y 4 esté en False y la del formulario uno en True. Esto permitirá que los primeros queden como contenido (hijos) y el segundo como contenedor (padre)
- Con el Formulario 1 desplegado, agregue un control Menú Strip y configúrelo (ya sabe como) para que quede como en la siguiente imagen.
Al dar clic en los menús correspondientes se mostrarán los formularios 2,3 y 4. El formulario uno no se programó en el menú por que es el formulario contenedor o principal.
- Dé doble clic en la pestaña del menú Formulario 2 para abrir el editor de código, y escriba las siguientes instrucciones.
Form2.Show()
- Clic en la pestaña Formulario 3 y escriba en el editor de código lo siguiente: Form3.show() y en la pestaña Formulario 4 al abrir el editor de código, escriba la siguiente instrucción: Form4.show()
El código completo quedará así:
- Antes de probar el programa y para diferenciar los formularios configure la propiedad BackColor del formulario 2 en Rojo, del formulario 3 en Azul y la del Formulario 4 en Aqua.
- Amplié el tamaño del Formulario 1 para que sea el más grande, por que recuerde que es el formulario contenedor.
- Por último configure la propiedad StartPosition de todos los formularios en CenterScreen lo que hará que al ejecutar el programa los formularios aparezcan en el centro del monitor.
- Ejecute el programa y observe los resultados al dar clic en los menús correspondientes.
Si todo le salió bien, entonces guarde todo el proyecto, sino, pues revise para ver si hizo todos los pasos anteriores o identificar cualquier error.
A continuación haremos otro ejercicio en donde se crea un formulario múltiple pero usando otro método.
Ejercicio MDI
- Cree un nuevo Proyecto y asígnele el nombre MDI Pictures
- Clic derecho en el proyecto, en el explorador de soluciones o en el menú proyecto y seleccione Agregar nuevo elemento y se abrirá la ventana como la de la imagen siguiente, en donde elegirá Formulario primario MDI
- Al seleccionarlo, observe que al proyecto se agregó un formulario con menús predeterminados…
- Dé clic derecho en cada uno de los menús y elimínelos o bórrelos por que lo comenzaremos de nuevo.
El formulario quedará más o menos así:
- Dé clic en el área más clara del formulario para que se muestre la casilla de escritura del título del menú.
- Cree 5 menús como en la siguiente imagen…
- Ahora ejecute el programa y verá que le genera una excepción ó error; Es por que quedó el código sin utilizar de los menús predeterminados que eliminamos.
- En el editor de código elimine las sentencias siguientes...
Como ve, no es difícil identificar donde está el error por que el programa nos lo dice, marcando con líneas azules las sentencias erróneas, pero en este caso borre toda la sección, por que no se utilizará.
- Cuando hay varios formularios en un proyecto es necesario decirle al programa con que formulario iniciará cuando el usuario abra la aplicación; En el menú Proyecto seleccione Propiedades…
- En la ventana que se despliega, Asegúrese que está seleccionado el Submenú Aplicación y si no es así, entonces dé clic en Aplicación…
- Después de dar clic en Aplicación se abre la siguiente pantalla en donde debe buscar donde dice formulario de inicio y dar clic en la pestaña para abrir una ventanita donde están todos los formularios del proyecto actual.
- Como lo que se desea es que a partir del formulario principal o padre, acceder a los otros formularios, entonces seleccionemos MDIParent1
- Ahora vuelva al IDE y en cada opción del menú del formulario principal escriba el código correspondiente.
- El código que escribirá entre Private Sub y End Sub de cada menú es el siguiente.
Form1.MdiParent = Me
Form1.Show()
Lo que irá cambiando será el número del formulario: Form2.Show(), Form3.Show, etc.
Este código es para el menú 1 y escribirá lo mismo para el formulario 2,3 y 4
La primera línea es para que el formulario hijo se abra en una ventana dentro del formulario principal. Puede no colocar la instrucción Form1.MdiParent = Me y el programa siempre se ejecutará, pero el resultado será que el formulario hijo se abrirá con sus bordes fuera del formulario principal.
Pruebe ambas formas para ver la diferencia.
- Si ejecuta el programa en este momento, los formularios aparecerán vacíos, pero puede agregar un control PictureBox y como ya se le explicó elija una imagen de las que tiene en su PC para cada formulario que no sea el Principal.
- Configure la propiedad Dock del PictureBox en Fill para que la imagen se muestre en todo el formulario.
- En este ejercicio, se eligieron imágenes de acuerdo a los recursos disponibles en la pc del autor.
Explore cada menú y según el menú elegido se mostrarán formularios diferentes pero siempre dentro del formulario Principal.
Ya es hora de guardar el proyecto o continuar haciendo pruebas. Total, eso depende de su tiempo, motivación y entusiasmo.