CAPITULO III INDICE DE CONTENIDO III. CONTROLES BÁSICOS ADICIONALES ..................................... 55 III.1. Control Casilla de Verificación (CheckBox) ............................. 55 III.1.i. Principales propiedades del control CheckBox .................. 55 III.2. Botones de Opción (OptionButton) .......................................... 57 III.2.i. Principales propiedades de los botones de opción .............. 57 III.3. Cajas de listado (ListBox)....................................................... 59 III.3.i. Principales propiedades de las cajas de listas .................... 61 III.3.i.1. Selección múltiple ............................................................ 62 III.3.i.2. Agregar elementos............................................................ 62 III.3.i.3. Eliminar elementos........................................................... 63 III.4. Cajas combinadas (ComboBox) ............................................... 67 III.4.i. Principales propiedades de los combos .............................. 67 III.5. Marco (Frame) ...................................................................... 68 III.5.i. Principales propiedades de los marcos .............................. 71 III.6. Cajas de listado de unidades (DriveListBox) ............................ 73 III.6.i. Principales propiedades de las cajas de listado de unidades 73 III.7. Cajas de listado de directorios (DirListBox) ............................ 74 III.7.i. Principales propiedades de las cajas de listado de directorios 74 III.8. Cajas de listado de archivos (FileListBox)............................... 74 III.8.i. Principales propiedades de las cajas de listado de archivos 74 III.9. Temporizador (Timer)........................................................... 75 III.9.i. Principales propiedades del temporizador ......................... 76 III.10. Barras de desplazamiento: Horizontal (HscrollBar) y Vertical (VscrollBar) .................................................................................. 80 III.10.i. Principales propiedades de las barras de desplazamiento... 80 III.11. Arreglo de controles ......................................................... 84 III.11.i. Ventajas ........................................................................... 84 III.11.ii. Crear un arreglo de controles ........................................... 85 III.12. Ejercicios propuestos ....................................................... 88 LABORATORIO II – AÑO 2008 Introducción a los Controles Básicos en Visual Basic Página 54 Mg. Ing. Fátima Martínez PROGRAMADOR UNIVERSITARIO LABORATORIO II - VISUAL BASIC AÑO 2008 CAPITULO III Página 55 III. CONTROLES BÁSICOS ADICIONALES III.1. Control Casilla de Verificación (CheckBox) Las casillas de verificación se utiliza generalmente para listar opciones y que el usuario pueda elegir entre ellas, y dependiendo del valor (si está chequeado o no), se realiza una u otra acción. Las opciones son del tipo Si/No o Activado/Desactivado. Son ideales para desplegar muchas opciones, siempre que se pueda elegir una o más de ellas; también se puede no seleccionar ninguna. III.1.i. Principales propiedades del control CheckBox Cuando el usuario selecciona una opción, la casilla se encuentra activa y en el control se aprecia R , de lo contrario está vacía. Pero existe el estado atenuado que se representa por una tilde sobre fondo • 0 - UnChecked (sin chequear) grisáceo. La principal propiedad de este • 1 - Checked (chequeado) control Value determina el estado. Esta • 2 - Grayed (deshabilitado) propiedad devuelve y establece el valor seleccionado. El siguiente ejemplo presenta un formulario en el cual se realiza una encuesta. 1. Ejemplo de la propiedad VALUE Cuando se presiona en el botón de comando Muestra Resultado se mostrará un mensaje del resultado de la encuesta, evaluando la propiedad Value de cada Checkbox. Antes de evaluar los CheckBox se comprueba que se haya ingresado un texto en el Text1, si no se ingresó nada, se muestra un mensaje de advertencia y se termina la rutina mediante la instrucción Exit Sub, si se ingresó un nombre, prosigue la ejecución del resto del código. Mg. Ing. Fátima Martínez Introducción a los Controles Básicos en Visual Basic Mg. Ing. Fátima Martínez El código del evento asignado al botón Muestra Resultados Private Sub cmdMuestra_Click() 'Variable que almacenará los datos para mostrar el resultado al final de la rutina Dim Resultado As String 'Esto verifica si el cuadro de texto no está vacío y se ha ingresado un nombre If txtNombre = "" Then 'si está vacío muestra el mensaje MsgBox "Debe ingresar un nombre", vbExclamation, "encuesta" 'Mediante Exit Sub sale de la rutina para no ejecutar las líneas que debajo Exit Sub End If 'En la Variable Resultado se guarda el nombre que se ingresó en text1 Resultado = txtNombre ' Evalua Check1 (España) If chk1.Value = 0 Then Resultado = Resultado & " no deseas ir a " & chk1.Caption Else Resultado = Resultado & " deseas ir a " & chk1.Caption End If 'Le agrega a la variable Resultado un salto de carro o salto de línea Resultado = Resultado & vbNewLine ' Evalua Check2 (Francia) If chk2.Value = 0 Then Resultado = Resultado & " no deseas ir a " & chk2.Caption Else Resultado = Resultado & " deseas ir a " & chk2.Caption End If 'Otro salto de carro Resultado = Resultado & vbNewLine ' Evalua Check3 (Alemania) If chk3.Value = 0 Then Resultado = Resultado & " no deseas ir a " & chk3.Caption Else Resultado = Resultado & " deseas ir a " & chk3.Caption End If 'Muestra el valor de la variable Resultado con la información MsgBox Resultado End Sub Página 56 PROGRAMADOR UNIVERSITARIO LABORATORIO II - VISUAL BASIC AÑO 2008 III.2. CAPITULO III Página 57 Botones de Opción (OptionButton) Un control OptionButton muestra una opción que se puede activar o desactivar, pero con dependencia del estado de otros controles del mismo tipo que existan en el formulario. Son útiles para presentar un conjunto de opciones al usuario con el propósito que sólo pueda elegir una. Los botones deben estar agrupados, para ello, deben estar colocado en el mismo control o formulario, es decir, los botones de opción que se encuentran directamente encima del formulario se agruparán y sólo se podría elegir una de ellas. Nota: No se debe confundir las cajas de verificación con los botones de opción. Las primeras admiten una o más opciones seleccionadas en cambio en los botones de opción, el usuario puede elegir sólo una. Si durante una prueba se observa que se pudo escoger más de una opción es porque el botón de opción no quedó agrupado sino que quedó fuera del área del grupo, por lo tanto se lo reubica en el diseño. Para ello se corta el control y se lo pega ubicándolo dentro del área. III.2.i. Principales propiedades de los botones de opción Los botones de opción poseen las mismas propiedades de los botones de comando de la cual se destaca Caption que muestra el texto indicador de la función de ese botón y Value, común al CheckBox, indica si el control esta seleccionado o no. 2. Ejemplo de VALUE: Mg. Ing. Fátima Martínez Como se dijo anteriormente un control PictureBox permite contener otros controles, por lo tanto es posible agrupar botones de opción en él. Esto se logra dibujando dentro del control PictureBox cada uno de los botones de opción. Así se ubicaron los botones de opción del País de nacimiento. Introducción a los Controles Básicos en Visual Basic Mg. Ing. Fátima Martínez El código para cada control de Opción Private Sub optArgt_Click() If optArgt.Value Then MsgBox "Ud. es argentino/a", vbInformation, "Nacionalidad" End If End Sub Private Sub optClmb_Click() If optClmb.Value Then MsgBox "Ud. es colombiano/a", vbInformation, "Nacionalidad" End If End Sub Private Sub optUrgy_Click() If optUrgy.Value Then MsgBox "Ud. es uruguayo/a", vbInformation, "Nacionalidad" End If End Sub 3. Ejemplo de OptionButton: En éste proyecto se permite mover, dentro de la venta de la aplicación, una caja de texto y a su vez, modificar el color de fondo de la misma según cuatro colores diferentes. El código para cada control de Opción Private Sub Form_Load() txtCaja.Top = 0 End Sub Private Sub optArriba_Click() txtCaja.Top = 0 End Sub Private Sub optAbajo_Click() txtCaja.Top = frmColores0.ScaleHeight - txtCaja.Height End Sub Private Sub optAzul_Click() txtCaja.BackColor = vbBlue End Sub Página 58 PROGRAMADOR UNIVERSITARIO LABORATORIO II - VISUAL BASIC AÑO 2008 CAPITULO III Página 59 Private Sub optRojo_Click() txtCaja.BackColor = vbRed End Sub Private Sub optVerde_Click() txtCaja.BackColor = vbGreen End Sub Private Sub optAmarillo_Click() txtCaja.BackColor = vbYellow End Sub Cuando el número de opciones se aumenta considerablemente es conveniente crear un arreglo de controles 1 y utilizar el ciclo For… Next. Nota: con respecto a la forma de expresar su valor, la propiedad Value , presenta una diferencia entre los botones de opción con los de verificación cuando está seleccionado, es decir cuando la propiedad está en True. Para OptionButton → es indistinto: Option1.Value = True o Option1.Value = 1 Para CheckBox → solamente es posible: Check1.value = 1. III.2.ii. Botones de Opción gráficos Con la propiedad Style que o establece un valor que indica el tipo de muestra y el comportamiento del control, se puede establecer botones de opción gráficos. Sintaxis: objeto.Style Los valores son los mismos que para el control CommandButton: • 0 – Standar (Predeterminado). Estándar. El control OptionButton aparece como un botón de opción con una etiqueta a su lado. • 1 - Graphical. El control se muestra con un estilo gráfico. El OptionButton aparece como un botón tipo CommandButton que permanece suelto o presionado hasta que se seleccione otro OptionButton de su grupo de opciones. 1 Ver al final del capítulo. Mg. Ing. Fátima Martínez Introducción a los Controles Básicos en Visual Basic 4. Ejemplo de OptionButton gráficos: Mg. Ing. Fátima Martínez En éste proyecto, al seleccionar uno de los botones de opción aparece un mensaje con un texto de acuerdo a la opción elegida. Al iniciar la aplicación ningún botón se encuentra seleccionado. Se utilizó un arreglo de botones (Ver al final de capítulo). El código para los controles de Opción Private Sub Form_Load() Dim i As Integer 'dimensiona la variable para el índice de cada control For i = 0 To 3 optAnimo(i).Value = False 'ningún botón está seleccionado Next i End Sub Private Sub optAnimo_Click(Index As Integer) 'Se utiliza un arreglo de botones de opción 'Index es el índice de cada elemento del arreglo Dim mensaje As String If Index = 0 Then mensaje = "¡¡Contento!!" ElseIf Index = 1 Then mensaje = "¡¿Preocupado?!" ElseIf Index = 2 Then mensaje = "Mal." Else mensaje = "¡¡Furioso!!" End If MsgBox "Usted está " & mensaje, vbExclamation, "Estado de ánimo" End Sub III.3. Cajas de listado (ListBox) Un control ListBox muestra una lista de elementos en la que el usuario puede seleccionar uno o más. Si el número de elementos supera el número que puede mostrarse, se agregará automáticamente una barra de desplazamiento al control. Los elementos pueden colocarse en la lista en tiempo de diseño o en tiempo de ejecución. Página 60 PROGRAMADOR UNIVERSITARIO LABORATORIO II - VISUAL BASIC AÑO 2008 CAPITULO III Página 61 III.3.i. Principales propiedades de las cajas de listas La propiedad List sirve para agregar en tiempo de diseño los elementos que se deseen, en este caso, cada vez que se coloque un elemento se presiona la combinación de teclas [ C t r l ] + [ E n t e r ] para pasar al siguiente elemento. La lista enumera los elementos desde el número 0 (primer elemento) hasta el último que tendría como valor de índice el n-1. Para obtener un elemento en particular utilice la codificación: List1.List(índice) El valor del primer elemento lo devuelve: List1.List(0) Posee dos propiedades disponibles en tiempo de ejecución ListCount y ListIndex. Propiedad Columns ListCount ListIndex MultiSelect NewIndex Selected Sorted Style Descripción Establece si los controles se mostrarán en columnas por medio de barras de desplazamiento horizontales. Si el valor es 0 no posee columnas. Otro valor muestra el listado en la cantidad de columnas especificado. Se aplica a cualquier estilo de caja de listado. Representa el número de elementos del listado, por lo tanto el último elemento tiene el índice ListCount-1. Representa el elemento seleccionado. Si no hay elemento seleccionado esta propiedad posee el valor -1 . Permite seleccionar varios elementos de la lista. Sus valores son 0 : ningún elemento, 1 : selección simple y 2 : selección múltiple. Devuelve el índice del último elemento agregado a un control ComboBox o ListBox. Es de sólo lectura en tiempo de ejecución. Devuelve o establece el estado de selección de un elemento. Es una matriz de valores booleanos con el mismo número de elementos que la propiedad List. Propiedad booleana. Permite ordenar automáticamente los elementos de la lista. True : ordena alfabéticamente los elementos ingresados. Establece el estilo del control. Sus posibles valores: 0 – Standar y 1 – CheckBox, permite agregarle caja de verificación. Mediante la propiedad ListIndex se puede conocer el índice del elemento seleccionado y su contenido mediante un vector List(i) donde se guardan los elementos de la lista. Entonces el valor del elemento actual de un control llamado lstLista es: lstLista.List(lstLista.ListIndex) Mg. Ing. Fátima Martínez Introducción a los Controles Básicos en Visual Basic III.3.i.1. Mg. Ing. Fátima Martínez Selección múltiple Las listas con estilo CheckBox permiten seleccionar varios elementos de la lista marcando una tilde a todos los elementos deseados. Esto también se consigue si la propiedad Style = 0 - Standar se combina con la propiedad MultiSelect = 1 - Simple. Nota: Cuando la propiedad Style es 1-CheckBox la propiedad MultiSelect debe ser 0 – None. ListIndex indica siempre el elemento actual pero no todos los elementos seleccionados en una selección múltiple. Para saber cuáles están seleccionados y cuáles no lo están, se puede utilizar la propiedad Selected. Su sintaxis: List1.Selected(índice) [=valor] El valor True o False se usa para seleccionar o no un elemento. 5. Ejemplo de selección múltiple: Las listas tienen las propiedades: 1ª lista → Multiselect = 2 – Extended 2º lista → Multiselect = 1 – Simple 3º lista → Multiselect = 0 – None Style = 1 - CheckBox El código de los eventos Private Sub cmdEscribe_Click() Dim i As Integer 'Dimensiona una variable contador 'Para saber cuáles están seleccionados y cuáles no 'Se utiliza la propiedad Selected For i = 0 To lstUno.ListCount - 1 'Se recorre todos los elementos de la lista If lstUno.Selected(i) = True Then If txtUno = "" Then txtUno = lstUno.List(i) Else 'Si txtUno esta vacío, es la primera selección 'escribe la primera seleccion 'si ya contiene una selección txtUno = txtUno & vbCrLf & lstUno.List(i) End If End If Next i Página 62 'concatena PROGRAMADOR UNIVERSITARIO LABORATORIO II - VISUAL BASIC AÑO 2008 CAPITULO III Página 63 End Sub Private Sub Form_Load() txtUno = "" 'Inicia la aplicación borrando la caja de texto End Sub Private Sub lstUno_Click() 'Cuando empieza a seleccionar si txtUno tenía selecciones If txtUno <> "" Then txtUno = "" 'borra para escribir las nuevas selecciones End If End Sub III.3.i.2. Agregar elementos Además de agregar en tiempo de diseño los elementos, es muy común agregarlos en tiempo de ejecución mediante el método Additem. List1.Additem "Elemento" [, índice] “Elemento” es la cadena de caracteres del elemento a agregar. El índice es opcional, si no se incluye, el elemento se colocará al final de la lista. • Se agrega un elemento al principio de la lista: Private Sub cmdAgrega_Click() lstColores.AddItem txtElem, o End Sub • Si se agrega al final de la lista es: Private Sub cmdAgrega_Click() lstColores.AddItem txtElem End Sub Si se agrega un elemento en una posición mayor a la cantidad de elementos del listado, se produce Error. III.3.i.3. Eliminar elementos El método RemoveItem permite eliminar un elemento específico de las cajas de listado. Su sintaxis: List1.RemoveItem índice , donde índice es la posición del elemento a eliminar. Mg. Ing. Fátima Martínez Introducción a los Controles Básicos en Visual Basic Mg. Ing. Fátima Martínez Para eliminar el último elemento de una lista: List1.RemoveItem List1.ListCount -1 Para eliminar el elemento actual: List1.RemoveItem List1.ListIndex Nota: Se debe tener mucho cuidado al utilizar RemoveItem en líneas seguidas de código ya que al borrar un elemento se actualiza el total de ítems de la lista y esto puede afectar a una posterior línea de código que incluya este método. Si se intenta utilizar RemoveItem con un índice que no existe, se produce Error, por lo tanto, antes se debe verificar que la propiedad ListIndex no contenga el valor -1, que indica que no hay ningún ítem seleccionado: If List1.ListIndex <> -1 then List1.RemoveItem List1.ListIndex End If Asimismo es posible borrar todos los elementos del control mediante el método Clear. Su sintaxis: List1.Clear 6. Ejemplo completo. Formulario para seleccionar, modificar, eliminar o agregar un color de auto. Contiene los siguientes controles: Página 64 PROGRAMADOR UNIVERSITARIO LABORATORIO II - VISUAL BASIC AÑO 2008 Control PictureBox Nombre Picture1 ListBox lstColores Label Label1 commandButton cmdModif commandButton cmdElimina commandButton cmdAgrega commandButton cmdSelecciona Label Label1 TextBox txtElem Label Label2 Label Label3 Label lblActual Mg. Ing. Fátima Martínez CAPITULO III Página 65 Propiedades AutoSize Picture List Caption BackStyle Font Caption Font TabIndex TabStop Default Style Caption Font TabIndex TabStop Default Style Caption Font TabIndex TabStop Default Style Caption Font TabIndex TabStop Default Style BackColor Caption BackStyle Font Enabled Text Font TabIndex Caption Font Caption Font Caption Valor False D:\auto2.wmf Rojo Verde Azul Amarillo Violeta Gris oscuro Gris plateado Negro Color de su auto 0 - Transparent Arial 10, negrita &Modifica Verdana 9, negrita 2 True False 0 - Standar &Elimina Verdana 9, negrita 3 True False 0 - Standar &Agrega Verdana 9, negrita 4 True True 0 – Standar &Selecciona Verdana 9, negrita 1 True False 1 - Graphical &H0080C0FF& Otro color: 0 - Transparent Arial, 10 negrita True (Vacío) Arial, 10 negrita 0 Elemento actual: Arial 10 Total elementos: Arial 10 Introducción a los Controles Básicos en Visual Basic Label lblTotal commandButton cmdSalir Font Caption Font Caption Font TabIndex TabStop Default Style Picture Mg. Ing. Fátima Martínez Arial 10, negrita Arial 10, negrita &Salir Verdana 9, negrita 0 True False 1 – Graphical D:\cancel2.jpg El código de los eventos asignados a cada botón de comando Private Sub cmdAgrega_Click() 'si caja de texto no esta vacía If txtElem <> "" Then 'Se agrega al final de lista lstColores.AddItem txtElem 'Se vacia el contenido de caja de texto txtElem = "" End If ' El valor de los índices lblTotal = lstColores.ListCount lblActual = lstColores.ListIndex 'Agrega y lleva la selección al elemento agregado que tiene índice NewIndex lstColores.Selected(lstColores.NewIndex) = True txtElem.SetFocus 'pone el foco en la caja de texto End Sub Private Sub cmdElimina_Click() Dim i As Integer ‘una variable local para enteros 'Si hay un elemento seleccionado If lstColores.ListIndex <> -1 Then 'Elimina el elemento actual i = lstColores.ListIndex lstColores.RemoveItem lstColores.ListIndex End If 'Modifica el valor de los índices lblTotal = lstColores.ListCount lstColores.ListIndex = 0 lblActual = lstColores.ListIndex txtElem.SetFocus 'pone el foco en la caja de texto End Sub Private Sub cmdModif_Click() 'Si el contenido no es vacío If txtElem <> "" Then 'Modificamos el elemento actual de la lista lstColores.List(lstColores.ListIndex) = txtElem End If Página 66 PROGRAMADOR UNIVERSITARIO LABORATORIO II - VISUAL BASIC AÑO 2008 CAPITULO III Página 67 txtElem = "" txtElem.SetFocus End Sub Private Sub cmdSalir_Click() End End Sub Private Sub cmdSelecciona_Click() If lstColores.ListIndex <> -1 Then txtElem = lstColores.List(lstColores.ListIndex) End If End Sub Private Sub Form_Load() lstColores.ListIndex = 0 lblActual = lstColores.ListIndex lblTotal = lstColores.ListCount End Sub Private Sub lstColores_Click() lblActual = lstColores.ListIndex End Sub III.4. Cajas combinadas (ComboBox) Un control ComboBox mezcla las características de las cajas de listado, ListBox, con las de cajas de texto, TextBox. De manera que presenta la posibilidad de elegir de una lista un elemento de interés, pero además, puede obviar cualquier opción y agregar nuevos elementos escribiendo en el control de cuadro de texto. La diferencia con las listas es que no se pueden hacer múltiples selecciones. III.4.i. Principales propiedades de los combos Posee las propiedades, métodos y eventos de la lista como también de los cuadros de texto. Así, mediante las propiedades ListCount y ListIndex se puede conocer el total de elementos y el índice del ítem seleccionado. También el vector List puede usarse en este control para conocer el valor de un elemento. Así mismo se puede agregar un elemento en tiempo de ejecución por el método AddItem; eliminar un elemento mediante RemoveItem o borrar toda la lista con Clear. Mediante la propiedad Sorted es posible ordenar la lista y la propiedad Style permite usar los combos de tres formas diferentes. Sus posibilidades de valores: Nº 0 Estilo caja combinada desplegable Mg. Ing. Fátima Martínez Característica Mezclan las cajas de texto con los cuadros de listado. Se puede ingresar un valor en la caja de texto o seleccionar un elemento. Introducción a los Controles Básicos en Visual Basic Mg. Ing. Fátima Martínez 1 combo simple Presenta una caja de texto y una lista siempre visible, no desplegable. Se puede seleccionar elementos de la lista o escribir valores nuevos. 2 lista desplegable Similar a la caja de listado ya que sólo se puede seleccionar un elemento de la lista. Presentan una caja de texto pero no permiten el ingreso de nuevos valores, sino que al hacer clic se despliega el listado completo. En la siguiente ilustración se representan los estilos 0 y 1: Aquí se puede escribir un nuevo elemento. Caja combinada con lista desplegable. a) Antes de la selección b)Después de la selección: Combo simple con lista a la vista. La imagen presenta el combo con estilo 2 : a) antes de la selección del usuario; b) después que se hace clic en el control. 7. Ejemplo de estilos de combo. En el cuadro de texto Nombre se ingresa un nombre. Este es agregado mediante el botón Agregar. También puede modificarse un elemento de las listas. Página 68 PROGRAMADOR UNIVERSITARIO LABORATORIO II - VISUAL BASIC AÑO 2008 CAPITULO III Página 69 El código de los eventos Click Private Sub cboSimple_Click() 'cuando se selecciona un elemento en el combo Simple 'se desplaza la selección en los otros dos combos cboDesplegable.ListIndex = cboSimple.ListIndex cboLista.ListIndex = cboSimple.ListIndex End Sub Private Sub cmdAgregar_Click() 'Si el contenido de la caja de texto txtNombre no es vacío If txtNombre <> "" Then 'Agregamos el elemento a los combos cboDesplegable.AddItem txtNombre cboSimple.AddItem txtNombre cboLista.AddItem txtNombre 'Vaciamos el contenido de la caja de texto txtNombre = "" txt Nombre.SetFocus 'ponemos el foco en la caja de texto End If cboSimple.ListIndex = cboSimple.ListCount - 1 cboDesplegable.ListIndex = cboDesplegable.ListCount - 1 cboLista.ListIndex = cboLista.ListCount - 1 End Sub Private Sub cmdModif_Click() 'Si el contenido de la caja de texto txtNombre no es vacío If txtNombre <> "" Then cboSimple.List(cboSimple.ListIndex) = txtNombre cboDesplegable.List(cboSimple.ListIndex) = txtNombre cboLista.List(cboSimple.ListIndex) = txtNombre End If txtNombre.SetFocus 'pone el foco en la caja de texto End Sub Private Sub cmdSalir_Click() End End Sub 8. Ejemplo de combo. Llena la lista de los combos en tiempo de ejecución. Según sea la provincia seleccionada con un clic, el combo de las ciudades se llena con los datos correspondientes. Mg. Ing. Fátima Martínez Introducción a los Controles Básicos en Visual Basic Mg. Ing. Fátima Martínez El código de los eventos Private Sub cmdAceptar_Click() Dim band As Integer 'dimensiona una variable local band = 0 'variable bandera en 0 'posiciona el foco en el control que no ha sido llenado 'y cambia bandera en 1 If cmbProvin.ListIndex = -1 Then cmbProvin.SetFocus band = 1 'bandera en 1 ElseIf cmbDpto.ListIndex = -1 Then cmbDpto.SetFocus band = 1 'bandera en 1 ElseIf Text3 = "" Then Text3.SetFocus band = 1 'bandera en 1 End If If band = 1 Then 'Si los datos no se ingresaron band =1 'presenta mensaje que avisa no se llenaron todos los datos MsgBox "Datos Incompletos", vbCritical, "Alerta!!!" Else 'Si se ingresaron todos los datos band=0 'presenta mensaje que avisa que han sido llenados todos los datos MsgBox "Datos completos", vbInformation, "Ale rta!!" End If End Sub Private Sub cmbProvin_Click() 'Cuando selecciona una provincia 'Habilita el combo de las ciudades para el ingreso cmbDpto.Enabled = True 'llena con el combo con las ciudades de Tucumán If cmbProvin.ListIndex = 0 Then cmbDpto.AddItem "San Miguel de Tucumán" cmbDpto.AddItem "Yerba Buena" cmbDpto.AddItem "Aguilares" 'llena con el combo con las ciudades deSalta ElseIf cmbProvin.ListIndex = 1 Then cmb Dpto.AddItem "Salta" cmbDpto.AddItem "Orán" cmbDpto.AddItem "Metán" 'llena con el combo con las ciudades de Santiago ElseIf cmbProvin.ListIndex = 2 Then cmbDpto.AddItem "Santiago del Estero" cmbDpto.AddItem "Termas del Río Hondo" cmbDpto.AddItem "Frías" End If End Sub Private Sub cmdLimpiar_Click() cmbDpto.Clear Página 70 'Borra el combo de las ciudades PROGRAMADOR UNIVERSITARIO LABORATORIO II - VISUAL BASIC AÑO 2008 CAPITULO III Página 71 'Borra contenido Text3 = "" cmbProvin.SetFocus 'Pone el foco en el combo de las provincias cmbProvin.ListIndex = -1 'no selecciona ninguna End Sub Private Sub cmdTerminar_Click() End End Sub Private Sub Form_Load() 'Inicia la aplicación cargando el combo de las provincias cmbProvin.AddItem "Tucuman" cmbProvin.AddItem "Salta" cmbProvin.AddItem "Santiago" 'Deshabilita el combo de las ciudades cmbDpto.Enabled = False End Sub III.5. Marco (Frame) Este control permite agrupar otros controles para darle mayor funcionalidad a la interfaz. Esto lo hace especial porque actúa como contenedor de otros controles. Se puede utilizar un control Frame para subdividir un formulario funcionalmente, por ejemplo, para separar grupos de controles OptionButton. Para agrupar controles, se dibuja primero el control Frame y a continuación, los controles dentro del marco. Si se traza un control fuera del Frame y a continuación se intenta moverlo dentro de éste, el control se colocará sobre el Frame, pero no formará parte del contenedor. III.5.i. Principales propiedades de los marcos La apariencia de los marcos se define mediante las propiedades conocidas Caption, Appearance y BorderStyle. Cuando un control Frame conteniendo otros controles se hace invisible mediante su propiedad Visible = False , los controles de su interior quedan también invisibles. Mg. Ing. Fátima Martínez Introducción a los Controles Básicos en Visual Basic Mg. Ing. Fátima Martínez 9. Ejemplo de la propiedad Visible Al mostrar y ocultar el marco también se muestran u ocultan todos los controles de su interior. Private Sub cmdMostrar_Click() 'Muestra el marco frmMarco.Visible = True End Sub Private Sub cmdOcultar_Click() 'Oculta el marco frmMarco.Visible = False End Sub 10. Ejemplo completo de Frame Selecciona la Carrera y la Universidad en donde un alumno desea estudiar Contiene los siguientes controles: Control Frame Nombre frmCarreras Label Label1 commandButton cmdSalir OptionButton optCarrera(0) optCarrera(1) optCarrera(2) optCarrera(3) Frame frmInstitu Página 72 Propiedades Visible Caption Font Caption Font AutoSize Caption Style Picture Caption Caption Caption Caption Font Visible Valor True Carreras Arial 11, negrita (vacío) Verdana 10 True (vacío) 1 – Graphical D:\cancel2.jpg Ingeniería Arquitectura Letras Arte Arial 11, negrita True PROGRAMADOR UNIVERSITARIO LABORATORIO II - VISUAL BASIC AÑO 2008 OptionButton optInstitu(0) optInstitu(1) optInstitu(2) CAPITULO III Página 73 Caption Font Caption Caption Caption Font Institución Arial 10, negrita UNT UTN UNSTA Arial 10, negrita El código de los eventos asignados Public strCarrera As String, strInstitucion As String Private Sub cmdSalir_Click() End End Sub Private Sub optCarrera_Click(Index As Integer) strCarrera = optCarrera(Index).Caption Call Display End Sub Private Sub optInstitu_Click(Index As Integer) strInstitucion = optInstitu(Index).Caption Call Display End Sub Private Sub Display() Label1 = "Ha decidido estudiar " & strCarrera & " en la " & strInstitucion End Sub III.6. Cajas de listado de unidades (DriveListBox) Son cajas de listado desplegables que permiten al usuario seleccionar una unidad de disco disponible en la PC en tiempo de ejecución. Comienzan mostrando la unidad actual y para ver el resto de las unidades válidas se hace clic sobre el botón 6. III.6.i. Principales propiedades de las cajas de listado de unidades Una de las propiedades más importantes es Drive no disponible en tiempo de diseño. Otras son List , ListCount y ListIndex que permiten manipular la lista de forma similar a cualquier caja de listado. Mg. Ing. Fátima Martínez Introducción a los Controles Básicos en Visual Basic Propiedad Drive List ListCount ListIndex Mg. Ing. Fátima Martínez Descripción Devuelve o establece la unidad seleccionada en tiempo de ejecución. Contiene la lista de conexiones de unidad efectivas. Devuelve el número de conexiones con unidades de disco. Devuelve o establece el índice del elemento seleccionado actualmente en el control. No está disponible en tiempo de diseño. III.7. Cajas de listado de directorios (DirListBox) Muestra directorios y rutas de acceso en tiempo de ejecución. Es útil para mostrar una lista jerárquica de directorios. Por defecto muestra el directorio actual sobre el cual se está ejecutando la aplicación. III.7.i. Principales propiedades de las cajas de listado de directorios Además de las propiedades: List, ListCount y ListIndex posee otra muy importante: Path que permite establecer o devolver la ruta de acceso actual. Su sintaxis: objeto.Path = [ruta] III.8. Cajas de listado de archivos (FileListBox) Muestra los archivos del directorio especificado por la propiedad Path en tiempo de ejecución. Es útil para mostrar una lista de los archivos seleccionados por tipo. III.8.i. Principales propiedades de las cajas de listado de archivos Además de las propiedades: List, ListCount, ListIndex y Path que especifica la ruta de acceso para obtener el listado de archivos, posee otras: Página 74 PROGRAMADOR UNIVERSITARIO LABORATORIO II - VISUAL BASIC AÑO 2008 Propiedad FileName Pattern CAPITULO III Página 75 Descripción Devuelve o establece el nombre de un archivo seleccionado. Devuelve o establece un valor que indica los nombres de archivo mostrados en tiempo de ejecución. Es útil para filtrar los archivos a mostrar, por ejemplo: *.* o *.frm. Al igual que la caja de listado de directorios reconoce los eventos Click y DblClick del mouse, así como los de teclado KeyDown, KeyUp y KeyPress. 11. Ejemplo completo de Cajas de listado Selecciona un archivo de una carpeta dentro de una unidad. El código de los eventos asignados a cada caja de listado Private Sub Dir1_Change() 'Segundo establece los archivos del directorio File1.Path = Dir1.Path End Sub Private Sub Drive1_Change() 'Primero establece los directorios de la unidad Dir1.Path = Drive1.Drive End Sub Private Sub File1_Click() ‘Selecciona un archivo lblArchivo = File1.FileName ‘muestra el archivo seleccionado en una etiqueta End Sub III.9. Temporizador (Timer) Permite ejecutar código a intervalos periódicos produciendo un evento Timer. Este control es muy útil para crear aplicaciones donde se necesita llevar un control de tiempo o cuando se desea que el programa repita una acción cada cierto intervalo de tiempo. Mg. Ing. Fátima Martínez Introducción a los Controles Básicos en Visual Basic Mg. Ing. Fátima Martínez Este control solamente se ve durante el tiempo de diseño; en tiempo de ejecución, permanece invisible. Para agregarlo al proyecto se debe hacer doble clic en su icono de la caja de herramientas. Se emplean generalmente para: • Crear imágenes que se desplazan. • Controlar la velocidad de animaciones sencillas. • Presentar una pantalla de inicio que desaparezca luego de 1 o 2 segundos. • Mostrar una cantidad de tiempo transcurrido. Nota: No se debe abusar de su uso en los programas porque consume muchos recursos del sistema. Windows sólo permite 16 timers simultáneos. La temporización producida por el Timer es independiente de la velocidad de trabajo del ordenador, casi independiente. El Timer no es un reloj exacto, pero se le parece. III.9.i. Principales propiedades del temporizador Las propiedades más importantes son Interval y Enabled. Propiedad Enabled Descripción Propiedad booleana. Activa o desactiva el control. False desactiva el control, se cancela la cuenta establecida por la propiedad Interval del control. Interval Devuelve o establece el número de milisegundos que debe esperar el programa para generar el evento Timer . Los valores admitidos para milisegundos son 0 (predeterminado) que desactiva el control o de 1 a 65535 milisegundos que equivale a poco más de un minuto. Todo el código relacionado con este control se introduce en el evento Timer, el cual se produce cada vez que se cumple un intervalo completo. Milisegundo equivale a un segundo dividido en 1000, es decir para un retardo de un segundo la propiedad Interval será igual a 1000. En el siguiente ejemplo se establece el valor del intervalo en el evento Load del formulario y el color del texto de la etiqueta cambia en el evento Timer para dar el efecto de texto titilante. 12. Ejemplo sencillo de Timer Página 76 Private Sub Form_Load() ‘se establece el intervalo en ¼” Timer1.Interval = 250 ‘se activa el temporizador Timer1.Enabled = True PROGRAMADOR UNIVERSITARIO LABORATORIO II - VISUAL BASIC AÑO 2008 CAPITULO III Página 77 End Sub Private Sub Timer1_Timer() ‘procedimiento del temporizador en cada intervalo If lbl1.ForeColor = vbBlack then lbl1.Forecolor = vbRed Else Lbl1.ForeColor = vbBlack End if End Sub 13. Ejemplo de Timer Barra de progreso a partir de un control Timer. En tiempo de diseño se establece para el control Timer1: Interval = 100 Enabled = True (habilita el Timer) El código del evento Timer() Private Sub Timer1_Timer() ‘Procedimiento que se ejecuta en un intervalo del control Timer1 ‘Se ejecute al iniciar la aplicación porque Enabled es True 'Si Enabled es False no se ejecuta este procedimiento If lblProgreso.Width < 4215 Then ‘La etiqueta aumenta su ancho en cada intervalo del control Timer1 lblProgreso.Width = lblProgreso.Width + 100 Else lblProgreso.Width = 4215 ‘Determina el ancho máximo de la etiqueta 'Deshabilita el control Timer1 es decir deja de ejecutar el procedimiento Timer1.Enabled = False End If End Sub Mg. Ing. Fátima Martínez Introducción a los Controles Básicos en Visual Basic Mg. Ing. Fátima Martínez 14. Ejemplo de Timer Album de fotos a partir de un control Timer. En tiempo de diseño se establece para el control Timer1: Interval = 250 Enabled = True (habilita el Timer) Se agrega en el centro del formulario un control Image : Name = imgDibu con la propiedad Picture = Image37.gif . Este va cambiando su imagen en cada intervalo del control Timer1 . Para establecer la ruta de acceso actual (en la que se encuentra el proyecto), se utiliza la propiedad Path. No está disponible en tiempo de diseño. Para el objeto App es de sólo lectura en tiempo de ejecución. La sintaxis es: A p p . P a t h El código del evento Timer() Private Sub Timer1_Timer() 'define un contador como una variable estática 'la cual no cambia al salir del procedimiento Static a As Integer a=a+1 'incrementa el contador en cada intervalo If a = 5 Then 'Si el contador llegó a 5 'carga otra imagen, utiliza App.Path para establecer la ruta actual imgDibu.Picture = LoadPicture(App.Path + "\image\Image38.gif") ElseIf a = 20 Then 'si no si el contador llegó a 20, carga otra imagen imgDibu.Picture = LoadPicture(App.Path + "\image\Image39.gif") ElseIf a = 35 Then 'si no si contador llegó a 35, carga otra imagen imgDibu.Picture = LoadPicture(App.Path + "\image\Image40.jpg") Página 78 PROGRAMADOR UNIVERSITARIO LABORATORIO II - VISUAL BASIC AÑO 2008 CAPITULO III Página 79 End If End Sub 15. Ejemplo de Timer Album de imagenes a partir de un control Timer. Para el control Timer1 se establece, en tiempo de diseño : Interval = 250 Enabled = True (habilita el Timer) Se agregan, en tiempo de diseño , en el formulario 4 imágenes: Image1, Image2, Image3, Image4 con la propiedad Visible = False y para cada una se asigna una imagen en la propiedad Picture. Se agrega una imagen Image5 en el centro del formulario , con la imagen de un cuadro, sobre la cual irán apareciendo de una en una las imágenes en cada intervalo del control Timer1. Por último se agrega una imagen imgFoto, en la misma posición del control Image5 , la cual irá tomando en cada intervalo del control Timer1 el valor del Picture de cada una de las imágenes que se encuentran ocultas en el formulario. El código del evento Timer() Option Explicit Dim A As Integer 'Declara la variable a nivel de modulo 'A - esta disponible para todos los procedimientos Private Sub cmdReini_Click() ‘procedimiento del botón Reiniciar Timer1.Enabled = True 'Activa el Timer para reiniciar su ejecución 'Inicializa la variable A=0 End Sub Private Sub Timer1_Timer() A=A+1 If A = 3 Then imgFoto.Picture = Image1.Picture ‘toma el valor del Picture de Image1 Mg. Ing. Fátima Martínez Introducción a los Controles Básicos en Visual Basic Mg. Ing. Fátima Martínez ElseIf A = 6 Then imgFoto.Picture = Image2.Picture ‘toma el valor del Picture de Image2 ElseIf A = 9 Then imgFoto.Picture = Image3.Picture ‘toma el valor del Picture de Image3 ElseIf A = 12 Then imgFoto.Picture = Image4.Picture ‘toma el valor del Picture de Image4 Timer1.Enabled = False ' desactiva el Timer1 End If End Sub III.10. Barras de desplazamiento: Horizontal (HscrollBar) y Vertical (VscrollBar) Las barras de desplazamiento se utilizan en las aplicaciones para desplazarse horizontal o verticalmente cuando hay gran cantidad de información o cuando los controles toman gran tamaño. Tienen la misma finalidad de aquellas que aparecen en los cuadros de texto cuando el contenido de su propiedad Text sobrepasa el tamaño de los mismos o las que aparecen en un cuadro de lista o combinado cuando el número de elementos es mayor al tamaño designado para la muestra de ellos. Ambas barras: horizontal (HscrollBar) y vertical (VscrollBar) trabajan de la misma manera sólo se diferencian en la orientación. Devuelven un valor numérico el cual puede ser usado de manera conveniente en una aplicación. Son ideales para ingresar valores numéricos gráficamente. Las flechas se utilizan para desplazarse distancias reducidas. La barra para moverse a grandes saltos. El botón llamado “dedo gordo” puede ser arrastrado para desplazarse a una posición específica de la barra. Principales propiedades de las barras de desplazamiento III.10.i. Como se mencionó, las barras de desplazamiento devuelven un valor numérico, por lo tanto existen cinco propiedades que controlan esos números: Value, Max, Mín, SamallChange y LargeChange . Propiedad Descripción LargeChange De 1 a 32767. Cantidad de cambio cuando el usuario hace clic en la barra que se encuentra entre una flecha y el dedo gordo. Max Máximo valor de desplazamiento cuando el botón se encuentra en la posición más alta. Valor predeterminado: 32767. Página 80 PROGRAMADOR UNIVERSITARIO LABORATORIO II - VISUAL BASIC AÑO 2008 Propiedad Min CAPITULO III Página 81 Descripción Mínimo valor del desplazamiento cuando el botón se encuentra en la posición más baja. Valor predeterminado: 0. SmallChange De 1 a 32767. Controla la cantidad en que aumenta o disminuye Value. Es la cantidad de cambio cuando el usuario hace clic en la flecha de desplazamiento. Value Valor actual en la escala de valores. Normalmente la propiedad LargeChange suele ajustarse a un valor que represente el 10% del intervalo total. Por ejemplo, para una barra que se desplace entre 1 a 100 el valor LargeChange puede ser 10 y el de SamallChange puede ser 1. 16. Ejemplo de barra de desplazamiento vertical. El siguiente programa sencillo permite ver la equivalencia entre las escalas de temperaturas en grados Centígrados y grados Fahrenheit. Private Sub cmdSalir_Click() End End Sub Private Sub vsbTempe_Change() txtCenti.Text = vsbTempe.Value txtFahre.Text = 32 + 1.8 * vsbTempe.Value End Sub Control VscrollBar Nombre vsbTemperatura Propiedades Min Máx SmallChange LargeChange Value Valor 100 -100 1 10 0 El evento Load del formulario es ideal para establecer los valores iniciales de la barra de desplazamiento. Mg. Ing. Fátima Martínez Introducción a los Controles Básicos en Visual Basic Mg. Ing. Fátima Martínez Nota: El evento Change se activa cada vez que cambia el valor de la barra de desplazamiento mediante las flechas o la barra y el evento Scroll cuando se arrastra el dedo gordo. 17. Ejemplo de barras de desplazamiento horizontal. La siguiente aplicación muestra un formulario y los controles que permiten cambiar el color de la fuente y el color de fondo de una etiqueta. El control barra de desplazamiento horizontal es un arreglo de tres elementos, uno para cada color denominado hsbColor(Index). Las opciones Fondo y Texto son elementos de un arreglo de botones de opción denominado optColor(Index). Los cuadros de texto que muestran los valores de las barras pertenecen a un arreglo denominado txtColor(Index). El evento que se programa es Change. Un arreglo de controles esta formado por controles del mismo tipo que comparten el nombre y los procedimientos o funciones para gestionar los eventos. Para identificar a cada uno de los controles pertenecientes al arreglo se utiliza Index que es una propiedad del control. Su utilidad principal se presenta en aquellos casos en los que el programa debe responder de forma semejante a un mismo evento sobre varios controles del mismo tipo. Control HsbcrollBar Nombre hsbColor() OptionButton optColor() Página 82 Propiedades Min Máx SmallChange LargeChange Index Value Caption Font Valor 0 255 1 16 0, 1, 2 0 Fondo, Texto Arial, 10 negrita PROGRAMADOR UNIVERSITARIO LABORATORIO II - VISUAL BASIC AÑO 2008 TextBox txtColor() CAPITULO III Página 83 Index Text Locked Index 0, 1 (vacío) True 0, 1, 2 El código de los eventos asignados Option Explicit ‘Declara las variables públicas Public Brojo, Bverde, Bazul As Integer Public Frojo, Fverde, Fazul As Integer Private Sub cmdSalir_Click() End End Sub Private Sub Form_Load() 'Fondo Negro Brojo = 0 Bverde = 0 Bazul = 0 'Texto blanco Frojo = 255 Fverde = 255 Fazul = 255 lblTexto.BackColor = RGB(Brojo, Bverde, Bazul) lblTexto.ForeColor = RGB(Frojo, Fverde, Fazul) End Sub Private Sub hsbColor_Change(Index As Integer) 'Evento CHANGE del control barra de desplazamiento Dim i As Integer If optColor(0).Value = True Then 'Función RGB determina los colores lblTexto.BackColor=RGB(hsbColor(0).Value,hsbColor(1).Value, hsbColor(2).Value) For i = 0 To 2 txtColor(i).Text = hsbColor(i).Value Next i Else lblTexto.ForeColor=RGB(hsbColor(0).Value,hsbColor(1).Value, hsbColor(2).Value) For i = 0 To 2 txtColor(i).Text = hsbColor(i).Value Next i End If End Sub Private Sub optColor_Click(Index As Integer) If Index = 0 Then 'se pasa a cambiar el fondo Mg. Ing. Fátima Martínez Introducción a los Controles Básicos en Visual Basic Mg. Ing. Fátima Martínez Frojo = hsbColor(0).Value Fverde = hsbColor(1).Value Fazul = hsbColor(2).Value hsbColor(0).Value = Brojo hsbColor(1).Value = Bverde hsbColor(2).Value = Bazul Else ' Se pasa a cambiar el texto Brojo = hsbColor(0).Value Bverde = hsbColor(1).Value Bazul = hsbColor(2).Value hsbColor(0).Value = Frojo hsbColor(1).Value = Fverde hsbColor(2).Value = Fazul End If End Sub III.11. Arreglo de controles Un arreglo de controles es un grupo de controles que comparten el mismo: • Tipo de objeto. • Nombre del control y están identificados por un índice. • Procedimientos de evento. Por ejemplo un arreglo de cajas de texto, todos sus elementos deben ser cajas de texto. Una vez creado podemos referirnos a todo el arreglo mediante su nombre o a cada elemento mediante su índice usando paréntesis, por ejemplo Text1(1). La propiedad Index determina el índice de cada control en el arreglo. La principal utilidad de los arreglos se presenta en aquellos casos en los que el programa debe responder de forma semejante a un mismo evento sobre varios controles del mismo tipo. De esta manera el código es más fácil de escribir y mantener debido a que solo se escribe un solo procedimiento de evento para todos los controles pertenecientes al arreglo, el parámetro Index del procedimiento de evento determina desde que control ocurrió el evento. El ejemplo más claro es el de los botones de opción. En estos casos el programa responde de manera semejante independientemente de cuál es la opción seleccionada. III.11.i. Ventajas • Comparten el mismo nombre, no es necesario dar distintos nombres a cada control. • Es más fácil modificar las propiedades de todos los controles en tiempo de ejecución ya que podemos referirnos al subíndice de cada uno. • Comparten el mismo procedimiento de suceso en cada evento, no es necesario repetir el código para cada control por separado. Es decir si Página 84 PROGRAMADOR UNIVERSITARIO LABORATORIO II - VISUAL BASIC AÑO 2008 CAPITULO III Página 85 tenemos un arreglo con 20 botones de comando, todos tienen el mismo evento Click . Nota: tienen el mismo procedimiento. • Requiere menos recursos que tenerlos por separado. • Cuando se copia un control y luego se lo pega, el nuevo control tiene las mismas propiedades que el anterior. III.11.ii. Crear un arreglo de controles Un arreglo de controles se crea en tiempo de diseño en forma rápida de la siguiente manera. Método 1 1. Agregar un control al formulario, por ejemplo una caja de texto (Text1). 2. Seleccionarlo y copiarlo con CTRL + C , luego pegarlo en el formulario CTRL + V. Visual Basic pregunta mediante el siguiente mensaje si se quiere crear el arreglo: Ya existe un control Text1. ¿Desea crear una matriz de controles? [Si] [No] Se contesta Sí para construir el arreglo, así Visual Basic creará un arreglo de controles que tendrá los elementos T e x t 1 ( 0 ) y T e x t 1 ( 1 ) . Si no queremos crear se contesta NO y Visual Basic le asignará un nuevo nombre al control pegado. Método 2 3. Agregue un control y establezca su nombre igual al del primer control. Visual Basic le preguntará si desea crear un arreglo de controles. 4. Repita el paso 1 hasta completar el arreglo. Método 3 1. Agregue un control y establezca su propiedad Index en 0. Cuando un control es ubicado en el formulario, esta propiedad se encuentra vacía. Si se le da un valor por ejemplo 0, se establece un nuevo arreglo de controles con el nombre de ese control. 2. Copie y pegue ese control. Cada control que pegue tendrá el mismo nombre del control copiado y su índice irá incrementando de uno en uno. Mg. Ing. Fátima Martínez Introducción a los Controles Básicos en Visual Basic Mg. Ing. Fátima Martínez Ejemplo 1: Marcador de teléfono. Se emplea un arreglo de cajas de texto en donde se utiliza el Index para conocer el número seleccionado (Birnios y Birnios; 2003: 243). El código del evento Click de los controles Private Sub cmdBorra_Click() txtNumero = "" End Sub Private Sub cmdSalir_Click() End End Sub Private Sub Label1_Click(Index As Integer) 'Format función que devuelve una cadena 'En lugar se puede usar Str función que transforma en cadena txtNumero = txtNumero + Format(Index) End Sub Ejemplo 2 La siguiente aplicación tiene un arreglo de controles para seleccionar el reporte. El procedimiento de evento es el mismo para cualquier elemento del arreglo2. OptReport(0) OptReport(1) OptReport(2) lblDesde lblHasta lblRango 2 “Fundamentos de programación en Visual Basic”; http://www.cs.us.es/cursos/ai-2003/VB/VB.pdf. Página 86 PROGRAMADOR UNIVERSITARIO LABORATORIO II - VISUAL BASIC AÑO 2008 CAPITULO III Página 87 El código del evento Click para los OptionButton Private Sub optReport_Click(Index As Integer) ‘Index es el índice de cada elemento del arreglo de botones de opción If Index = 0 Or Index = 1 Then lblRango.Enabled = False lblDesde.Enabled = False lblHasta.Enabled = False txtDesde.Enabled = False txtHasta.Enabled = False ElseIf Index = 2 Then lblRango.Enabled = True lblDesde.Enabled = True lblHasta.Enabled = True txtDesde.Enabled = True txtHasta.Enabled = True txtDesde.SetFocus End If End Sub Ejemplo 3 La siguiente aplicación tiene un arreglo de controles para seleccionar el estilo del texto copiado en el cuadro de texto. El código del evento Click de los controles CheckBox y OptionButton Private Sub chkEstilo_Click(Index As Integer) If chkEstilo(0).Value = 1 Then txtOtro.Font.Bold = True Mg. Ing. Fátima Martínez ‘pone en negrita Introducción a los Controles Básicos en Visual Basic Mg. Ing. Fátima Martínez Else txtOtro.Font.Bold = False ‘saca negrita End If If chkEstilo(1).Value = 1 Then txtOtro.Font.Italic = True ‘pone la fuente en cursiva Else txtOtro.Font.Italic = False ‘saca la fuente cursiva End If End Sub Private Sub optMaymin_Click(Index As Integer) If Index = 0 Then 'Convierte a mayúsculas por medio de la función UCase() txtOtro = UCase(txtOtro) Else 'Convierte a minúscula por medio de la función LCase() txtOtro = LCase(txtOtro) End If End Sub Nota: En el caso de no utilizar arreglo de controles se escribiría el código de los procedimientos por cada control a seleccionar. III.12. Ejercicios propuestos Eje. 1) Cree una aplicación con una caja de lista de marca de autos, con los elementos ordenados. Trabaje con la propiedad Sorted. Mediante un botón de comando agregue items a la lista desde el texto ingresado en una caja de texto y mediante otro botón elimine el item seleccionado. Incorpore a la aplicación una caja de texto que muestre el número de items en la lista. Ejecute la aplicación y chequee el cambio en la caja de texto creada al agregar un item o al eliminarlo. Eje. 2) Modifique la aplicación anterior de tal forma que cuando el usuario haga clic en un elemento de la lista, una caja de texto muestre el nombre del auto seleccionado. Recuerde : cuando un item es seleccionado, la propiedad List1.Text contiene el texto del item seleccionado. Eje. 3) Realice una aplicación que solicite el nombre de 10 personas. Según se va escribiendo en una caja de texto el nombre queda incorporada en un ListBox en forma ordenada. Eje. 4) Realice una aplicación que permita elegir un gráfico de una carpeta. Para ello inserte en un formulario a. Un combo con las siguientes opciones: '*.gif', '*.jpg','*.png' b. Un control en el que se puede cambiar la unidad. Página 88 PROGRAMADOR UNIVERSITARIO LABORATORIO II - VISUAL BASIC AÑO 2008 CAPITULO III Página 89 c. Un control en el que se puede elegir la carpeta de la unidad especificada anteriormente. d. Un control en el que se ven los ficheros que estén en la carpeta indicada anteriormente y que cumplan la norma del combo. e. Una etiqueta en la cual aparezca el mensaje “I magen seleccionada XXX” al seleccionar el archivo. f. Una caja de imagen donde se puede ver la imagen. Eje. 5) Realice un programa que muestre un mensaje en una etiqueta “Ha sido contratado” si el aspirante cumple con todos los requisitos, o “No ha es contratado” si no cumple todos los requisitos. a. Cambie el título del formulario a Requisitos. b. Coloque tres casillas de verificación con las siguientes opciones: Entre 20 y 30 años; Tiene experiencia en el área; Bilingüe. c. Un botón de comando Contratar debajo de las casillas de verificación, realizará la verificación de cuáles son las opciones activadas y mostrará el mensaje en una etiqueta. d. Debajo del botón de comando ubique una etiqueta con las propiedades de tal manera que su tamaño se adecue al texto, este aparezca centrado dentro de la misma y el tipo de fuente sea Arial 12, negrita. Eje. 6) Realice un programa en cual se debe seleccionar un mes y al presionar un botón de comando, se despliegue en el cuadro de texto en número de mes correspondiente al Número de Mes. Para ello agregue en el formulario una etiqueta con el texto: Mes Nº; a su lado un cuadro de texto; un botón de comando Numero de Mes; un control ComboBox. a. La lista de los meses se agrega en el combo en el momento que se carga el formulario. b. El botón de comando Numero de Mes mostrará en el cuadro de texto el número correspondiente al mes seleccionado en el combo. Eje. 7) Crea una aplicación que permita realizar una de las cuatro operaciones matemáticas, para ello inserta en un formulario: tres etiquetas, tres cajas de texto, una caja de combo y tres botones de comando, tal como se muestra en la figura. Considera lo siguiente: a. Las operaciones matemáticas deben Mg. Ing. Fátima Martínez Introducción a los Controles Básicos en Visual Basic Mg. Ing. Fátima Martínez agregarse a la lista del ComboBox en el momento que se carga el formulario. b. Al iniciar la ejecución el foco debe estar en el cuadro de texto donde ingresa la Cantidad 1. c. El cursor pasará a la siguiente caja de texto con la tecla Tab y de allí al ComboBox. d. El botón Calcular se encontrará deshabilitado mientras no se haya seleccionado ninguna de las distintas opciones de la lista. Según la opción seleccionada en el ComboBox realiza la operación, siempre y cuando en las cajas de texto se haya ingresado algún valor. e. Si se ingresan valores pero en el ComboBox no se selecciona ninguna operación el foco regresa al primer número, pero no se permite pasar al botón Calcular que seguirá deshabilitado. f. El botón Nuevo Cálculo borra el contenido de las cajas de texto, pone el foco en la primera, borra la operación seleccionada y deshabilita el botón Calcular. g. El botón Salir termina la aplicación, también debe permitirse su ejecución con la tecla [ESC]. Nota: utilice el método SetFocus para poner el foco en el control. Eje. 8) Realice un programa que calcule el Cociente y Resto con barras de desplazamiento. Agrega en el formulario dos barras de desplazamiento horizontal; cuatro cajas de texto. Considera lo siguiente: a. Determine el valor máximo y el mínimo para cada barra de desplazamiento. b. El valor que asuman cada barra de desplazamiento determinará el dividendo y el divisor (los números a dividir). c. En la primera caja de texto establezca el valor (dividendo) de la primera barra de desplazamiento; en la segunda caja de texto, el valor (divisor) de la segunda barra de desplazamiento. d. En la tercera caja de texto disponga el valor del cociente entero, en la cuarta caja de texto, el resto de la división. Nota: para la división entera su operador es (\), para el resto utilice el operador Mod. Página 90 PROGRAMADOR UNIVERSITARIO LABORATORIO II - VISUAL BASIC AÑO 2008 CAPITULO III Página 91 Eje. 9) Un restaurante de comida rápida desea instalar un sistema de menú automático. Crea una aplicación para ello que cumpla los siguientes requerimientos: a. Los comensales indicarán cual es su dieta r‘ egular’ o ‘vegetariana’. Utiliza botones de opción gráficos. b. De acuerdo a la dieta se darán tres listas para escoger: bebidas, platillo principal y postres. c. La carga de cada uno de los elementos de las tres listas se hará en tiempo de ejecución. d. Según las elecciones del consumidor se presentará el menú completo en una caja de texto Menú , por ejemplo: Pollo frito c/ensalada mixta, agua tónica y suflés de coco. Utiliza la propiedad adecuada para que admita varias líneas de texto. e. En una etiqueta delante de la caja de texto mostrarás: Escogiste comida XXX según el tipo de comida escogida. f. Limpia la caja de texto de Menú para otro cliente. g. Modifica el título del formulario: Restaurante típico Nota: Usa la propiedad adecuada para hacer que la lista apropiada esté accesible según se requiera. BIBLIOGRAFÍA CONSULTADA Y RECURSOS EN LA WEB Nombre Microsoft Visual Basic 6.0. Manual de Referencia Aprenda Visual Basic 6.0 Autor, Edición, Editorial / Dirección del Sitio Birnios, B. y Birnios, M.; 2003; Manuales USERS; MP Ediciones; Buenos Aires – Argentina. http://www.esnips.com/doc/a1f3a80f-ec28-4d6f-869184e59aec86fd/GuiaVB_6 (accedido 03/08/2007) Aprenda Visual Basic 6.0 como si estuviera en Primero http://www.tecnun.es/asignaturas/Informat1/ayudainf/aprendainf/Visual Basic6/vbasic60.pdf; (accedido 10/03/2007) Control CheckBox http://www.recursosvisualbasic.com.ar/htm/tutoriales/control_checkbox. htm; (accedido 14/07/2007) Fundamentos de Programación en Visual Basic Visual Basic - Guía del Estudiante. Cap. 2 Visual Basic 6.0. Programación Orientada a Objetos Mg. Ing. Fátima Martínez http://www.cs.us.es/cursos/ai-2003/VB/VB.pdf; (accedido 14/07/2007). http://www.monografias.com/trabajos2/guiavb/guiavb.shtml; (accedido 10/07/2007) http://www.lawebdelprogramador.com/cursos/enlace.php?idp=2175&id =93&texto=visual+basic (accedido 10/03/2007) Introducción a los Controles Básicos en Visual Basic Mg. Ing. Fátima Martínez 1) La herramienta que permite elegir una opción entre varias: a) ListBox b) OptionButton c) CheckBox 2) El control ListBox es utilizado para: a) Mostrar una lista de artículos de los cuales el usuario puede escoger sólo uno. b) Mostrar una lista de artículos de los cuales el usuario puede escoger uno o más. c) Mostrar opciones de las cuales el usuario puede escoger sólo una. 3) ¿Cómo se insertan elementos en un control ListBox durante el tiempo de diseño? a) A través del menú Edición. b) Con la propiedad List. c) Haciendo doble click en el control. 4) El control ComboBox combina las características de los controles: a) TextBox y CheckBox b) TextBox y ListBox c) TextBox y ListDirBox 5) ¿En qué orden se crea un grupo de controles usando el control Frame? a) Primero cada uno de los controles y a continuación el control Frame. b) Primero el control Frame y a continuación cada uno de los controles, colocándolos fuera del marco. c) Primero el control Frame y a continuación cada uno de los controles, colocándolos dentro del marco. 6) ¿Qué propiedad muestra la unidad seleccionada de un cuadro de lista de unidades? a) Unidad.Path b) Unidad.Drive c) Unidad.Filename 7) ¿Qué indica App.Path? a) La carpeta en la que se encuentra el programa que se está ejecutando. b) La ruta de acceso actual del proyecto. c) El tamaño de un archivo de programa. 8) El Timer se puede observar en: a) Tiempo de ejecución. b) Tiempo de diseño. c) En la ventana de proyectos. 9) ¿Qué propiedad del control Timer determina el lapso de tiempo del bucle? a) Enabled b) Interval c) Index 10) ¿Qué parámetro se necesita para poder diferenciar los elementos de un procedimiento de evento en array o matriz de controles? a) TabIndex b) Index c) Button Página 92