miércoles, septiembre 05, 2007

Tutor Embedded Visual Basic - Capitulo 5

Por: Roberto Alvarado

Capitulo 5

En este nuevo capítulo vamos a detallar más sobre los controles utilizados en el capítulo anterior.

Control MenuBar

Como pudimos ver en el anterior capítulo, este control nos permite crear menús y / o barras de herramientas o Toolbars como son más conocidas. Podemos utilizar o crear menús de textos, menús de botones (barras de herramientas), o la combinación de ambos como en el ejemplo de la entrega anterior.

Dim mnuTablas As MenuBarMenu

Dim mnuAccion As MenuBarMenu

Observamos se debe declarar dos variables de tipo MenuBarMenu, una para cada opción del menú a crear.

'Configuro el MenuBar

Set mnuTablas = MenuBar1.Controls.AddMenu("Tablas", mnuTablas)

mnuTablas.Items.Add 1, "mnuTabTareas", "Tareas"

mnuTablas.Items.Add 2, "mnuTabClientes", "Clientes"

mnuTablas.Items.Add 3, "mnuTabApp", "Aplicaciones"

Set mnuAccion = MenuBar1.Controls.AddMenu("Accion", mnuAccion)

mnuAccion.Items.Add 1, "mnuNuevo", "Nuevo"

mnuAccion.Items.Add 2, "mnuEditar", "Editar"

mnuAccion.Items.Add 3, "mnuBorrar", "Borrar"

mnuAccion.Items.Add 4, "mnuSepara1", "------------"

mnuAccion.Items.Add 5, "mnuCancelar", "Cancelar"

mnuAccion.Items.Add 6, "mnuGuardar", "Guardar"

mnuAccion.Items.Add 7, "mnuSepara2", "------------"

mnuAccion.Items.Add 8, "mnuCerrar", "Cerrar"

mnuAccion.Items("mnuSepara1").Enabled = False

mnuAccion.Items("mnuSepara2").Enabled = False

Luego configuramos cada uno de estos objetos Menú. En cada una de las instrucciones Set estamos creando una instancia de los objetos declarados antes, e inmediatamente les asignamos el texto o Caption que va a aparecer en la pantalla, como primer parámetro del método Addmenu de la colección Controls del control MenuBar, el segundo parámetro es la llave o Key del objeto, la cual nos va a permitir llamarlo o identificarlo en forma correcta.

Para el caso de la colección Ítems, o sea los submenús de cada uno de los objetos menú, llamamos al método Add para crear un Ítem, y los parámetros son, el índice del elemento dentro de la colección, el segundo es la llave o Key (para nosotros es nuestro identificador), el tercer parámetro es el Caption o mensaje que va a aparecer en la pantalla, existe un cuarto parámetro que es el estilo, pero hasta el momento no he podido ubicar los valores que deben ir y sus correspondientes efectos sobre el menú.

Como podemos ver en el código anterior he agregado un par de opciones para simular unos separadores dentro del menú de Acción.

En las dos ultimas líneas del código anterior, desactivamos las opciones mnuSepara1 y mnuSepara2 para simular una línea de separación de menús. gris.

Para capturar el evento de clic sobre alguno de las opciones del menú, utilizamos el evento:

Private Sub MenuBar1_MenuClick(ByVal Item As MenuBarLib.Item)

Select Case Item.Key

Case "mnuTabTareas"

'TAREAS

Case "mnuTabClientes"

'CLIENTES

Case "mnuTabApp"

'APLICACIONES

Case "mnuNuevo"

'NUEVO

Case "mnuEditar"

'EDITAR

Case "mnuborrar"

'BORRAR

Case "mnuCancelar"

'CANCELAR

Case "mnuGuardar"

'GUARDAR, GRABAR O SALVAR

Case "Cerrar"

'CERRAR LA OPCION ACTUAL

End Select

End Sub

A medida que avancemos iremos colocando el código necesario para cada una de las opciones del menú.

Ahora con botones

Ahora vamos a explicar los menús como barras de herramientas o Toolbars.

Podemos utilizar botones utilizando los iconos predefinidos del sistema, estos íconos son los que aparecen en la gráfica siguiente:

Primero definimos los objetos MenuBarButton que representa cada botón de la barra que vallamos a crear.

'Configuro los botones

Dim btnSepara As MenuBarButton

Dim btnInicio As MenuBarButton

Dim btnPrevio As MenuBarButton

Dim btnSigte As MenuBarButton

Dim btnFin As MenuBarButton

Luego configuramos cada uno de los botones. En nuestro caso, el primer botón es un separador para diferenciar el menú de texto del de los botones gráficos.

'Boton Separador

Set btnSepara = MenuBar1.Controls.AddButton

btnSepara.Width = 80

btnSepara.Style = mbrSeparator

'Boton Inicio

Set btnInicio = MenuBar1.Controls.AddButton("btnInicio")

btnInicio.Image = 1

btnInicio.Style = mbrDefault

'Boton Previo

Set btnPrevio = MenuBar1.Controls.AddButton("btnPrevio")

btnPrevio.Image = 2

btnPrevio.Style = mbrDefault

'Boton Sgte

Set btnSigte = MenuBar1.Controls.AddButton("btnSigte")

btnSigte.Image = 3

btnSigte.Style = mbrDefault

'Boton Ultimo

Set btnFin = MenuBar1.Controls.AddButton("btnFin")

btnFin.Image = 4

btnFin.Style = mbrDefault

Para nuestro caso las imágenes que estamos asociando a cada botón las colocamos en un control ImageList, el cual configuramos en esta parte del código:

' Configuro el tamaño de las imagenes

ImageList1.ImageHeight = 16

ImageList1.ImageWidth = 16

' Agrego las imagenes

ImageList1.Add App.Path & "Primero.bmp"

ImageList1.Add App.Path & "Atras.bmp"

ImageList1.Add App.Path & "Adelante.bmp"

ImageList1.Add App.Path & "Ultimo.bmp"

'Le decimos al MenuBar que use el ImageList

MenuBar1.ImageList = ImageList1.hImageList

Por eso asignamos a los botones las imagines 1, 2, 3 y 4 respectivamente.

Si vamos a utilizar los iconos del sistema no necesitamos crear un imagelist, eVB lo crea automáticamente con solo decirle el numero de los íconos del sistema en la propiedad Image, teniendo en cuenta la imagen de arriba de los íconos del sistema.

Para capturar los eventos click que se ejecuten sobre cada botón entonces usamos el siguiente evento:

Private Sub MenuBar1_ButtonClick(ByVal Button As MenuBarLib.MenuBarButton)

Select Case Button.Key

Case "btnInicio"

Case "btnPrevio"

Case "btnSigte"

Case "btnFin"

End Select

End Sub

Para finalizar con el control MenuBar, eliminamos de memoria los objetos utilizados

' Luego que los botones y los menus son agregados

' al MenuBar, los Objectos se liberan

Set mnuTablas = Nothing

Set mnuAccion = Nothing

Set btnSepara = Nothing

Set btnInicio = Nothing

Set btnSigte = Nothing

Set btnPrevio = Nothing

Set btnFin = Nothing

Frames

Me parece muy importante hablar de este control, particularmente en el desarrollo de aplicaciones para Windows CE, principalmente por la característica de que no se pueden descargar los forms (formas) de memoria en Windows CE.

El control Frame es intrínsico en eVB, eso quiere decir que viene dentro de los archivos del runtime de eVB, y no es necesario ir a la opción de referencias y referenciarlo, o ir a la opción de Componentes y escogerlo de allá.

El control Frame es un contenedor de controles, esto quiere decir que este control puede contener todos o casi todos los controles que maneja eVB dentro de él.

Particularmente yo, utilizo los frames para simular diferentes ventanas de la aplicación, solamente los pongo invisibles y los muestro cuando son necesarios y los muevo a las posiciones de la pantalla correspondiente. Esto lo veremos a medida que desarrollemos la aplicación y lo entenderán mejor.

Las propiedades que más utilizo de los frames son: Visible, Top, Left.

Con Visible muestro u oculto el frame de la pantalla

Con Top coloco la posición superior del frame en donde la necesito

Con Left coloco la posición izquierda del frame donde la necesito.

Resumen

Bien, en este Capitulo explicamos el control MenuBar para crear menús y barras de herramientas o botones gráficos, además se explica como podemos utilizar el control ImageList y como asignarle imágenes.

Aprendimos como asignarle un control ImageList a un control MenuBar, para poder usar las imágenes con botones en una barra de herramientas.

Además que podemos usar los iconos del sistema para utilizarlos en un MenuBar.

Que los frames van a ser nuestros mejores aliados para el desarrollo de aplicaciones en Pocket PC y Windows CE para simular diferentes ventanas o pantallas (como quieran decirles J ).

No hay comentarios.: