Bitácora del desarrollo de mi clase de Visual Basic, en el que ´publicaré el material de la clase y recibiré comentarios y sugerencias de mis alumnos.

Friday, July 31, 2009

4.2.1. Sentencia If... Then... Else

Estructuras de Decisión

Los procedimientos de Visual Basic pueden probar condiciones y, dependiendo de los resultados, realizar diferentes operaciones. Entre las estructuras de decisión que acepta Visual Basic se incluyen las siguientes:

§ If...Then

§ If...Then...Else

§ Select Case

If...Then

Use la estructura If...Then para ejecutar una o más instrucciones basadas en una condición. Puede utilizar la sintaxis de una línea o un bloque de varias líneas:

§ If condición Then Sentencias

§ If condición Then

Sentencias

End If

Condición normalmente es una comparación, pero puede ser cualquier expresión que dé como resultado un valor numérico. Visual Basic interpreta este valor como True o False; un valor numérico cero es False y se considera True cualquier valor numérico distinto de cero. Si condición es True, Visual Basic ejecuta todas las sentencias que siguen a la palabra clave Then. Puede utilizar sintaxis de una línea o de varias líneas para ejecutar una sentencia basada en una condición, los siguientes dos ejemplos son equivalentes:

If cualquierFecha < Now Then CualquierFecha = Now


If cualquierFecha < Now Then

CualquierFecha = Now

End If

Observe que el formato de una única línea de If...Then no utiliza la instrucción End If. Si se desea ejecutar más de una línea de código cuando condición sea True, debe utilizar la sintaxis de bloque de varias líneas If...Then...End If.

If cualquierFecha < Now Then

CualquierFecha = Now

Timer1.Enabled = False ‘ Desactiva el control Timer.

End If


If chkAlumnoUNI.Value=1 Then

txtCosto = Format (txtCosto*0.70,”Fixed”)

txtCódigo.Enabled = True

End If

If...Then...Else

Utilice un bloque If...The...Else para definir varios bloques de sentencias, uno de los cuales se ejecutará:

If condición1 Then

[bloque de sentencias 1]

[ElseIf condición2 Then

[bloque de sentencias 2]] ...

[Else

[bloque de sentencias n]]

End If

Visual Basic evalúa primero condición1. Si es False, Visual Basic procede a evaluar condición2 y así sucesivamente, hasta que encuentre una condición True. Cuando encuentra una condición True, Visual Basic ejecuta el bloque de instrucciones correspondientes y después ejecuta el código que sigue a End If. Opcionalmente, puede incluir un bloque de instrucciones Else, que Visual Basic ejecutará sin ninguna de las condiciones es True.

If...Then...ElseIf es un caso especial de If...Then...Else. Observe que puede tener cualquier número de cláusula ElseIf o ninguna. Puede incluir una cláusula Else sin tener en cuenta si tiene o no cláusula ElseIf.

Por ejemplo, la aplicación podría realizar distintas acciones dependiendo del control en que se haya hecho clic de una matriz de controles de menú:

Ejemplo1

Private Sub mnuCut_Click (Index As Integer)

If Index = 0 Then ‘ Comando Cortar

CopyActiveControl ‘ Llama a procedimientos generales

ClearActiveControl

ElseIf Index = 1 Then ‘ Comando Copiar

CopyActiveControl

ElseIf Index = 2 Then ‘ Comando Borrar

ClearActiveControl

Else ‘ Comando Pegar

PasteActiveControl

End If

End Sub

Ejemplo2:

If ClaveUsuario=”DSI” Then

‘ Permite al usuario entrar al sistema

...

...

Else

‘ Mostrar un mensaje advirtiendo error en la clave

...

...

End If

Ejemplo3:

Private Sub DeterminaCondición ( )

If Val (txtPromedio) >=13 Then

txtCondición = “Aprobado”

ElseIf Val (txtPromedio) >= 10 Then

txtCondición = “Asistente”

Else

txtCondición = “Desaprobado”

End If

End Sub

Observe que siempre puede agregar más cláusulas ElseIf a la estructura If...Then. Sin embargo, esta sintaxis puede resultar tediosa de escribir cuando cada ElseIf compara la misma expresión con un valor distinto. Para estas situaciones, puede utilizar la estructura de decisión Select Case.

4.2. Sentencias de selección

Estructuras de Decisión

Los procedimientos de Visual Basic pueden probar condiciones y, dependiendo de los resultados, realizar diferentes operaciones. Entre las estructuras de decisión que acepta Visual Basic se incluyen las siguientes:

§ If...Then

§ If...Then...Else

§ Select Case

4.1. Operadores aritméticos y lógicos

Operadores

Aritméticos

^ Exponenciación

* Multiplicación

/ División

División entera

Mod Residuo entero (Ejm: A Mod B)

+ Suma

- Resta

& Concatenación de cadenas

Comparación

= Igual

<> Distinto

Ø Menor que

<= Menor o igual

>= Mayor o igual

Like Compara dos cadenas

* Cero o más caracteres (Ejm: cad Like “ma*”)

? Cualquier carácter

# Cualquier dígito (0-9)

[lista] cualquier carácter en lista

[¡lista] cualquier carácter que no esta en lista

Is Usado para comparar dos variables de referencia a objetos

Lógicos

And “Y” lógico

Or “O” lógico

Xor “O” Exclusivo

Not Negación

4. Ciclos y sentencias lógicas (sentencias de control del flujo)

Tema desglozado

3.8. Barras de desplazamiento

Barra de Desplazamiento Horizontal (HScrollBar)

Barra de Desplazamiento Vertical (VScrollBar)

Son usuados con frecuencia para permitir rápidos desplazamientos a través de una lista grande de items. Por ejemplo: archivos, indicadores de posición actual de una escala de valores, indicadores de volumen en un sistema de audio.

Propiedades

LargeChange De 1 a 32767. Cantidad de cambio cuando el usuario hace clic en el desplazamiento largo.

Max Máximo valor de desplazamiento cuando el botón se encuentra en la posición más alta. Valor predeterminado: 32767.

Min Mínimo valor del desplazamiento cuando el botón se encuentra en la posición más baja. Valor predeterminado: 0.

Name Nombre ddel control.

SmallChange De 1 a 32767. Cantidad de cambio cuando el usuario hace clic en la flecha de desplazamiento.

Value Valor actual en la escala de valores.


Evento

Change Ocurre cuando el usuario se desplaza o se cambia el valor de la propiedad Value.

3.7. Listas y listas desplegables

Control Cuadro de Lista (ListBox)

Un control ListBox muestra una lista de elementos entre los cuales el usuario puede seleccionar uno o más elementos. Si el número de elementos supera el número que puede mostrarse, se agregará automáticamente una barra de desplazamiento al control ListBox.

La propiedad List es un arreglo que contiene los elementos de la lista, y comienza con índice 0. La propiedad ListCount establece el número total de elementos de la lista. La propiedad ListIndex contiene el índice del elemento seleccionado, el cual es un número entre 0 (primer elemento) y el número total de elementos en la lista –1 (ListCount – 1). Si no se selecciona ningún elemento, el valor de la propiedad ListIndex será –1.

La propiedad NewIndex contiene el índice del último elemento añadido a la lista. Esto puede ser útil si desea hacer algo con el elemento añadido, por ejemplo, que sea el elemento actualmente seleccionado.

Propiedades

Enabled True/False. Determina si el control responde a las acciones del usuario.

List Arreglo con los elementos de la lista.

ListCount Número de elementos de la lista.

ListIndex Elemento seleccionado.

MultiSelect Establece si es posible seleccionar varios elementos o uno solo.

Name Nombre del control.

NewIndex Indice del último elemento añadido al Cuadro de Lista.

Selected Arreglo de valores lógicos paralelo y del mismo tamaño al arreglo list, indica que elementos han sido seleccionados (True) de la lista. Se utiliza en lugar de ListIndex cuando establecemos la propiedad Multiselect en 1 ó 2.

Sorted True/False. Establece los elementos se ordenan alfabéticamente.

Style Establece el comportamiento del control.

Text Devuelve el elemento seleccionado en el cuadro de lista; el valor de retorno es siempre equivalente al que devuelve la expresión List(ListIndex). Es de sólo lectura en tiempo de diseño y es de sólo lectura en tiempo de ejecución.

Métodos

AddItem Permite añadir nuevos elementos a la lista.

RemoveItem Permite eliminar elementos de la lista.


Eventos

Click Ocurre cuando el usuario interactúa con el control.


Ejemplos

Muestra en el Cuadro de Texto txtGaseosa el elemento seleccionado

Private Sub lstGaseosas_Click()

txtGaseosa.Text = lstGaseosas.Text

End Sub

Añade un nuevo elemento al Cuadro de Lista lstGaseosas

Private Sub cmdAgregar_Click()

Dim strNuevoElemento As String

strNuevoElemento = InputBox("Ingrese una nueva gaseosa:", _

"Nueva gaseosa")

If Trim(strNuevoElemento) <> "" Then

lstGaseosas.AddItem strNuevoElemento

End If

End Sub

Elimina el elemento actual del Cuadro de Lista lstGaseosas

Private Sub cmdEliminar_Click()

If lstGaseosas.ListIndex <> -1 Then

lstGaseosas.RemoveItem lstGaseosas.ListIndex

End If

End Sub

3.6. Menus

Pendiente

3.5.1. Agrupando botones de opción

Arreglo de Controles

Cuando creamos un arreglo de controles, todos los controles que forman el arreglo deben tener el mismo nombre (Propiedad Name), la propiedad Index establece el índice de cada control en el arreglo, esta propiedad comienza desde 0.

Un arreglo de controles es un grupo de controles que comparten el mismo:

§ Tipo de objeto

§ Nombre del control

§ Procedimientos de evento

Código más fácil de escribir y mantener

Los arreglos de controles hace que el código sea más fácil de escribir y mantener debido a que solo 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.

Código más eficiente

Los arreglos de controles hacen que el código sea más eficiente y mejoran el rendimiento de la aplicación debido a que usa menos recursos del sistema que los controles individuales.

¿Cómo se crea un arreglo de controles?

Luego de crear y establecer el nombre del primer control, tiene dos alternativas:

Método 1

1. Copiar el primer control al portapapeles.

2. Luego pegar el control de portapapeles en el formulario. Visual Basic le preguntará si desea crear un arreglo de controles.

3. Repita el paso 2 hasta completar el arreglo.

Método 2

1. Dibuje el siguiente control y establezca su nombre igual al del primer control. Visual Basic le preguntará si desea crear un arreglo de controles.

2. Repita el paso 1 hasta completar el arreglo.

Ejemplo

La interfaz mostrada tiene un arreglo de controles para seleccionar el reporte, el procedimiento de evento es el mismo para cualquier elemento del arreglo.


El código para el evento clic es:

Private Sub optReporte_Click(Index As Integer)

Select Case Index

Case 0, 1

fraRango.Enabled = False

lblDesde.Enabled = False

lblHasta.Enabled = False

txtDesde.Enabled = False

txtHasta.Enabled = False

Case 2

fraRango.Enabled = True

lblDesde.Enabled = True

lblHasta.Enabled = True

txtDesde.Enabled = True

txtHasta.Enabled = True

txtDesde.SetFocus

End Select

End Sub


3.5. Marcos

Control Marco (Frame)

Este control permite agrupar otros controles para darle mayor funcionalidad a la interfaz. Los controles Botones de Opción necesariamente tienen que estar agrupados por el control Marco. Para agrupar controles, dibuje primero el control Marco y, a continuación, dibuje los controles dentro de Marco.

Propiedades

Caption Título de marco.

Enabled Determina si está habilitado para responder a las acciones del usuario.

Name Nombre del control.

Visible Determina si el Marco y los controles que contiene están visibles o no.

3.4. Botón de opción

Control Botón de Opción (OptionButton)

Estos controles se utilizan para que el usuario seleccione una opción de un grupo opciones. La opción seleccionada tiene un punto en el centro.

Propiedades

Caption Descripción que acompaña a la opción.

Enabled True/False. Determina si está habilitado para responder a las acciones del usuario.

Name Nombre del control.

Value True/False, marcado o no marcado.

Visible True/False. Determina si el botón está visible o no.

Eventos

Click Ocurre cuando el usuario hace clic sobre el botón.


3.3. Casillas de verificación

Control Casilla de Verificación (CheckBox)

Las casillas de verificación se utilizan para proporcionar al usuario opciones de tipo Si/No o Verdadero/Falso. Cuando el usuario selecciona una opción (activa la casilla), aparece una marca de verificación (a) dentro de la casilla.

Propiedades

Caption Descripción que acompaña a la casilla.

Enabled True/False. Determina si está habilitado para responder a las acciones del usuario.

Name Nombre del control.

Value 0 – Unchecked (Vacío, no marcado)

1 – Checked (Marcado)

2 – Grayed (Gris, Indefinido)

Visible Determina si la casilla está visible o no.


Eventos

Click Ocurre cuando el usuario hace clic sobre la casilla.