You are on page 1of 2

QU ES MDI?

Visual Basic permite crear aplicaciones empleando una interfaz de mltiples documentos (MDI -
Multiple Document Interface), o dicho en trminos de Visual Basic, mltiples formularios. En
una aplicacin MDI, se pueden abrir varias ventanas hijas. Cada una de estas ventanas hijas
(formularios) son iguales entre s. En una aplicacin MDI pueden haber varias ventanas hijas,
pero solo una ventana padre por aplicacin. El formulario padre acta como contenedor de los
formulario hijo. Muchos procesadores de textos bajo Windows son buenos ejemplos de
aplicaciones MDI.
Para crear una aplicacin MDI se empezar a crear un nuevo proyecto y, se accede
a Insert/MDI Form. El nuevo formulario ser el formulario padre. Para que un formulario sea
un formulario hijo, se deber cambiar su propiedadMDIChild y establecerla a True.
Cuando se visualizan varios formulario hijos, todos comparten el mismo cdigo, pero cada uno
de ellos guarda sus propios datos y reconoce sus propios sucesos. Segn sto, no se podr
utilizar el identificador del formulario para referirse a los controles o a sus propiedades, aunque
s se podr utilizar la palabra clave Me.
6.2.- COMPORTAMIENTO DE MENS Y BARRAS DE HERRAMIENTAS

Los nicos controles que se pueden incluir en un formulario padre son aquellos que
tengan la propiedad Align y, dentro de stos controles se podrn colocar otros
controles. De esta forma se crean las barras de herramientas.
Los mens de cada formulario hijo, son visualizados en el formulario padre. Cada vez
que se activa un formulario hijo, su men sustituye al men que se est visualizando
en el formulario padre. Ahora bien, si no hay un formulario hijo cargado, o si dicho
formulario no tiene men, entonces se visualiza el del padre, si lo tiene.
Es aconsejable que el formulario padre tenga un men que permita abrir o crear un
nuevo formulario hijo.
6.3.- EVENTO QUERYUNLOAD

Cuando el usuario ejecuta la orden Cerrar del men de control del formulario padre,
Visual Basic intenta descargar dicho formulario. Esto hace que se d el
suceso QueryUnload primero para el formulario padre y luego para cada uno de los
hijos.
Cuando el usuario ejecuta la orden Cerrar del men de control del formulario hijo
tambin se da el suceso QueryUnload pero solo para este formulario.
La sentencia Unload permite descargar un formulario o un control de la memoria,
pero antes de que el formulario sea descargado, se da el suceso QueryUnload,
seguido del suceso Unload. El suceso QueryUnloadpara un formulario MDI va
seguido del suceso QueryUnload para cada uno de los formularios hijo.
EJEMPLO:
Vamos a construir una aplicacin que permita crear varios formularios
hijo. Para ello, se necesitar crear un nuevo proyecto con un formulario
MDI y, un formulario hijo, al que se le haya establecido su
propiedad Caption a Formulario Hijo y su propiedad Name a frmHijo. Al
formulario padre se le aadir un men Archivo con los
comandos Nuevo y Salir. Se aadir el men Ventana con la
propiedad Window List activada y, con las opciones Cascada,
Mosaico y Organizar iconos. Tambin se le aadir un control 3D panel,
seleccionando Tools/Custom Controls. A dicho control se le modificar
las propiedades Align con 2 - Align Bottom, BevelInner con 1 -
Inset,BevelWidth con 2 y, BordeWidth con 2. Dentro de este control
se aadirn dos etiquetas: lblTexto y lblContador.
En un nuevo mdulo:
Public Contador As Integer
En el formulario padre:
Private Sub mnuArchivoNuevo_Click()
Dim X As New frmHijo
Contador = Contador + 1
X.Show
End Sub
Private Sub mnuArchivoSalir_Click()
End
End Sub
Private Sub mnuVentanaCascada_Click()
MDIForm1.Arrange 0
End Sub
Private Sub mnuVentanaMosaico_Click()
MDIFomr1.Arrange 1
End Sub
Private Sub mnuVentanaOrganizar_Click()
MDIFomr1.Arrange 3
End Sub
Private Sub MDIForm_Initialize()
Contador = 0
lblContador = Str(Contador)
End Sub
En el formulario hijo:
Private Sub Form_Initialize()
Me.Caption = Me.Caption & " #" & Str(Contador)
MDIForm1.lblContador = Str(Contador)
End Sub
Private Sub Form_Unload(Cancel As Integer)
Si el valor de Cancel es True, el formulario asociado no se descarga.
En otro caso, se van cerrando primero cada hijo y, por ltimo el padre.
Contador = Contador - 1
MDIForm1.lblContador = Str(Contador)
End Sub
EJERCICIOS:
Modificar la aplicacin "Editor de Texto" para permitir trabajar con ms de un
documento. El formulario padre deber tener un men Archivo con las
opciones de Nuevo, Cerrar, Abrir, Guardar, Guardar Como, Salir. (Ya se ver
cmo Abrir y Guardar archivos).
1. Modificar el ejercicio anterior para que la barra de estado se muestre en la
parte superior y aparezcan los iconos de Cortar, Copiar, Pegar del directorio
...toolbar3open-up.bmp, ...toolbar3save-up.bmp, ...toolbar3cut-up.bmp,
...toolbar3copy-up.bmp, ...toolbar3pste-up.bmp, ...toolbar3open-mds.bmp,
...toolbar3save-mds.bmp, ...toolbar3cut-mds.bmp, ...toolbar3copy-mds.bmp,
...toolbar3pste-mds.bmp,

You might also like