Publicado el 1 de Octubre del 2020
528 visualizaciones desde el 1 de Octubre del 2020
142,3 KB
12 paginas
Creado hace 22a (08/12/2002)
Programas de Aplicación III
Tema 5. Aplicaciones MDI
Luis Rodríguez Baena y María Dorrego Luxán
Universidad Pontificia de Salamanca (campus Madrid)
Facultad de Informática
1
Aplicaciones MDI
MDI: MultipleDocumentsInterface.
Aplicaciones que disponen de un formulario principal y varios formularios
hijos que aparecen dentro de él.
Formulario padre
(MDIForm)
Formularios hijos
Formularios hijos
minimizados
Universidad Pontificia de Salamanca (campus Madrid)
Facultad de Informática © Luis Rodríguez Baena y María Dorrego Luxán, 2002
2
2
Formulario padre
Control MDIForm
Opción Agregar formulario MDI del menú proyecto.
Sólo puede haber un formulario MDI por apliación.
Sólo pueden contener los controles con interfaz visual intrínsecos
Menu y PictureBox y los controles ActiveX que tengan la propiedad
Align.
Propiedad AutoShowChildren.
Valor lógico que indica si los formularios hijo se muestran
automáticamente al cargar los (valor True, opción predeterminada) o
no.
Universidad Pontificia de Salamanca (campus Madrid)
Facultad de Informática © Luis Rodríguez Baena y María Dorrego Luxán, 2002
3
3
Formularios hijo (I)
Formularios normales que tienen la propiedad MDIChild a
True.
Tamaño de los formularios hijo.
Si la propiedad BorderStyle de un formulario hijo permite que su
tamaño sea ajustable (valor 2) el tamaño del formulario se ajustará
automáticamente al tamaño del formulario padre.
Por omisión, los formularios hijo se posicionarán en cascada
respecto al formulario padre.
Menús.
Cada formulario hijo puede tener su propio menú.
Si un formulario hijo tiene menú, éste se superpondrá al que pueda
tener el formulario MDI.
Universidad Pontificia de Salamanca (campus Madrid)
Facultad de Informática © Luis Rodríguez Baena y María Dorrego Luxán, 2002
4
4
Carga de formularios hijo (I)
Si un formulario hijo es el formulario de arranque de la
aplicación, se cargará automáticamente al arrancarla.
Instrucción Load.
Si el formulario MDI tiene la propiedad AutoShowChildren a True,
sólo será necesaria la orden Load.
Load Form1.
Método Show.
Si el formulario MDI no tiene a True la propiedad AutoShowChildren
es necesario utilizar el método Show.
Los formulario hijo no pueden ser formularios modales.
Universidad Pontificia de Salamanca (campus Madrid)
Facultad de Informática © Luis Rodríguez Baena y María Dorrego Luxán, 2002
5
5
Carga de formularios hijo (II)
Carga de instancias de un formulario.
En ocasiones es necesario cargar varias copias de un formulario
hijo.
Será necesario crear varias instancias del mismo.
Dim numForms As Integer
Private Sub mnuNuevo_Click()
Dim frm As New Form1
numForms = numForms + 1
frm.Caption = "Nuevo" & numForms
frm.Show
End Sub
Universidad Pontificia de Salamanca (campus Madrid)
Facultad de Informática © Luis Rodríguez Baena y María Dorrego Luxán, 2002
6
6
Descarga de formularios (I)
Evento QueryUnload.
Se produce justo antes de producirse el evento Unload y permite
detener la descarga.
Cuando se produce la descarga de un formulario padre, primero se
envía el evento al formulario padre y después a todos los
formularios hijo que estén abiertos.
El evento no se produce cuando se cierra la aplicación con la orden End
o cuando se selecciona Terminar dentro del entorno de desarrollo.
Si ningún formulario hijo cancela la descarga, se envía primero el
evento Unload a los formularios hijo y después al formulario
principal.
Se puede utilizar el evento en los formularios hijo para asegurarse
de que no hay tareas pendientes de ejecutar en los formularios
antes de cerrarlos.
Universidad Pontificia de Salamanca (campus Madrid)
Facultad de Informática © Luis Rodríguez Baena y María Dorrego Luxán, 2002
7
7
Descarga de formularios (II)
Private Sub Form_QueryUnload(cancelar As Integer, modoDescarga As Integer)
Private Sub MDIForm_QueryUnload(cancelar As Integer, modoDescarga As Integer)
Argumento cancelar.
La asignación de cualquier valor distinto de 0 produce la cancelación de la
descarga.
Argumento modoDescarga.
Indica la razón por la que se ha producido el evento.
0 - vbFormControlMenu. El usuario eligió el comando Cerrar del menú Control
del formulario.
está finalizando.
cerrando la aplicación.
1 – vbFormCode.Se invocó la instrucción Unload desde el código.
2 – vbAppWindows. La sesión actual del entorno operativo Microsoft Windows
3 – vbAppTaskManager. El Administrador de tareas de Microsoft Windows está
4 – vbFormMDIForm.Un formulario MDI secundario se está cerrando porque el
formulario MDI también se está cerrando.
5 – vbFormOwner. Un formulario se está cerrando por que su formulario
propietario se está cerrando.
Universidad Pontificia de Salamanca (campus Madrid)
Facultad de Informática © Luis Rodríguez Baena y María Dorrego Luxán, 2002
8
8
Descarga de formularios (III)
Ejemplo: evento QueryUnload de un formulario hijo para
comprobar si el archivo se ha guardado.
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode as Integer)
If Cambio Then ‘Esta variable lógica indica si el archivo ha cambiado
Select Case MsgBox("El archivo no ha sido guardado " & _
"¿Desea guardarlo?", _
vbYesNoCancel, Me.Caption)
Case vbYes
mnuArchivoGuardar_Click
Case vbNo
Exit Sub
Case vbCancel
Cancel = True
End Select
End If
End Sub
Universidad Pontificia de Salamanca (campus Madrid)
Facultad de Informática © Luis Rodríguez Baena y María Dorrego Luxán, 2002
9
9
Referencia a los formulario hijo (I)
Cuando se cargan instancias de un formulario, el nombre
del formulario no sirve para referirse a él.
Propiedad ActiveForm del control MDIForm.
Devuelve una referencia al formulario Activo.
ActiveForm.Text1, haría referencia al control Text1 del formulario
activo.
Se utiliza para referirnos al formulario hijo desde el formulario
padre.
Me.
Hace referencia al formulario actual.
Me.Caption, haría referencia al título del formulario actual.
Se utiliza para referirnos al formulario desde el código del propio
formulario.
Universidad Pontificia de Salamanca (campus Madrid)
Facultad de Informática © Luis Rodríguez Baena y María Dorrego Luxán, 2002
10
10
Referencia a los formulario hijo (II)
Colección Forms.
Hace referencia a todos los formularios abiertos de la aplicación.
El formulario padre sería el de índice 0 si ha sido el primero en
abrirse.
La propiedad Forms.Count indica el número de formularios abiertos.
Universidad Pontificia de Salamanca (campus Madrid)
Facultad de Informática © Luis Rodríguez Baena y María Dorrego Luxán, 2002
11
11
El menú ventana
Propiedad WindowList del control Menu.
En el menú aparece una lista con el título de todos los formularios
hijo.
Método Arrange del control MDIForm.
Organiza los formularios hijo.
Arrange distribución
distribuciónpuede tomar los valores:
0 – vbCascade.
1 – vbTileHorizontal.
2 – vbTileVertical.
4 – vbArrangeIcons
Universidad Pontificia de Salamanca (campus Madrid)
Facultad de Informática © Luis Rodríguez Baena y María Dorrego Luxán, 2002
12
12
Comentarios de: Tema 5. Aplicaciones MDI - Programas de Aplicación III (0)
No hay comentarios