Date post: | 25-Jul-2015 |
Category: |
Documents |
Upload: | willfrank89 |
View: | 117 times |
Download: | 5 times |
ProgramaciónProgramación VisualVisual IIIngeniería en Telemática
Tema 7: Interfaz para Múltiples
Universidad Nacional Autónoma de Nicaragua
León, Nicaragua
Tema 7: Interfaz para Múltiples
Documentos
Ing.Ing. Denis Leopoldo Espinoza HernándezDenis Leopoldo Espinoza Hernández
Pre-requisito: Programación Orientada a Objetos
Créditos: 4
Semestre: 6to
Contenidos
� Aplicaciones MDI
� Creación de un formulario padre
� Creación de formularios hijos
� Organización de formularios hijos
� Fusión de menús de los formularios padre e hijo
� Obteniendo el formulario hijo activo� Obteniendo el formulario hijo activo
� Bibliografía
Programación Visual I
Ingeniería en Telemática2
Aplicaciones MDI
En las aplicaciones Windows existen varios estilos de interfaz de usuario:
1. Interfaz de documento único (SDI – Single Document Interface)
2. Interfaz de documentos múltiples (MDI – Multiple Document Interface)
3. Interfaz tipo explorador
Las interfaz de múltiples documentos fue diseñada para simplificar el intercambio
información entre documentos dependientes todos de la misma aplicación.información entre documentos dependientes todos de la misma aplicación.
Cuando una aplicación MDI se ejecuta, aparece en primer lugar una ventana de aplicación
(ventana padre) la cual proporciona un espacio de trabajo para todas las ventanas de
documento que se creen (ventanas hijas).
Programación Visual I
Ingeniería en Telemática3
Aplicaciones MDI
Un ejemplo de lo que estamos diciendo es la aplicación Microsoft Excel que permite crear y
mostrar varias ventanas de documentos de diferentes tipos.
Formulario
Padre
Formularios
Hijos
Programación Visual I
Ingeniería en Telemática4
Hijos
Creación de un formulario padre
Para crear un formulario padre se deben de seguir los siguientes pasos:
1. Crear una aplicación para Windows la cual contendrá un formulario al que llamaremos
FormPadre.
2. En el formulario principal establecemos a true el valor de la propiedad
IsMDIContainer, esto provoca que el formulario pase a ser un contenedor MDI para
formularios hijos.
Programación Visual I
Ingeniería en Telemática5
Creación de un formulario padre
Es aconsejable asignar a la propiedad WindowState el valor Maximized, para
manipular más fácilmente los formularios hijos.
3. Se puede agregar una barra de menús para la manipulación de los formularios hijos,
ej: un menu Archivo con los elementos Nuevo y Cerrar que crearán y cerrarán los
formularios hijos y un menú Ventana (menuVentana) que se encargará del
seguimiento de los formularios hijos abiertos para lo cual se debe de establecer a la
propiedad MdiWindowListItem de la barra de menus el valor menuVentana.
Programación Visual I
Ingeniería en Telemática6
Creación de un formulario hijo
Luego del formulario padre debemos crear el formulario que emplearemos para la creación
de los formularios hijos. Crear formularios hijos durante el tiempo de ejecución supondrá
crear objetos de la clase de este formulario y visualizarlos.
1. Agregar un nuevo elemento de tipo Windows Form al proyecto al que denominaremos
FormHijo. Esto creará un formulario listo para lo que necesitemos.
2. Agregar los controles a emplear en el formulario, por ejemplo puede agregar un control
RichTextBox (rtbTexto) y asigne a su propiedad Anchor el valor Top, Left y a suRichTextBox (rtbTexto) y asigne a su propiedad Anchor el valor Top, Left y a su
propiedad Dock el valor Fill. El resultado será al como lo siguiente:
Programación Visual I
Ingeniería en Telemática7
Creación de un formulario hijo
3. Crear los formularios hijos y mostrarlos tras la ocurrencia de algún evento, ej: al ocurrir
el evento click del menu Nuevo de Archivo.
private void ArchivoNuevo_Click(object sender, EventArgs e)
{
FormHijo NuevoFormHijo;
//Crear un nuevo formulario Hijo
NuevoFormHijo = new FormHijo();
//Titulo del formulario
NuevoFormHijo.Text = "Documento " + (MdiChildren.Length + 1).ToString();
La propiedad MdiChildren representa la matriz de tipo Form que identifica a los formularios
hijo del formulario padre.
Programación Visual I
Ingeniería en Telemática8
NuevoFormHijo.Text = "Documento " + (MdiChildren.Length + 1).ToString();
//Establecer el Formulario actual como Padre del que estamos creando
NuevoFormHijo.MdiParent = this;
//Mostrar el formulario Hijo
NuevoFormHijo.Show();
}
Creación de un formulario hijo
El resultado de la ejecución de la aplicación es el que se muestra en la figura siguiente:
El menú ventana muestra los títulos de los formularios hijos creados y nos permite indicar
cual se debe estar en primer plano.
Programación Visual I
Ingeniería en Telemática9
Organización de formularios hijos
Las aplicaciones MDI tienen un menú llamado Ventana que contiene un grupo de opciones
que permite organizar los formularios hijos abiertos.
El método LayoutMdi permite organizar los formularios hijos en un formulario Padre MDI.
La forma en la que los organiza depende del valor pasado como argumento, que será uno
de los valores de la enumeración Mdiayout: Cascade, TileHorizontal, TileVertical o
ArrangeIcons.
Programación Visual I
Ingeniería en Telemática10
Organización de formularios hijos
Al implementar los controladores de los elementos Cascada, Horizontal y Vertical del menú
ventana tendríamos el siguiente resultado:
private void VentanaCascada_Click(object sender, EventArgs e)
{
LayoutMdi(MdiLayout.Cascade);
}
private void VentanaHorizontal_Click(object sender, EventArgs e)private void VentanaHorizontal_Click(object sender, EventArgs e)
{
LayoutMdi(MdiLayout.TileHorizontal);
}
private void VentanaVertical_Click(object sender, EventArgs e)
{
LayoutMdi(MdiLayout.TileVertical);
}
Programación Visual I
Ingeniería en Telemática11
Obteniendo el formulario hijo activo
Durante la ejecución de una aplicación MDI, solo uno de los formularios se encuentra activo
(es decir posee el foco) en un momento determinado. Esta información nos la proporciona
el formulario Padre a través de la propiedad ActiveMdiChild.
Según esto podemos cerrar el formulario activo de nuestra aplicación de la siguiente
manera:
private void ArchivoCerrar_Click(object sender, EventArgs e)
{{
FormHijo FormHijoActivo = (FormHijo)ActiveMdiChild;
if (FormHijoActivo != null)
FormHijoActivo.Close();
}
Desde el objeto FormHijoActivo tenemos acceso al formulario activo, sin embargo para poder acceder
a los controles que este formulario tiene (ej. rtbTexto) dichos controles deben tener su modificador a
public o crear propiedades (get y set) para el acceso a los mismo.
Programación Visual I
Ingeniería en Telemática12
Fusión de menús de los formularios Padre e Hijo
Los formularios hijos también pueden tener barra de menús. En las aplicaciones Windows
es normal que la barra de menús del formulario Padre se combine con la del formulario Hijo
para formar una sola barra de menús.
Supongamos que se tienen los siguientes formularios Padre e Hijo:
Cuando desde el formulario Padre se crea un formulario hijo los menús de cada uno de
ellos se combinan dando la siguiente apariencia.
Programación Visual I
Ingeniería en Telemática13
Fusión de menús de los formularios Padre e Hijo
Para lograr la fusión de los dos menús debemos:
1. Establecer la propiedad AllowMerge de la barra de menús tanto del Formulario Padre
como del Formulario Hijo a true.
2. Emplear las propiedades MergeAction y MergeIndex para indicar la manera en la que
se llevará a cano la fusión. Al fusionar dos menús debe tenerse en cuenta que cada uno
de ellos posee elementos que son parte de una colección y por tanto debe de indicarse
la manera en que estas dos colecciones van a combinarse.
MergeAction indica la forma en que el menú hijo se combinará con el menú Padre y
puede tener los siguientes valores:
a. Append: Al fusionarse los dos menús se colocan primero los elementos del menú
Padre y luego los del hijo sin importar si existen elementos duplicados.
Programación Visual I
Ingeniería en Telemática14
Elementos del
menú Padre
Elementos del
menú Hijo
Fusión de menús de los formularios Padre e Hijo
b. Insert: Inserta los elementos del menú hijo dentro del otro menú ordenándolos segúnel valor establecido en la propiedad MergeIndex.
El resultado sería el siguiente:
Formulario Padre Formulario Hijo
MergeAction: Append Append Insert Insert
MergeIndex: 0 3 1 2
Cuando existen coincidencias entre un elemento del menú Hijo y uno del Padre, loselementos del menú hijo tienen tres posibilidades en MergeAction.
c. Replace: El elemento del menú Padre es sustituido por el elemento del mismo nombredel menú hijo. Si no existe alguna coincidencia, el elemento del menú hijo no serámostrado.
d. Remove: Los elementos que coinciden son eliminados de la barra de menús. Si noexiste alguna coincidencia, el elemento del menú hijo no será mostrado.
Programación Visual I
Ingeniería en Telemática15
Fusión de menús de los formularios Padre e Hijo
e. MatchOnly: En este caso se combinan los elementos del menú Hijo y del menú Padre
que tenga el mismo nombre. Esta combinación de los elementos se lleva a cabo en
función de los valores de las propiedades MergeAction y MergeIndex.
Para lograr el resultado anteriormente planteado debemos establecer los siguientes valores
a los elementos del menú (para los que no se indica su valor se deben de dejar los valores
por defecto MergeAction a Append y MergeIndex a -1):
Menú PadreMenú Padre
Programación Visual I
Ingeniería en Telemática16
Elemento MergeAction MergeIndex
Archivo Append 0
ArchivoNuevo Append 0
ArchivoCerrar Append 4
Ventana Append 2
Fusión de menús de los formularios Padre e Hijo
Menú Hijo
Elemento MergeAction MergeIndex
Archivo MatchOnly 0
ArchivoGuardar Insert 1
ArchivoGuardarComo Insert 2
Imprimir Insert 3
Edición Insert 1
Programación Visual I
Ingeniería en Telemática17
Edición Insert 1
Bibliografía
Enciclopedia de Microsoft Visual C#, 2da Edición
Fco. Javier Ceballos Sierra
RA-MA
Capítulo 11, página 395
Programación Visual I
Ingeniería en Telemática18