Sunteți pe pagina 1din 49

Programar con Visual Basic

Por: Ariel Palazzesi @ viernes, 09 de mayo de 2008 Nota vista 5687 veces
Si alguna vez has sentido deseos de crear tus propios programas, estas de parabi
enes: en
NeoTeo te enseñaremos, paso a paso, como crear programas utilizando una de las
herramientas mas sencillas y potentes que puedes conseguir: Visual Basic. ¿Comenza
mos?

Figura 1: comenzando la descarga.


A pesar de lo ampliamente difundido que se encuentra Visual Basic en todas sus v
ersiones,
hasta no hace mucho había que gastar un buen montón de dinero para hacerse con una
copia de esta magnifica herramienta. Sin embargo, Microsoft ha decidido distribu
ir
versiones gratuitas de algunos de sus lenguajes de programación más populares. Se tr
ata de
copias totalmente operativas, aunque con algunas limitaciones.
Visual Basic 2005 Express es la versión gratis que utilizaremos en este tutorial.
Para
acceder a ella, lo primero que debes hacer es descargar e instalar el paquete
correspondiente. Se trata de una descarga de aproximadamente 380MB, que puedes
conseguir en el sitio oficial que Microsoft ha puesto en línea para este producto.

Veamos como instalarlo. Por supuesto, haremos clic sobre versión final en español , lo
que hará que nuestro navegador nos pregunte si deseamos guardar o ejecutar el prog
rama al
que lleva dicho link. Seleccionaremos ejecutar , y esperaremos unos segundos. Prime
ro
aparecerá un cuadro como el de la figura 1, indicándonos que esperemos, y luego algo
parecido a lo siguiente:

Figura 2 Figura 3
Figura 4: ¿Que vamos a descargar?
En la ventana de la figura 2 marcaremos (o no) la casilla que nos permite enviar
un
feedback a la gente de Bill Gates para que siga mejorando el producto, y en la s
egunda
aceptaremos las condiciones estipuladas en la licencia. Una vez que la hayamos l
eído de
punta a punta, ya podemos marcar la casilla que indica nuestra conformidad, y da
rle al
botón siguiente para continuar.
La siguiente decisión que debemos tomar (Figura 4) se refiere a si vamos a descarg
ar
solamente Visual Basic 2005 Express, o si también queremos instalar una versión redu
cida
del Microsoft SQL Server 2005. No hay demasiada diferencia de tiempo entre desca
rgarla
o no, así que no es mala idea hacernos con una copia de ella. Al fin y al cabo, no
seria raro
que en algún momento queramos escribir algún programa que haga uso de una base de
datos.
Al hacer clic en el botón siguiente , veremos la pantalla de la figura 5, en la que p
odremos
elegir la carpeta en que se instalará el paquete, y cuanto espacio necesitaremos.
Hemos
optado por mantener la que nos sugirió el software de instalación. Al darle a siguien
te
otra vez, estamos listos para comenzar con la descarga del resto del paquete (Fi
gura 6).

Figura 5: ¿Donde instalar el paquete? Figura 6: Comienza la descarga.


Este es un buen momento para ordenar un poco la habitación, o para salir a por un
poco de
aire. Dependiendo de la velocidad de nuestra conexión, el proceso puede demorar en
tre 40
minutos y un par de horas. No es mala idea cerrar las demás aplicaciones que estén
haciendo uso de Internet, para acelerar un poco esta etapa.
Tarde o temprano el proceso finaliza, y nos invita a reiniciar el ordenador. Una
vez hecho
esto, el programa esta listo para ser usado. Y eso es lo que haremos.
IDE son las iniciales, en ingles, de Integrated Development Environment, algo as
i como
entorno de desarrollo integrado. Se trata de un programa que nos pone a disposic
ión las
herramientas que necesitamos para programar en un (o en varios) lenguajes de
programación. En el caso del Visual Basic 2005 Express, lo primero que vemos es la
imagen de la figura 7, de donde podemos elegir si vamos a encarar un proyecto nu
evo o
editar uno existente.
Supongamos que vamos a trabajar en un nuevo proyecto. Si seleccionamos esa alter
nativa,
una ventana como la de la figura 8 nos mostrará las opciones con las que contamos
a la
hora de decidir el carácter que tendrá nuestro desarrollo. Son algunos menos que las
disponibles en la versión completa del Visual Studio, pero no están nada mal para se
r gratis.
Comenzaremos viendo como se construye un programa normal para Windows. Para ello,
hacemos dos veces clic sobre el primer icono, el de la leyenda Aplicación para Wind
ows .
Aparecerá algo parecido a lo de la figura 9.
Figura 8: ¿Que tipo de aplicación
construiremos?

Figura 9: El IDE, a pleno.

Aquí debemos hacer una aclaración. Debe haber pocos programas que brinden la
posibilidad de personalización de sus barras de herramientas como este IDE. Seria
muy
conveniente que no cambies de lugar las barras, cuadros o botones por ahora, par
a que la
disposición se parezca lo más posible a las capturas de pantalla que ofrecemos como
muestra. Eso hará más fácil de seguir las explicaciones.
Hemos marcado la barra que contiene las opciones del menú principal con un 1 (en roj
o,
no puedes no verlo). Desde allí es posible acceder a casi todas las opciones del V
isual
Basic 2005 Express, que iremos viendo a medida que resulten necesarias.
Un 2 señala la fila de iconos que representan las tareas que utilizaremos con mayor
frecuencia. Si alguna vez utilizaste alguno de los integrantes del paquete Micro
soft Office,
ya sabes como se utilizan estos iconos.
En 3 tenemos el Explorador de soluciones , que es básicamente una lista de cada parte
que compone nuestro proyecto, y que proporciona una forma rápida de llegar a cada
uno de
ellos.
La zona marcada con un 4 muestra (y nos permite modificar) las propiedades del obj
eto o
control que hayamos seleccionado en ese momento. Será una de las zonas que mas
emplearemos del IDE.
En 5 vemos el formulario que contendrá los elementos que conforman nuestra
aplicación. En el momento que el programa que estamos creando este listo, será la ve
ntana
que lo contenga. Allí depositaremos los botones, menues, etiquetas, y todo lo que
necesite
nuestra aplicación para llevar a cabo su tarea.
Por ultimo, 6 muestra el Cuadro de herramientas . Este menú, que se divide en varias
zonas, será el que proporcione todos los controles que necesitamos para completar
nuestra
aplicación. La forma de colocar alguno de ellos sobre el formulario es tan sencilla
como
arrastrarlo sobre este. La figura 11 muestra como hemos colocado un botón.
Lo hemos marcado con un círculo rojo, y también hemos puesto otro para que veas de q

forma se modifico el contenido de la zona 4 , para reflejar la lista de las propied
ades que
este botón tiene.
La figura 12 muestra el mismo formulario, al que hemos agregado una serie de con
troles
diferentes.

Figura 10: Nuestro primer control.


Figura 11: Agregamos más items al
formulario.
Puedes comenzar con la instalación del paquete, y explorar las herramientas de las
que
dispone el IDE.
Tienes 30 días para registrar (gratuitamente) tu paquete en el sitio Web de Micros
oft. Una
vez hecho esto, tendrás acceso a una serie de tutoriales y publicaciones que harán más
fácil
tu aprendizaje. Nosotros seguiremos explicando como hacer uso de Visual Basic 20
05
Express en la próxima entrega de este tutorial.
Ventana con las propiedades de Form1.
Resulta bastante complicado elegir un orden determinado al intentar explicar
una herramienta como Visual Studio Express 2005. Nosotros vamos a seguir un
camino poco ortodoxo, tomando atajos y tratando temas bastante distintos
entre si, pero que nos permitirán crear pequeñas aplicaciones desde el primer
día.
Como habíamos mencionado, el marco encargado de contener a nuestra
aplicación será el formulario . Cuando arrancamos el Visual Studio y elegimos
crear una aplicación para Windows, automáticamente el IDE nos proporciona
un formulario con el nombre Form1 . Este formulario tiene una serie de
propiedades que pueden modificarse fácilmente: basta con editar el valor que
aparece a la derecha de su nombre.
Asumimos que el lector tiene a disposición la ayuda que brinda MSDN Library,
que se instala junto a Visual Studio Express, para consultar los detalles de
cada propiedad. Solo explicaremos las que vayan siendo necesarias para
entender los ejemplos que vayamos planteando.
Una de las propiedades que primero cambiamos de un formulario es Text . El
texto que contiene este campo es el que aparecerá como titulo de nuestra
ventana. En la figura siguiente puede verse como hemos hecho que nuestro
formulario lleve como titulo la frase NeoTeo Visual Basic :

Hemos cambiado el titulo de nuestro formulario.


En Visual Basic también pueden cambiarse el valor de estas propiedades
mediante órdenes incluidas en el programa. Por ejemplo, podemos utilizar
Me.Text = "NeoTeo - Visual Basic"
para lograr el mismo resultado. Me es el formulario actual, en este caso
representa a Form1. Siempre que el código que escribimos este dentro del
mismo formulario, nos referimos a él como Me . Luego del . viene el nombre
de la propiedad que queremos cambiar, en este caso Text . Y por ultimo,
después del igual y entre comillas (por ser una cadena de texto), NeoTeo
Visual Basic , que es el titulo que queremos para nuestra ventana. El resultado
puede verse a continuación:

Hemos ingresado código VB.


La forma de escribir el código es muy fácil: basta con hacer un clic en la solapa
que lleva el nombre del formulario (en este caso Form1.vb ). El IDE
automáticamente escribe por nosotros los encabezados de los procedimientos,
por lo que solo escribimos nuestro código.

Desde aqui accedemos al codigo de los controles.


Algunas propiedades solo aceptan valores de verdadero o falso. En esos casos,
al hacer clic a la derecha del nombre de la propiedad, se abre un menú con
ambas alternativas. Por ejemplo Locked , que indica si nuestro formulario
podrá o no ser cambiado de tamaño mediante el procedimiento normal de
arrastrar con el ratón sus bordes, puede ser configurado como True
(Verdadero) o False (Falso):
Desde aqui elegimos el valor deseado.
Otra propiedad que posiblemente quieras cambiar es Icon . Si haces clic sobre
ella, se abrirá un cuadro de dialogo que te permite elegir el archivo .ICO que
desees sea el icono que se muestre en la esquina superior de la ventana:

Este cuadro de dialogo permite seleccionar el icono del Form1


Al igual que muchas otras caracteristicas, el tamaño del formulario también
puede ser cambiado mediante la modificación de sus propiedades. Y esto
puede hacerse desde el código. Bastará con agregar
Me.Size.Width = ancho deseado (en pixeles)
O
Me.Size.Height = altura deseada (en pixeles)
donde lo necesitemos. Esto es muy util, ya que nos prorciona un mecanismo
dinamico para el cambio de los atributos del formulario en tiempo de ejecucion.
Puedes probar agregando
Me.Size.Width = 480
(donde 480 es el ancho deseado) y ver que ocurre al correr el programa. Si
deseas conocer todos los atributos que puedes modificar de los formularios
(¡son muchos!) dale un vistazo a la ayuda. Ahora veremos algunos de los
controles disponibles.
Controles
Una de las primeras impresiones que se tiene al entrar al IDE de Visual Studio E
xpress
2005 es que hay controles que no utilizaremos nunca. Sin embargo, con el tiempo
vamos
viendo que todos son útiles en algún momento, y afortunadamente Microsoft los ha pue
sto
a disposición.
Los controles simplemente se arrastran con el ratón desde la paleta que está a la iz
quierda
de la pantalla hasta el formulario. Vamos a probar como hacerlo. Intenta arrastr
ar 3 botones
(Button), una etiqueta (Label), 3 casillas (CheckBoxes) y un cuadro de texto (Te
xtBox). No
importa demasiado (por ahora) su posición sobre el formulario, aunque si pones un
poco de
cuidad, podrás colocarlos tal como se ven en la imagen:

Agregamos los controles al Form1


Una vez hecho esto, vamos a cambiarles a todos estos controles el texto que mues
tran. Los
vamos seleccionando de a uno, utilizando el ratón, y modificamos en la ventana
propiedades el valor de la propiedad Text . Toma tu tiempo, y haz que tus controles
queden tal como se ve aquí:

Los controles han sido modificados.


¿Fácil, verdad? Bien, hemos cambiado el nombre que muestran, aunque los controles
todavía tienen nombres tan poco amigables como Button1 o CheckBox3 . Por ahora los
dejaremos así, pero es bueno que sepas que el nombre también es una propiedad que se
puede cambiar. Si bien no hace al aspecto de nuestro programa, el uso de nombres
descriptivos para los controles que usamos en nuestra aplicación hará más fácil la
confección del programa.
Vamos a ver como hacer para que los controles que hemos agregado ejecuten alguna
tarea
cuando el usuario interactúa con ellos. La forma de hacer esto es, simplemente, es
cribir el
código necesario en el evento deseado. Como siempre, un ejemplo puede resultar muc
ho
más simple de entender. Hagamos que cuando presionamos el tercer botón (el que tiene
el
texto Salir ) el programa termine. En BASIC, la instrucción que finaliza la ejecución d
e
un programa es End . Para escribir esta instrucción en el evento Click del Button3
simplemente le damos doble clic, y el IDE nos posicionará en el lugar correcto. Un
a vez
editado, este debería ser el aspecto del código:

Hay que escribir el código necesario en el evento deseado.


La flecha indica el lugar donde debemos escribir End . Como ves, el entorno del Vis
ual
Basic ha escrito el encabezado del procedimiento por si solo. Una vez hecho esto
, veremos
que si corremos el programa, al hacer clic sobre el botón Salir , el programa termina.
Los demás, al no tener código asociado, no efectúan ninguna tarea.
Tenemos dos botones mas para programar . Aprovechemos para ver como las acciones
que se llevan a cabo sobre un control pueden influir en otro. Vamos a darle dobl
e clic al
botón Escribir para acceder a su evento clic , y escribir allí el código necesario para
el TextBox1 (el pequeño cuadro de texto de la parte superior del formulario) muest
re el
texto Hola mundo! cuando lo presionamos. El código debería quedar así:
Volvemos a agregar código. Volvemos a agregar código.
Si ejecutamos el programa, veremos que el cuadro de texto aparece vacio. Al hace
r clic
sobre Escribir , su contenido cambia a Hola mundo! . Lo que hemos hecho ha sido
modificar el evento click del Button1 para que modifique la propiedad Text del contr
ol
TextBox1. Resulta bastante más difícil describir el proceso que llevarlo a cabo.
El contenido del TextBox1 puede ser modificado utilizando el ratón y el teclado, e
ditando o
copiando su contenido. Pero también podríamos modificarlo mediante código.
De la misma manera que programamos el comportamiento del primer botón, podemos
modificar el segundo para que al presionarlo limpie el contenido del cuadro de t
exto. Los
pasos son los mismos, pero la cadena asignada a TextBox1.Text debe estar vacía:

La cadena asignada a TextBox1.Text debe estar vacía.


¡Listo! Ahora podemos escribir con un botón, borrar con el otro, y salir con el terc
ero. Y lo
mejor de todo es que hemos escrito muy poco código para lograrlo.
CheckBoxes
Con todo lo visto hasta aquí, no debería resultarnos muy difícil hacer que, si el usua
rio
marca alguno de las casillas del formulario, se modifique el contenido del cuadr
o de texto.
En realidad, el procedimiento es el mismo que hemos empleado para modificar el
comportamiento de los primeros dos botones: le damos doble clic al CheckBox que
queremos editar, y escribimos el codigo necesario. Por ejemplo, en la figura sig
uiente
vemos como hacer para que el al marcar el CheckBox1 el TextBox1 muestre la palab
ra
Rojo :

Escribimos el codigo necesario.


Si ejecutamos el programa y efectivamente seleccionamos Rojo , el resultado será el
siguiente:

Todo parece funcionar correctamente.


Ya puedes modificar por ti mismo los otros tres para que escriban Verde , Amarillo y
Azul . También puedes comprobar que el botón Borrar sigue borrando el contenido del
TextBox1, y que el botón Escribir escribe Hola mundo! independientemente del
contenido del cuadro de texto.
El código completo debería verse así:
Modificamos los otros tres controles.
Por supuesto, el programa tiene un defecto: El TextBox1 escribe lo que le pedimo
s al hacer
clic, independientemente de que estemos marcando o desmarcando el CheckBox
correspondiente. Por supuesto, no es un problema de Visual Basic (que hace exact
amente lo
que le hemos indicado), sino de nuestro código, que no tiene en cuenta esta situac
ión.
En entregas siguientes, cuando conozcamos las instrucciones necesarias para la t
oma de
decisiones, veremos como podemos mejorar nuestro pequeño programa de ejemplo.
Por hoy hemos terminado. Seria interesante que, mientras preparamos la próxima ent
rega,
realices muchas pruebas con los controles que hemos visto, y si te surgen inquie
tudes, las
plantees como comentarios en este articulo. Prometemos responder a todas las con
sultas.
Sentencias para el control del programa
Este grupo de instrucciones pueden modificar el orden en que se ejecutan las demás
sentencias que componen nuestro programa. Básicamente, existen dos grupos de
instrucciones que pueden llevar a cabo estas tareas: las que determinan la ejecu
ción de un
trozo de código tomando una decisión, y las que permiten repetir un grupo de sentenc
ias un
número determinado de veces. Comenzaremos analizando las del primer grupo.
Sentencias de decisión
Una instrucción de este tipo representa una división en el flujo normal del programa
. A
partir del punto del código en que escribimos una instrucción de este tipo se produc
e una
división en dos o mas alternativas. Del resultado de la evaluación de una condición (que
forma parte de la sentencia de decisión) dependerá cual de las alternativas es la qu
e
finalmente se ejecuta.
Dentro de este grupo veremos las sentencias If, Choose y Select Case. Comencemos
.
Enlaces
Curso Visual BASIC, primera parte
Curso Visual BASIC, segunda parte
MSDN es una buena fuente de ayuda. ¡Tengamoslo presente!
If Then
Existen varias maneras de utilizar esta sentencia. Su forma más simple ocupa solo
una línea
de código, y tiene la forma siguiente:
If condición then sentencia
A menudo los programadores se refieren a este formato como If de una línea , y se emp
lea
generalmente para asignar un valor a alguna variable cuando se da una condición
determinada. Veamos un ejemplo.
Supongamos que si la edad de una persona es mayor a 18 años, debemos guardar en la
variable sujeto_estado el valor adulto . La edad de la persona esta almacenada en la
variable sujeto_edad . La sentencia If que realiza esta comprobación y (eventual)
asignación es la siguiente:
If sujeto_edad > 18 then sujeto_estado = adulto
La sentencia en cuestión, en caso de que la condición sea verdadera (es decir, que l
a edad
del sujeto sea mayor a 18 años), ejecuta la asignación que se encuentra a la derecha
del
then , haciendo que sujeto_estado contenga la cadena adulto . Y luego continuará con la
sentencia siguiente.
En caso de que sujeto_edad sea igual o menor a 18, el programa continuará con la
sentencia siguiente a la del ejemplo sin realizar ninguna asignación.
Hay una variación posible al If de una línea , y consiste en el agregado de la cláusula
else . Dicha sentencia tiene la siguiente forma:
If condición then sentencia1 else sentencia2
Este tipo de construcción es muy útil cuando, en función del resultado que arroje la
evaluación de la condición deban ejecutarse uno u otro (pero no ambos) grupo de
instrucciones.
Nuevamente, un ejemplo nos aclarará mejor la cuestión. Supongamos que queremos
asignar a la variable sujeto_estado el valor adulto o niño dependiendo si es mayor o n
o
de 18 años. Nuestro If de una línea quedará como sigue:
If sujeto_edad > 18 then sujeto_estado = adulto else sujeto_estado = niño

Al ejecutar esa línea, Visual BASIC decidirá si la condición es o no verdadera, y en


función del resultado ejecutará la asignación que se encuentra a la derecha del then o l
a
que está después del else . Independientemente de cual sea el resultado, el programa
(luego de realizar la asignación correspondiente) seguirá con la línea siguiente a la
del
if .
Por supuesto, nada de esto sirve cuando necesitamos, luego de evaluar una condic
ión,
ejecutar un grupo de instrucciones y no solamente una. En esos casos, si el número
de
instrucciones es pequeño, podemos optar por separarlas por dos puntos:
If condición then sentencia1 : sentencia2 : sentencia3 : .
En caso de que la condición sea verdadera, se ejecutarán todas las sentencias que es
tán
luego del then , en riguroso orden de izquierda a derecha. El mismo truco puede
emplearse para colocar varias sentencias después del else .

Pero aún así, hay casos en que esto no basta. Veamos que podemos hacer.
Por ejemplo, no podemos poner otra sentencia If a continuación del then o else .
Para estos casos tenemos la versión larga del If , que ocupa todas las líneas que haga
falta, y que, en la practica, es la que más utilizaremos. El formato de esta alter
nativa es la
siguiente:
If condición then
sentencia1
sentencia2
sentencia3
.

End If
El funcionamiento es el mismo que cuando utilizamos los : en la versión de una sola
linea
para separar las sentencias unas de otras, pero se agrega la clausula End If al fi
nal para
que el compilador sepa donde termina el bloque de instrucciones correspondientes
al If
y donde comienzan las que pertenecen al resto del programa. Si realizamos el eje
mplo
anterior con este formato, nos quedaría:
If sujeto_edad > 18 then
sujeto_estado = adulto
End If
Ahora ya sabes por que, cada vez que pueden, los programadores eligen el If de un
a
línea . Pero donde realmente se luce es en los casos que el código a ejecutar es mas
extenso, ya que no solo permite un numero (teóricamente) infinito de sentencias de
todo
tipo en su interior, si no que es mucho más legible que el If de una línea con sentenc
ias
separadas por : . Y por supuesto, puede usarse con el Else :
If condición then
Sentencia_v1
Sentencia_v2
Sentencia_v3
.
Else
Sentencia_f1
Sentencia_f2
Sentencia_f3
.
End If
Pero lo más interesante es que pueden anidarse sentencias condicionales, unas dentro
de
otras. Eso permite la toma de decisiones realmente complejas. Y si somos ordenad
os
(comentando e indentando el código a conciencia), el programa seguirá siendo legible
a
pesar de la longitud que pueda tener.
Veamos un ejemplo. Supongamos que tenemos una variable, llamada sujeto_sexo , cuyo
valor puede ser H o M (por Hombre o Mujer ), y otra llamada sujeto_edad que
contiene (¡como no!) la edad del sujeto. El siguiente código:
If sujeto_sexo = H then Si el sujeto es HOMBRE
If sujeto_edad > 18 then Y tiene más de 18 años
sujeto = Varón mayor de edad
Else Si no .
Sujeto = Varón menor de edad
End If
Else Si el sujeto es MUJER
If sujeto_edad > 18 then Y tiene más de 18 años
sujeto = Mujer mayor de edad
Else Si no .
Sujeto = Mujer menor de edad
End If
End If
coloca en la variable sujeto una descripción de la persona basada en los datos conoc
idos.
Puede verse en que forma se han anidado un If dentro de otro. La indentación del códig
o
permite identificar fácilmente cada parte del programa.

Los "if" pueden anidarse.


IIF
Para terminar con el capitulo dedicado a esta indispensable instrucción, aprendere
mos a
utilizar el If como función. Efectivamente, es posible utilizar esta sentencia como s
i
fuese una función. Luego de ser evaluada la condición, devuelve en la variable el va
lor que
se encuentra después de la primer , (condición verdadera) o el que se encuentra después
de la segunda (condición falsa). La forma es la siguiente:
Variable = IIF(condición, valor1, valor2)
Esta puede ser una herramienta interesante, y en muchos casos puede reemplazar a
l If de
una línea . Veamos uno de los ejemplos anteriores, aquel en que la variable sujeto_e
stado
adquiere el valor adulto o niño dependiendo si es mayor o no de 18 años, traducido a
este nuevo formato:
sujeto_estado = IIF ( sujeto_edad > 18, adulto , niño )
Como puede verse, una vez comprendida la sintaxis puede ser una buena forma de e
scribir
un código claro.
Pero no terminan aquí las ventajas del IFF. También puede formar parte de otras sent
encias,
como el FOR NEXT. Aún a riesgo de adelantarnos, veamos como podríamos hacer un
bucle que cuente hasta 20 o hasta 50 dependiendo del valor de una variable:
For i = 1 to IFF(variable = 1, 20, 50)
.
.
.
Next i

IFF: otra forma de hacer lo mismo.


Si variable es 1, el bucle se ejecutará 20 veces. Caso contrario, se ejecutará 50. El
código
equivalente, de no existir el IFF podría escribirse así:
If variable = 1 then
For i = 1 to 20
.
.
.
Next i
Else
For i = 1 to 50
.
.
.
Next i
End If
O asi:
If variable = 1 then limite = 20 else limite = 50
For i = 1 to limite
.
.
.
Next i

Como puede verse, la forma mas corta de todas es la que emplea el IFF.
Conclusión
Hemos aprendido como hacer que nuestro programa pueda tomar decisiones utilizando
algunas de las varias formas que posee la sentencia if then . A medida que vayamos
escribiendo nuestros propios programas seremos capaces de determinar rápidamente c
ual es
la más conveniente en cada ocasión. En breve veremos cómo se emplean las restantes.

Hay muy pocos programas que no usen "If..then".


Con esto terminamos este capítulo de nuestro pequeño curso de programación. La semana
próxima comenzaremos con las sentencias capaces de hacer que una porción de nuestro
código se repita la cantidad de veces que necesitemos. Mientras tanto, intenta apl
icar lo
aprendido para fijar los conceptos. ¡Hasta la próxima!
Seguimos avanzando en la comprensión de esta fantástica herramienta. Continuaremos
analizando en profundidad las sentencias destinadas a controlar el flujo del pro
grama, y
proporcionando ejemplos que sirvan para su mejor entendimiento. En esta oportuni
dad,
explicaremos como sacar provecho a Choose() y Select Case.

También puedes programar juegos en VB2005.


Como hemos visto, existe un grupo de instrucciones que tienen la capacidad de mo
dificar el
orden en que se ejecutan las demás sentencias de nuestro programa. En la entrega a
nterior
aprendimos a utilizar If Then , la instrucción de este tipo que se utiliza con mayor
frecuencia. Hoy veremos las dos restantes: Choose() y Select Case.
Choose()
Esta función recibe una lista de parámetros, de los cuales el primero se utiliza com
o índice
para determinar cual de los demás se devuelve al ser evaluada. Esto puede parecer
difícil de
entender, pero en realidad, como demostraremos con los ejemplos, es muy simple.
El
formato de Choose() es el siguiente:
Variable1 = Choose (indice, valor1, valor1, valor1, valor1, ., valorN)
Al ejecutarse esta sentencia, Variable1 tomará alguno de los valores de la serie Valo
r1 a
ValorN . El contenido de la variable indice será el que determine cual resulta elegido:
si
indice es igual a 1, Choose() hará que Variable1 tome el valor de Valor1 ; si indice
es igual a 2 tomará el de Valor2 ; y así sucesivamente.
Pero un ejemplo nos ayudara aún más a comprender el funcionamiento de Choose():
supongamos que tenemos que elegir un color de una lista, donde el valor 1 está asi
gnado al
color rojo, el 2 al verde y el 3 al azul. Y queremos que la variable Variable1 alm
acene la
palabra rojo , verde o azul en función del valor de la variable color . Usando
Choose(), se haría de la siguiente forma:
variable1 = Choose(color, "rojo", "verde", "azul")

El contenido de la variable "indice" determinará la respuesta.


Si hubiésemos querido hacer lo mismo utilizando If Then , el programa sería mucho mas
extenso (y quizás más confuso):
Dim variable1 As String
Dim color As Integer
color = 2
If color = 1 Then
variable1 = "rojo"
Else
If color = 2 Then
variable1 = "verde"
Else
'asumo que si color no es 1 ni 2, es 3.
variable1 = "azul"
End If
End If

Distinto programa, mismo resultado.

Un plugin permite programar para BlackBerry.


Esta instrucción es ideal para utilizar en aquellas situaciones en que debemos ele
gir una
alternativa de entre muchas. Si bien Choose() hace mas o menos esto mismo ( If Then
también), por lo general Select Case resulta más fácil de leer. Particularmente, yo
prefiero utilizar Choose() cuando quiero que el código (fuente) sea compacto, y Selec
t
Case cuando hay muchas alternativas, pero cada programador elije la forma que cre
e más
conveniente.
Su formato es el siguiente:
Select Case <expresión a evaluar>
Case <lista de expresiones1>
'Instrucciones a ejecutar
Case <lista de expresiones2>
'Instrucciones a ejecutar
Case <lista de expresiones3>
'Instrucciones a ejecutar
Case <lista de expresionesN>
'Instrucciones a ejecutar
Case Else
'Instrucciones a ejecutar si no se cumple
' ninguna de las listas de expresiones anteriores
End Select
La <expresión a evaluar> puede ser algo tan simple como una variable, o una expres
ión
más compleja que Visual Basic resolverá antes de elegir que grupo de instrucciones
ejecutar. Las <lista de expresiones> que siguen a cada sentencia Case se evalúan, y
de
ser verdaderas (solo debería serlo una de ellas) se ejecutan las sentencias que es
tén a
continuación.
En caso de que ninguna de las <lista de expresiones> sea verdadera, se ejecutan
las
instrucciones que están a continuación del Case Else . Esta sección no es obligatoria. Si
no existe Case Else y ninguna de las <lista de expresiones> es verdadera, el progr
ama no
ejecutará nada de lo que hay dentro de la estructura.
Veamos cómo podríamos resolver el ejemplo de los colores visto antes, usando Select
Case:
Select Case color
Case 1
variable1 = "rojo"
Case 2
variable1 = "verde"
Case 3
variable1 = "azul"
End Select

Seleccionando colores con Select Case.


Si quisiésemos que, cuando color tiene un valor distinto de 1, 2 o 3 Variable1 fuese
igual a la palabra Error , podemos agregar la sección Case Else :
Select Case color
Case 1
variable1 = "rojo"
Case 2
variable1 = "verde"
Case 3
variable1 = "azul"
Case Else
variable1 = "Error"
End Select
Respecto de las expresiones que pueden utilizarse a continuación de las cláusulas Cas
e ,
no tiene por que ser necesariamente un numero. Supongamos que queremos que si col
or
vale 1,2 o 3, Variable1 sea igual a Correcto . No necesitamos usar tres Case
diferentes, sino que podemos hacerlo en uno solo, separando los valores por coma
s.
Quedaría así:
Select Case color
Case 1,2,3
variable1 = "Correcto"
Case Else
variable1 = "Error"
End Select

Siempre podemos agregar la sección Case Else .


En estos casos, donde queremos hacer lo mismo para un grupo de valores comprendi
dos en
un rango determinado, también podemos utilizar la cláusula To . El siguiente código hace
exactamente lo mismo que el visto recién:
Select Case color
Case 1 To 3
variable1 = "Correcto"
Case Else
variable1 = "Error"
End Select
Resulta evidente que su la lista de valores es larga, To simplifica mucho el código.
También podemos utilizar la cláusula To .
En todos los ejemplos vistos, hemos efectuado alguna acción cuando el valor de
<expresión a evaluar> es igual a un valor determinado. Pero puede darse el caso de
que
necesitemos hacer algo cuando la <expresión a evaluar> sea mayor, menor o diferent
e a un
valor determinado. Para ello, debemos utilizar el operador Is . Literalmente, el
significado, en español, de este operador es Es . Su uso brinda una gran flexibilidad
a la
<expresión a evaluar>. Veamos un ejemplo:
Select Case numero
Case Is < 11
variable1 = "Primera decena"
Case Else
variable1 = "mayor de 10"
End Select
El código anterior guardará en Variable1 el texto "Primera decena" solo cuando el valo
r
de numero sea menor a 11 (es decir, este comprendido entre 0 y 10).

El significado, en español, de este operador es Es .


Para terminar con Select Case , vamos a resolver un problema utilizando todo lo vis
to
hasta aquí.
Supongamos por un momento que en un variable tenemos la edad de una persona, y q
ue
debemos, en función de su valor, determinar que en que tipo de establecimiento edu
cativo
se encuentra cursando sus estudios (por supuesto, los valores y tipos de estable
cimientos
son completamente ficticios). Mira el código fuente siguiente e intenta comprender
que
hace cada línea:
Dim variable1 As String
Dim edad As Integer
edad = 20
Select Case edad
Case 0, 1, 2
variable1 = "No escolarizado"
Case 3, 4, 5
variable1 = "Preescolar"
Case 6 To 12
variable1 = "Escuela"
Case 13 To 18
variable1 = "Colegio"
Case 19 To 25
variable1 = "Universidad"
Case Is > 25
variable1 = "No escolarizado"
Case Else
variable1 = "¡No puede tener menos de CERO años!"
End Select
Seguramente podrás descubrir, leyendo el programa, cual es el valor de Variable1 una
vez
ejecutado el código anterior, verdad?

Intenta comprender que hace cada línea.


Es muy difícil encontrar un proceso de datos que requiera de algún tipo de repetición.
Si
solo tuviésemos que llevar a cabo una acción determinada en dos o tres oportunidades
,
podríamos limitarnos a repetir el código en cuestión la cantidad necesaria de veces. E
sto
funcionaria, a pesar de que a un programador serio le produciría dolor de estomago.
Pero
si necesitamos efectuar un proceso sobre, digamos, un millón de registros, la solu
ción
anterior, además de ser muy poco eficaz, es absolutamente impracticable.
Para resolver estas situaciones, los lenguajes de programación proporcionan una se
rie de
instrucciones destinadas a la repetición de porciones de código. Si bien todas ellas
hacen
básicamente lo mismo, tienen sutiles diferencias que hacen, frente a un determinad
o
problema, unas mas apropiadas que otras.
FOR-NEXT
Esta quizás sea la estructura de este tipo mas conocida. De hecho, se encuentra pr
esente en
los dialectos BASIC desde los orígenes de este lenguaje. Su formato es el siguient
e:
For variable = valor_inicial To valor_final Step incremento
Instrucciones
Next variable
donde variable irá cambiando su valor a lo largo de la ejecución del bucle For-Next,
comenzando con valor_inicial hasta valor_final , en incrementos de incremento . Por
cada valor que asuma variable , la(s) instrucción(es) que se encuentran entre el For
y el
Next se ejecutarán una vez.
¿Confuso? Seguramente el ejemplo siguiente te aclarará las cosas.
Supongamos que queremos sumar los números enteros de 1 a 10 (ambos inclusive). Usa
ndo
For-Next podríamos hacerlo así:
Dim i, suma As Integer
suma = 0
For i = 1 To 10 Step 1
suma = suma + i
Next i
En primer lugar, declaramos la variable i , que será la que controlara el bucle, y la
variable
suma (guardará el total de la suma) como enteras. Luego, hacemos que suma sea igual
a
cero. Esto no es indispensable, por que el compilador la inicializa por defecto
con ese valor,
pero es recomendable tener a la vista ese dato.
Luego, tenemos el bucle for-Next propiamente dicho. Vemos que i adoptará valores
desde 1 hasta 10, incrementándose en 1 cada iteración.
La sentencia suma = suma + i se ejecutará 10 veces, sumando cada vez el valor de i en
la variable suma. i tomará valores 1, 2, 3, 4, 5, 6, 7, 8, 9 y 10, mientras que suma s
erá
1, 3, 6, 10, 15, 21, 28, 36, 45 y 55.
Nuestro primer For-Next.
Colocar el nombre de la variable a continuación del Next es opcional. Pero a pesar d
e no
ser obligatorio, es una buena práctica hacerlo, ya que en aquellos programas en qu
e se
emplean varios bucles, uno dentro de otro, ayuda a identificar a que For corresp
onde cada
Next.
Cuando el incremento de la variable es 1, como en el ejemplo anterior, tampoco hac
e
falta poner Step 1 , ya que el compilador lo hace por defecto. Digamos que si quere
mos
escribir lo menos posible, nuestro ejemplo podría quedar como sigue:
Dim i, suma As Integer
For i = 1 To 10
suma = suma + i
Next
En programas tan sencillos, podemos omitir todas estas cuestiones que son opcion
ales. Pero
si nuestro programa es muy extenso, o si debe ser modificado o leído por otra pers
ona,
conviene incluir todo lo necesario para que su comprensión sea más fácil.
La declaración del tipo de la variable puede hacerse dentro del mismo For , lo que
compacta un poco más el código:
Dim suma As Integer
For i As Integer = 1 To 10
suma = suma + i
Next
Personalmente, me gusta ésta forma de declarar la variable usada en el bucle.
La declaración de la variable puede hacerse dentro del mismo For
También puede ser útil construir bucles que modifiquen el valor de la variable de form
a
decreciente. Esto es posible gracias a que el valor a continuación del Step puede
ser
negativo. Si se da esta condición, el valor de la variable se decrementa en cada ite
ración.
Veamos un ejemplo:
Dim suma As Integer
For i As Integer = 100 To 0 Step -2
suma = suma + i
Next
En este caso, el valor inicial de i será 100, ira descendiendo de a dos unidades en
cada
iteración, y la última se producirá cuando el valor de i sea igual a cero. La variable
suma va incrementando su valor en cada pasada, y al finalizar contiene la suma de
los
números pares que se encuentran entre el 0 y el 100, ambos inclusive. Puedes compr
obarlo,
el resultado final de suma será 2550.

La prueba: el resultado final de suma es 2550.


Por supuesto, en ese caso el valor_inicial debe ser mayor que el valor_final , si no
nuestro bucle no se ejecutará ni una vez. Esto plantea un tema interesante: puede
darse el
caso de que un bucle no se ejecute ninguna vez, ya que sus valores iniciales son
tales que lo
hacen imposible. La situación se produce cuando, al principio del bucle, Visual Ba
sic
evalúa los valores de variable , valor_inicial , valor_final e incremento y descubre
que se ha alcanzado el máximo valor posible, saltando a la instrucción que sigue al
Next.
Por ejemplo, el siguiente código no realiza ninguna suma, ya que el valor inicial
es inferior
al final, y el incremento es negativo:
Dim suma As Integer
For i As Integer = 1 To 10 Step -2
suma = suma + i
Next

Este código no realiza ninguna suma.


Nada impide utilizar valores no enteros en cualquiera de los parámetros del For-Ne
xt.
Supongamos que, siguiendo con las sumas, queremos sumar los valores comprendidos
entre 0 y 10, de 0.1 en 0.1:
Dim suma, i As Double
For i = 0 To 10 Step 0.1
suma = suma + i
Next

(nótese el detalle de que hemos declarado las variables como Double ).


El código anterior sumará 0.0, 0.1, 0.2, etc hasta 10.0 . El resultado, como se ve e
n la
imagen siguiente es 505.
Código y resultado de la ejecución.
Por supuesto, todos los parámetros de un For-Next pueden ser variables. Esto le ot
orga una
gran flexibilidad a nuestros programas, ya que permite construir bucles cuyo num
ero de
ejecuciones dependa, por ejemplo, del numero de productos que contiene una base
de datos,
o de los días que tiene el mes en curso.
El ejemplo siguiente ilustra esta posibilidad:
Dim suma, i, inicio, final, incremento As Double
inicio = 85.7
final = 100.8
incremento = 0.1

For i = inicio To final Step incremento


suma = suma + i
Next i

Por supuesto, como dijimos antes, si no se es cuidadoso se puede terminar con un


bucle que
no se ejecute ni una vez. Dato curioso: el resultado, que debería ser 14.174 tiene
un
pequeño error de redondeo.

¡Ops! Un error de redondeo.


Por ultimo, hay un par de instrucciones que pueden alterar el número de veces que
se va a
repetir el contenido de un bucle For-Next. Supongamos que queremos sumar los númer
os
enteros hasta que la suma sea superior a 1000. Salvo que seamos muy buenos con l
a
matemática, no tenemos forma de conocer cual será el valor_final de nuestra cuenta.
Pero con Exit For podemos abortar el For-Next cuando queramos. Si Visual BASIC se
encuentra con esta instrucción, inmediatamente pasa a la instrucción posterior al Ne
xt, sin
importar que se haya alcanzado el valor_final elegido o no. Así es como se usa:
Dim suma, i, inicio, final, incremento As Double
inicio = 1
final = 1000
incremento = 1
For i = inicio To final Step incremento
suma = suma + i
If suma >= 1000 Then
Exit For
End If
Next i
Usando el IF-THEN que vimos en una entrega anterior, preguntamos si la suma ya e
s igual
o superior a 1000. En caso de que sea así, ejecutamos el Exit For para abandonar e
l bucle.
En la imagen siguiente puede verse el resultado del programa, y también que i sólo ha
necesitado incrementarse 35 veces.
Exit For en acción.
For-Next tiene una variante que permite recorrer los ítems de una colección, mediant
e For-
Each. Cuando hayamos visto que son y cómo se emplean las colecciones, volveremos s
obre
For-Next para explicar este último aspecto.
Con esto terminamos la quinta entrega de nuestro tutorial. En la siguiente verem
os los
demás tipos de bucles que podemos emplear en nuestros programas Visual BASIC.
En la quinta entrega de este pequeño tutorial, vimos que con FOR NEXT podíamos
resolver aquellas situaciones en las que un grupo de instrucciones debían repetirs
e un
número determinado de veces. Pero existen otras situaciones, y aparecen con mucha
frecuencia, en las que no se conoce de antemano el número de iteraciones que debería
tener
nuestro bucle.
A pesar de que un programador con experiencia siempre encontrará la forma de afron
tar
esas situaciones haciendo uso de FOR NEXT, resulta mas fácil, apropiado y eficiente
emplear las instrucciones que el repertorio sentencias de Visual Basic pone a nu
estra
disposición. Veamos cuales son.
Do Loop
El bucle DO...LOOP es muy versátil. Tanto, que puede reemplazar a FOR NEXT en casi
todos los casos. Con él se pueden crear una gran variedad de bucles diferentes, de
pendiendo
si comprueban una condición antes de ejecutar el bucle una vez; después de la primer
a
ejecución; mientras que se cumple la condición o hasta que la mencionada condición se
cumpla. La sintaxis básica de esta estructura es la siguiente:
Do
Instrucciones
[Exit Do]
Instrucciones
Loop
Esta es la forma más simple de escribir este tipo de bucle. Las instrucciones comp
rendidas
entre el Do y el Loop se ejecutaran indefinidamente. Resulta muy apropiado para
aquellos
casos en que nuestro programa se encuentra esperando que ocurra alguna situación
determinada, a la vez que repite un grupo de instrucciones.
La opción Exit Do permite abandonar el bucle cuando lo deseemos. En general, una
sentencia If Then comprueba el valor de alguna expresión, y cuando dicha expresión es
verdadera, se ejecuta el Exit Do . El siguiente ejemplo ilustra este caso:
Dim edad As Integer
edad = 20
Do
edad = edad - 1
If edad = 0 Then
Exit Do
End If
Loop
Como puede verse, el bucle se repetirá mientras que el valor de edad sea diferente d
e
cero. Cuando esto ocurre, la condición que evalúa el If Then será verdadera y el control
del programa saltará a la instrucción que haya a continuación del Loop .
La opción Exit Do permite abandonar el bucle cuando lo deseemos.
La segunda forma en que se puede escribir un bucle Do Loop es la que sigue:
Do { While | Until } condición
Instrucciones
[Exit Do]
Instrucciones
Loop
Por supuesto, no podemos utilizar While y Until a la vez. En esta forma del bucle, l
a
condición se evalúa al comienzo del mismo. En el caso de utilizar la opción While , el
bucle se repetirá mientras que la condición sea verdadera. Podemos escribir el ejemp
lo
anterior utilizando esta posibilidad:
Do While edad <> 0
edad = edad - 1
Loop

Como puede verse, es mucho más simple utilizar While que If Then y Exit Do .
Aclaramos que la condición evalúa que edad sea diferente de cero.
También podríamos haber resuelto el problema con el uso de Until :
Do Until edad = 0
edad = edad - 1
Loop

En este caso, el bucle se repetirá hasta que edad sea igual a cero. En estos dos u
ltimo
ejemplos puede darse el caso de que, si edad es igual a cero cuando se llega a l
a instrucción
Do , las instrucciones existentes en el interior del bucle no se ejecuten nunca.
El bucle se repetirá hasta que edad sea igual a cero.
La tercera forma que puede adoptar el bucle que estamos analizando es la siguien
te:
Do
Instrucciones
[Exit Do]
Instrucciones
Loop { While | Until } condición
Como puede verse, se ha delegado la capacidad de evaluar la condición al final del
bucle.
Esto tiene la particularidad de permitir que el grupo de instrucciones existente
s en el
interior del bucle se ejecuten al menos una vez, independientemente de que la co
ndición a
evaluar sea o no verdadera.
Nuestro ejemplo podría resolverse así:
Dim edad As Integer
edad = 20

Do
edad = edad - 1
Loop Until edad = 0

O asi:
Dim edad As Integer
edad = 20

Do
edad = edad - 1
Loop While edad <> 0
Se puede evaluar la condición al final del bucle.
En todos los casos puede utilizarse, entre las instrucciones que están dentro del
bucle, la
sentencia Continue Do , que hace que el control del programa salte nuevamente al
Do , repitiendo el ciclo actual.
Veamos ahora como utilizar While End
Si comprendiste la forma en que funciona el bucle "Do Loop" con la opción While , no
tendrás ninguna dificultad en aprender a usar While End .
While End tiene la siguiente estructura:
While condición
Instrucciones
[Exit While]
Instrucciones
[Continue While]
Instrucciones
End While
Lo primero que notamos es que en este bucle también existe la posibilidad de aband
onarlo
en cualquier momento, gracias a Exit While ; y que, al igual que antes, la sentenci
a
Continue While
Este es el tipo de bucle que debemos usar si deseamos repetir un conjunto de ins
trucciones
un número indefinido de veces. Esto ocurrirá mientras la condición sea verdadera. Es
menos flexible que Do...Loop , pero a muchas personas les resulta más sencillo de uti
lizar.
No tendrás ninguna dificultad en aprender a usar While End .
Su funcionamiento es el siguiente: si la condición es verdadera, se ejecutan todas
las
instrucciones hasta que se encuentra la instrucción End While . Luego, el control vue
lve a
la instrucción While y se comprueba de nuevo la condición. Esto se repite hasta que la
condición evaluada resulte falsa, en cuyo caso el control pasa a la instrucción que
sigue a la
instrucción End While .
Para poder compararla con las otras opciones vistas, vamos a escribir el código de
los
ejemplos anteriores utilizando While End :
Dim edad As Integer
edad = 20
While edad <> 0
edad = edad - 1
End While

Como puede verse, resulta muy simple de usar. Para terminar, tengamos presente q
ue si se
desea repetir las instrucciones un número fijo de veces, la instrucción For...Next sie
mpre
es la mejor opción.
GoTo
Esta instrucción es la oveja negra de todos los dialectos BASIC, aunque también existe
en otros lenguajes de programación.
Su función consiste en transferir, sin condiciones, la ejecución del programa a otro
punto
del mismo, identificado por una etiqueta (o número de línea) determinada. En realida
d, en
la prehistoria de la programación, en la época en que los lenguajes de programación eran
muy primitivos, la mayoría de los bucles se construían con GoTo .
De esta forma se lo utiliza en Visual Basic:
Instrucciones
Goto etiqueta
Instrucciones
Etiqueta:
Instrucciones
Cuando el programa se encuentra con GoTo etiqueta , salta a la instrucción siguiente
a
Etiqueta: . Etiqueta: puede estar antes o después del GoTo , lo que permite hacer
saltos hacia atrás o saltos hacia adelante . Tampoco hay límite entre la cantidad de
instrucciones que pueden escribirse entre el GoTo y la etiqueta: .

Etiqueta: puede estar antes o después del GoTo .


Esta libertad que otorga hace que muchos programadores, en general los principiant
es,
hagan un uso abusivo del GoTo , y sus programas sean muy difíciles de comprender.
Además, es posible escribir cualquier programa sin necesidad de siquiera un solo Go
To .
Para terminar este capitulo, realizaremos el ejemplo de antes, pero con GoTo :
Dim edad As Integer
edad = 20

repetir:
edad = edad - 1
If edad > 0 Then
GoTo repetir
End If

Como puede verse, y a pesar de su poca longitud, el código resulta algo mas confus
o que
los otros ejemplos. En programas largos, de miles de instrucciones, con varios Go
To
saltando de un lado para otro, el seguimiento del programa puede convertirse en
una
pesadilla, incluso para la misma persona que lo escribió.
Con esto, damos por finalizada esta entrega del tutorial de programación en Visual
Basic.
Dentro de unos días publicaremos el capítulo siguiente.
Los controles, que pueden arrastrarse y soltarse sobre los formularios (Forms) d
e Visual
Basic, son componentes extremadamente importantes para la construcción de las
aplicaciones. Son, en resumen, los que permiten confeccionar la interfaz que el
usuario
utilizara para controlar las funciones de nuestro programa.
Proveen mecanismos para proporcionar información al usuario (Label, ToolTip,
PictureBox, TreeView, etc.), organizar los datos para que sean fácilmente interpre
tados
(GroupBox, TabControl, Panel, etc.), ingresar datos (TextBox, ComboBox, MonthCal
endar,
etc.), seleccionar una(s) opcion(es) de entre varias (ListBox, CheckBox, RadioBu
tton, etc.) o
interactuar con elementos que no pertenecen, necesariamente, a nuestra aplicación
(OpenFileDialog, SaveFileDialog, PrintDocument, etc.). Además, algunos controles
especiales nos proporcionan herramientas para manejar o complementar otros contr
oles
(ImageList, ToolTip, etc.)
No veremos absolutamente todos los disponibles, pero la información que
proporcionaremos en esta entrega y las dos o tres siguientes bastará para que el l
ector pueda
sacar provecho de todos los controles que posee Visual Basic. Esta es la paleta
de controles
disponibles:

Figura 1
Comenzaremos viendo como utilizar los Controles comunes . Es bastante difícil encontr
ar
alguna aplicación que no utilice alguno de estos controles como parte de su interf
az. El
primero de ellos, cuyo icono es una pequeña flecha, no es en realidad un control,
sino la
herramienta que podemos usar para mover o seleccionar alguno de los controles qu
e
tenemos en nuestro formulario.
Hecha esta aclaración, comencemos con el análisis. Lo primero que haremos será abrir e
l
Microsoft Visual Basic 2005 Express, seleccionemos Aplicación para Windows , y
asegurémonos que tenemos el Form1 en la pantalla, en modo diseño. Deberíamos tener a
la vista algo más o menos así:
Figura 2
Figura 3
El primer control que usaremos será Button . Como habrás adivinado, se trata del clásico
botón presente en prácticamente la totalidad de las ventanas de cada programa. Este
control
puede ejecutar una acción cuando el usuario hace clic sobre él.
Utilizando la flecha, arrastraremos uno hasta el formulario Form1 . No importa
demasiado, al menos por ahora, en que posición lo coloquemos, ni tampoco su tamaño.
Es
más, puede ser un buen momento para que pases unos minutos jugando con la flecha y e
l
control, para asegurarte que comprendes de qué forma puedes arrastrarlo por el for
mulario
o cambiar su tamaño. Una vez colocado el control, el formulario se verá como sigue:
Figura 4
Lo primero que vamos a aprender es como cambiarle el nombre, ya que Button1
difícilmente sea apropiado para nuestra aplicación. Vamos a modificar el botón para qu
e
termine la aplicación cuando le hacemos clic, así que un nombre apropiado para el se
ría
Salir . Debemos, como se ve en la imagen, utilizar el cuadro Propiedades para cambiar
el valor correspondiente al atributo Text del control. Simplemente, hacemos clic s
obre
ese renglón, y escribimos Salir (o lo que queramos poner). Debería quedar como la figu
ra
de la derecha.

Figura 5 Figura 6
Con esto tenemos el botón con el texto deseado escrito en él. Ahora, vemos como hace
r
para que, cuando el usuario haga clic sobre el control, la aplicación termine. Para
ello,
debemos escribir un trozo de código que se ejecute cuando esta acción tenga lugar. L
a
forma de hacerlo es muy sencilla: simplemente, damos un doble clic sobre el botón,
y
Visual Basic pasará al Form.vb, tal como se ve en la figura:
Figura 7
El IDE de Visual Basic nos facilita mucho las cosas. Tanto, que como puede verse
nos
lleva directamente al lugar exacto donde debemos escribir el código que se ejecuta
rá, en
tiempo de ejecución, al pulsar el botón. Como queremos que la aplicación termine cuand
o
esto ocurra, simplemente escribimos End :

Figura 8
Una vez hecho esto, ya podemos probar nuestro programa para ver si funciona
correctamente. Para ello, basta con presionar F5 o hacer clic sobre la flecha verd
e de la
barra de herramientas que tenemos en la parte superior del IDE, debajo del menú. E
l
programa arrancará, y se verá más o menos como sigue:

Figura 9
Obviamente, ya habrás hecho clic sobre el botón y comprobado cómo se cierra la ventana
.
Por supuesto, podemos hacer cosas mucho más interesantes con este control.
Aprovecharemos, de paso, para aprender a utilizar la función MsgBox(), que permite
desplegar pequeñas ventanas con un mensaje (y algunos botones) en ella. Su sintaxi
s es la
siguiente:
MsgBox(prompt[, buttons][, title][, helpfile, context])
Donde prompt, que obligatoriamente debe estar, es una cadena que representa el t
exto que
aparecerá en el cuadro de diálogo. La longitud máxima de prompt es de unos 1024
caracteres, variando con el ancho de los caracteres utilizados.
Buttons es un parámetro opcional. Es una expresión numérica que corresponde a la suma
de los valores que especifican el número y el tipo de los botones que se pretenden
mostrar,
el estilo de icono que se va a utilizar, la identidad del botón predeterminado y l
a modalidad
del cuadro de mensajes. Si no ponemos nada (o ponemos 0 ), solo aparecerá un botón con
el texto Ok que cerrará el cuadro de dialogo cuando le demos clic.
Title es otra cadena opcional, que se muestra en la barra de título del cuadro de
diálogo. Si
se omite este parámetro, en la barra de título se verá el nombre de la aplicación.
Helpfile también es opcional. Es la cadena que identifica el archivo de ayuda rela
cionado
con el cuadro de dialogo. Volveremos sobre este tema cuando tratemos la forma de
implementar ayuda interactiva en nuestras aplicaciones. El parámetro context también
se
relaciona con la ayuda.
Veamos un ejemplo. La siguiente línea
MsgBox("Aprendiendo Visual Basic", 0, "NeoTeo")
genera un cuadro de diálogo con el texto "Aprendiendo Visual Basic", un solo botón c
on el
texto Ok y el titulo NeoTeo . Tal cual se ve en la imagen:

Figura 10
Ahora bien, seguramente te estás preguntando ¿Cómo hago yo para enterarme que poner
para crear cada combinación de botones? . Y nosotros, rápidamente, te damos la
respuesta:
Tabla 1
Como puede verse, Visual Basic proporciona una palabra clave para que no tengamo
s que
recordar números extraños. El siguiente código
MsgBox("Error grave, se ha perdido la información",VbAbortRetryIgnore +
VbCritical,"Error grave")
Muestra cómo podemos utilizarlas. Y la figura de abajo el resultado que produce:
Figura 11

Tabla 2
Lo interesante de MsgBox() es que devuelve un código que nos indica que botón ha
pulsado el usuario. Esto significa que, si somos lo suficientemente hábiles a la h
ora de
escribir nuestros programas, podremos realizar diferentes acciones en respuesta
a la
respuesta (¡ops!) del usuario.
El siguiente código muestra un aviso de alerta con los botones Anular, Reintentar
y Omitir.
Luego, utilizando la instrucción If-Then, el programa analiza la respuesta del usu
ario y
muestra otro cuadro de diálogo que nos confirma cual fue el botón presionado:
Dim a As Integer
a = MsgBox("Error grave, se ha perdido la información", vbAbortRetryIgnore +
vbCritical, "Error grave")
If a = vbAbort Then
MsgBox("Presionaste Anular")
End If

If a = vbRetry Then
MsgBox("Presionaste Reintentar")
End If

If a = vbIgnore Then
MsgBox("Presionaste Omitir")
End If

Figura 12 Figura 13
Como puede verse, resulta muy simple utilizar los controles disponibles en Visua
l Basic.
Hoy no hemos visto más que una pequeñísima parte de las opciones de uno de sus
controles, pero afortunadamente, la mayor parte de las características y propiedad
es de un
control existen y se utilizan de la misma forma en casi todos los demás. Esto faci
litará
mucho nuestro aprendizaje.

S-ar putea să vă placă și