Sie sind auf Seite 1von 28

1. Tipos de datos y expresiones .................................................................................................................3 1.1. Declaracin de variables ...............................................................................................................3 1.2. Constantes ......................................................................................................................................3 1.3. Declaracin de matrices ................................................................................................................

4 1.4. Expresiones y operadores ..............................................................................................................4 2. Estructuras de seleccin .......................................................................................................................6 2.1. Sentencia 2.2. Estructura 3.1. Instruccin 3.2. Instruccin IF THEN ELSE ................................................................................................6 SELECT CASE ..........................................................................................................7 FOR TO NEXT ................................................................................................9 DO LOOP ............................................................................................................9

3. Estructuras iterativas ............................................................................................................................9

4. Controles bsicos ................................................................................................................................12 3.1. Introduccin al uso de controles ..................................................................................................12 3.2. Controles bsicos .........................................................................................................................13 3.3. Eventos .........................................................................................................................................20 5. Formularios ........................................................................................................................................22 5.1. Propiedades .................................................................................................................................22 5.2. Utilizacin de multiples formularios............................................................................................24 5.3. Comunicacion entre formularios .................................................................................................26 6. Contantes y funciones de Visual Basic ...............................................................................................28 6.1. Constantes ....................................................................................................................................28 6.2. Funciones matemticas ................................................................................................................29 6.3. Funciones aleatorias ....................................................................................................................29 6.4. Funciones de cadenas de caractres ...........................................................................................29 6.5. Funciones de fechas .....................................................................................................................29 6.6. Funciones de comprobacin ........................................................................................................29 6.7. Otras funciones ............................................................................................................................29 6.8. Las funciones InputBox y MsgBox ...............................................................................................30 7. El editor de mens...............................................................................................................................32

1. Tipos de datos y expresiones


1.1. Declaracin de variables
Antes de utilizar un dato en nuestros programas, es necesario declararlo. Este dato puede ser variable, con lo cual podr cambiar de valor a lo largo del programa, o constante, en cuyo caso su valor ser el mismo a lo largo de todo el programa y no podr modificarse. La forma de declarar las variables es la siguiente: Dim| Public| Static nombre_variable As tipo Dim: Al declarar una variable con esta palabra estamos diciendo que la variable ser local al mbito en que se declara. Puede ser dentro de un procedimiento o dentro de un formulario; de esta forma no ser accesible desde los dems procedimientos o formularios. Public: Las variables declaradas sern publicas y podrn estar accesibles desde todos los formularios de la aplicacin. Static: Con esta forma de declarar variables conseguiremos que las variables locales no se creen y se destruyan al entrar y salir de los procedimientos donde fueron declaradas sino que se mantenga su valor durante todo el periodo de ejecucin de la aplicacin. De esta forma al entrar en algn procedimiento las variables recuerdan el valor que tenan cuando se sali de l. Los tipos de variables que se pueden utilizar en Visual Basic se muestrean en la tabla siguiente.

TIPOS DE VARIABLES
TIPO COMENTARIO

BOOLEAN BYTE INTEGER LONG SINGLE DOUBLE CURRENCY STRING DATE

Slo admite 2 valores: TRUE o FALSE admite valores enteros entre 0 y 255 admite valores enteros entre -32768 y 32767 valores enteros entre 2.147.483.648 y 2.147.483.647 admite valores decimales con precisin simple admite valores decimales de doble precisin vlido para valores de tipo moneda cadenas de caracteres fechas, permite operar con ellas

Al declarar una variable lo que estamos haciendo es decir al procesador que reserve una posicin de memoria para guardar un dato. La cantidad de memoria reservada depender del tipo de variable que hayamos indicado. Es importante tener en cuenta que siempre debemos utilizar el tipo de variable ms pequea posible, pues de esta forma estaremos consumiendo la menor cantidad de memoria. Por ejemplo, si queremos crear una variable en la que se guardar la edad de una persona, bastar con que la variable creada al efecto sea de tipo byte.

1.2. Constantes
Una constante es aquel dato que tendr el mismo valor a lo largo de todo el programa. Para declarar una constante, se procede de la forma siguiente:

Const nombre_constante As tipo = valor donde nombre_constante es el nombre que queramos dar a la constante, tipo es uno de los tipos de la tabla anterior y valor es el valor que tendr la constante. El siguiente ejemplo declara una constante llamada PI a la que se asigna el valor 3,1416: Const PI as Single = 3,1416

1.3. Declaracin de matrices


Una matriz es un conjunto de datos del mismo tipo. Supongamos que necesitamos almacenar 10 nmeros enteros; en lugar de crear 10 variables de tipo entero, podemos crear una matriz de 10 elementos. Para declarar matrices debemos colocar entre parntesis el nmero de elementos de los que constar a continuacin del nombre de la variable; tambin habr que indicar el tipo de elementos que va a almacenar la matriz. Todo ello se realiza con la siguiente expresin: Dim nombre_matriz(dimensin) As tipo Ejemplo: Dim medidas(9) as integer De esta forma tenemos una matriz de 10 elementos identificados del 0 al 9, en la cual se almacenarn nmeros enteros. Para referirnos al quinto elemento de nuestra matriz, habra que escribir medidas(4). (Recuerda que el primer elemento es el de ndice 0, el segundo el de ndice 1, ). As por ejemplo, la expresin medidas(7) = -5 almacenara el nmero 5 en el octavo elemento de la matriz. Aunque no es lo habitual, podemos obligar a que el primer elemento de una matriz tenga el ndice con valor 1. Esto lo haremos colocando la instruccin option base 1 en la seccin declarations de nuestro formulario. Tambin podemos indicar los lmites inferior y superior de la matriz: Dim medidas(5 to 14) as integer del 5 al 14. es una matriz de 10 elementos cuyos ndices van

Las matrices pueden tener ms de una dimensin. Las matrices multidimensionales se declaran de la siguiente forma: Dim medidas(2, 9) as integer sera una matriz bidimensional de 30 elementos, agrupados en tres filas y diez columnas. El primer elemento sera el de ndice (0, 0) y el ltimo (2, 9). Imagina que queremos hacer el tpico juego de los barcos con un tablero de 8 x 8 casillas. Crearamos una matriz en la que se almacenara que casilla contiene un barco y cual no de la siguiente forma: Dim tablero_de_barcos(7, 7) as boolean Si te has fijado bien habrs podido observar que hemos separado con el smbolo _ las palabras tablero de barcos; ello es debido a que el nombre de una variable no puede estar formado por ms de una palabra, por lo que hay que unirlas de alguna forma para hacer creer al ordenador que se trata de una sola palabra.

1.4. Expresiones y operadores


Una expresin es un conjunto de operandos y operadores que una vez evaluados devuelven un resultado. En Visual Basic hay cuatro tipos de operadores: aritmticos, relacionales, lgicos y de texto. Los operadores relacionales son aquellos que devuelven valores de tipo Bolean, es decir, su resultado ser Verdadero o Falso.

TIPOS DE OPERADORES Aritmticos Potenciacin Negacin Suma y resta Multiplicacin y divisin Divisin entera Resto de la divisin ^ +, *, / \ Mod Relacionales Igual que Distinto a Menor que Menor o igual que Mayor que Mayor o igual que = <> < <= > >= Lgicos Not And Or De texto &

Los operadores aritmticos y los relacionales no necesitan mayor aclaracin. La funcin de los operadores lgicos y de texto es la siguiente: Not (expresin) si el resultado de expresin es FALSO lo convierte en VERDADERO, y viceversa.

(expresin_1) And (expresin_2) devuelve VERDADERO si el resultado de las dos expresiones es VERDADERO, y FALSO en caso contrario. (expresin_1) Or (expresin_2) devuelve VERDADERO si el resultado de alguna de las dos expresiones es VERDADERO, y FALSO en caso contrario.

Unos ejemplos ayudarn a comprender mejor algunos de los distintos operadores: Expresin Resultado 4 ^ 3 64 7 / 3 2,33333333 7\3 2 7 mod 3 1 buen & da buenda Expresin Resultado 2 + 7 <> 5 VERDADERO 2 + 7 > 9 FALSO 2 + 7 >= 9 VERDADERO Not (3 < 5) FALSO (2 + 3 < 8) And (3 < 5) VERDADERO (2 + 3 < 8) Or (3 < 5) VERDADERO

Ejercicios: 1) 1) Indica como se declarara una variable que almacenase los siguientes datos: a) a) El ao de nacimiento de una persona. b) b) El resultado de una ecuacin de un ejercicio de fsica. c) c) Saber si una persona es mayor de edad. d) d) La ciudad de residencia de una persona. e) e) El nmero de hijos de una persona. 2) 2) Escribe la expresin que declara una constante de valor ZAMORA. 3) 3) Queremos crear una matriz en la que se van a almacenar las medidas (ancho, alto y largo) de un automvil, en milmetros y sin decimales. Cmo se declarara la matriz que contuviese estos datos? 4) 4) Indica el resultado de las siguientes expresiones: a) a) (2 + 5) ^ 2 b) b) Not (( 19 Mod 5) < 7) c) c) Hola & & amigos d) d) 18 > 11 And (( 5 \ 3 ) <> 1) e) e) 18 > 11 Or (( 5 \ 3 ) <> 1)

2. Estructuras de seleccin
Hay ocasiones en las que un programa debe realizar distintas acciones dependiendo del valor de una condicin. En estos casos, disponemos de 2 tipos de sentencias para realizar selecciones dependiendo del valor de una expresin o de una variable:

2.1. Sentencia

IF THEN ELSE

La estructura general de esta sentencia es la siguiente: If condicin then bloque de sentencias a realizar si la condicin es cierta Else bloque de sentencias a realizar si la condicin es falsa End If Supongamos que queremos crear un programa que nos diga si somos mayores o menores de edad. El cdigo de dicho programa sera el siguiente: If edad < 18 Then print menor de edad Else print mayor de edad End If Se pueden colocar todas las sentencias de cdigo que queramos en cada uno de los bloques de sentencias, siempre que cada sentencia vaya en una lnea distinta. Si los bloques de sentencias estn formados por una sola instruccin podemos utilizar la versin reducida que ocupa una sola lnea: If condicin then sentencia else sentencia Ejemplo: If IsNumeric(nmero) then a = nmero else print Error En el ejemplo anterior, si la variable nmero contiene un valor numrico, este es almacenado en la variable a; en caso contrario el programa imprimir en pantalla el mensaje Error. Tambin podemos anidar varias sentencias If then Else cuando una de las 2 opciones iniciales contiene a su vez 2 bifurcaciones dependiendo del estado de otra condicin: If edad < 18 Then print menor de edad Else If edad < 65 Then print adulto Else print tercera edad End If End If Este ltimo ejemplo podra haberse escrito de otra forma utilizando la clusula ElseIf: If edad < 18 Then print menor de edad ElseIf edad < 65 Then print adulto Else print tercera edad End If Podemos introducir tantas lneas ElseIf como queramos siempre antes del ltimo Else, si es que lo necesitamos.

Para mltiples decisiones, normalmente ms de 3, en las que dependiendo del valor de una variable queremos que se realice una accin distinta, no conviene utilizar la estructura If Then, sino que el cdigo queda ms claro y resulta ms fcil de modificar utilizando la sentencia Select

2.2. Estructura

SELECT CASE

Esta sentencia permite realizar operaciones diferentes dependiendo del valor de una variable. Su estructura general es la siguiente: Select Case dato Case valor1 bloque de sentencias case valor2 bloque de sentencias Case valor3 bloque de sentencias Case Else bloque de sentencias, se ejecutan si no se cumple ninguno de los valores anteriores End Select En esta construccin, dependiendo del valor de la variable dato se ejecutar un bloque de sentencias diferente. Los valores que podemos colocar en lugar de valor1, valor2, valor3 no slo se limitan a valores constantes como nmeros y cadenas de texto, sino que podemos comparar con un nmero como podemos ver en el siguiente ejemplo, en el que tenemos una variable de tipo single llamada NotaFinal en la que est guardada la nota de un alumno: Select Case NotaFinal Case Is < 5 print Suspenso Case Is < 6 print Suficiente Case Is < 7 print Bien Case Is < 9 print Notable Case Else print Sobresaliente End Select Como podemos observar si utilizamos los operadores lgicos como >, <, =, <=, >= debemos anteponer el operador Is. Si lo que hacemos es comparar con un intervalo de valores colocaremos el operador to entre los limites del intervalo. Case 5 to 5.99 print suficiente Tambin podemos realizar comparaciones con un conjunto de valores separados por comas:

Case 1, 3, 5 print el numero es impar


Ejercicios: 1) 1) Escribe un programa que imprima la palabra GRANDE si un nmero es mayor o igual que 1000 y PEQUEO en caso contrario. 2) 2) Un programa debe indicar si un nmero es positivo, negativo o cero. Cul ser su cdigo? 3) 3) Indica como sera el cdigo de un programa en el que a partir del valor numrico del mes nos dijese en que estacin del ao nos encontramos. 4) 4) Indica como se escribira el cdigo en el que a partir del valor numrico del mes nos dijese el nombre del mes en que nos encontramos.

3. Estructuras iterativas
3.1. Instruccin FOR TO NEXT
Sirve para ejecutar un bloque de sentencias un nmero conocido de veces. La sintaxis de esta instruccin es For contador = inicio To fin [Step incremento] bloque de sentencias Next [contador] Contador es la variable numrica que se incrementa cada vez que se ejecuta el bucle. Este se realizar un nmero determinado de veces que vendr determinado por los valores de inicio y de fin. Los argumentos entre corchetes son opcionales. Si no se indica incremento, ste se presupone que vale 1. En cualquier momento podemos abandonar la ejecucin en mitad del bucle si dentro del bloque de sentencias colocamos la instruccin Exit For. Unos cuantos ejemplos ayudarn a comprender mejor esta instruccin:
For i = 1 to 5 Print i Next i For i = 0 to 10 step 2 Print i Next i For i = 10 to 2 step -2 Print i Next i Imprime en pantalla los nmeros 1 a 5

Imprime en pantalla los nmeros 0, 2, 4, 6, 8 y 10 Imprime en pantalla los nmeros 10, 8, 6, 4 y 2

Hay que tener cuidado con no crear un bucle que no se acabe nunca. Por el ejemplo, el siguiente bucle For no se terminara nunca, pues si comenzamos en el nmero 10 y aumentamos una unidad cada vez que el bucle se repita, nunca llegaremos al nmero 5. For i = 10 to 5 Print i Next i

3.2. Instruccin

DO LOOP

En las estructuras anteriores, conocamos de antemano el nmero de veces que iba a repetirse el bucle; en algunas ocasiones no podemos conocer cuantas veces debemos repetir una determinada instruccin (por ejemplo al pedir una clave secreta; habr que repetir la peticin de la misma hasta que la clave introducida sea correcta). En estos casos utilizaremos la instruccin Do Loop. Se ejecutar un bloque de cdigo mientras o hasta que la condicin evaluada sea verdadera. Depender de la forma en la que escribamos la instruccin. Por lo tanto la sintaxis de esta estructura puede adoptar alguna de las siguientes formas:

Estructura

Explicacin El bloque de sentencias se ejecuta mientras se cumpla la condicin. Puede ocurrir que dicho bloque no se ejecute ninguna vez. El bloque de sentencias se ejecuta mientras se cumpla la condicin. Dicho bloque se ejecutar al menos una vez. El bloque de sentencias se ejecuta hasta que se cumpla la condicin. Puede ocurrir que dicho bloque no se ejecute ninguna vez. El bloque de sentencias se ejecuta hasta que se cumpla la condicin. Dicho bloque se ejecutar al menos una vez.

Do While condicin bloque de sentencias Loop Do bloque de sentencias Loop While condicin Do Until condicin bloque de sentencias Loop Do bloque de sentencias Loop Until condicin

En cualquier momento podemos abandonar la ejecucin en mitad del bucle si dentro del bloque de sentencias colocamos la instruccin Exit Do. Veamos algunos ejemplos del uso de estas sentencias:
i = 2 Do While i < 8 Print i i = 2 + i Loop i = 3 Do Print i i = 2 * i Loop While i <= 12 i = 2 Do Until i >= 16 Print i i = i ^ 2 Loop i = 10 Do Print i i = i - 1 Loop Until i < 7

Imprime en pantalla los nmeros 2, 4 y 6

Imprime en pantalla los nmeros 3, 6 y 12

Imprime en pantalla los nmeros 2 y 4

Imprime en pantalla los nmeros 10, 9, 8 y 7

Hay que tener cuidado con no crear un bucle infinito, es decir, un bucle que no termine nunca, como por ejemplo los siguientes: i=2 Do While i > 0 Print i i=i+2 Loop Como i siempre es mayor que 0, el bucle no terminar nunca y el programa imprimir en pantalla todos los nmeros pares, hasta el infinito.

Tambin puede ocurrir lo contrario, es decir, que creemos un bucle que no se ejecute nunca: i=2 Do While i < 0 Print i i=i+2 Loop Como i no es menor que 0, el bucle nunca se ejecutar.
Ejercicios: 1) 1) Escribe el cdigo de un programa que imprima en pantalla los nmeros del 1 al 10 junto a su cuadrado. 2) 2) Un programa debe imprimir todos los nmeros impares descendente entre el 100 y el 10. Cul ser su cdigo? en orden

3) 3) Queremos calcular la suma de los nmeros comprendidos entre 11 y 20, a. i. Escribe el cdigo correspondiente. 4) 4) Escribe el cdigo que imprime todos los nmeros junto a su cubo, comenzando por el 1, hasta que ese cubo sea superior a 5.000.

4. Controles bsicos
3.1. Introduccin al uso de controles
Los controles son objetos que disponen de sus propias propiedades y mtodos, y cuya utilidad es la de facilitarnos el desarrollo de nuestras aplicaciones. Lo nico que tendremos que hacer es modificar sus propiedades (tamao, color, etc..) para incorporarlos en nuestros programas y asociarles el cdigo necesario para que se comporten como esperamos al ejecutar la aplicacin. Por ejemplo, el botn Aceptar que encontramos en multitud de programas es un control. Antes de empezar a conocer los controles bsicos veamos cuales son sus caractersticas generales:

Propiedades: Todos los controles disponen de una serie de propiedades las cuales podemos cambiar al incluirlos en nuestras aplicaciones. Ejemplos de propiedades son el color, el tipo de letra, el nombre, el texto, etc... Mtodos: Son procedimientos asociados a los controles, es decir, rutinas ya establecidas que podemos invocar desde nuestras aplicaciones para que se realice alguna operacin sobre el control. Por ejemplo el control ListView (la lista de archivos que aparece en el explorador de Windows) dispone del mtodo Order que te ordena los datos aparecidos en la lista. Eventos: Son acciones que pueden ser motivadas por el propio usuario o por el mismo sistema operativo. Ejemplos pueden ser el movimiento del ratn o hacer click sobre un botn. No necesitamos detectar cuando se ha producido un evento determinado, Windows lo detecta automticamente. Los eventos ya estn definidos, son bastantes y cada control cuenta con los suyos propios, aunque son muy parecidos. Lo nico que tendremos que hacer es asociar el cdigo necesario al evento que necesitemos tratar. La ventana donde aparecen los controles que Visual Basic carga por defecto nada ms arrancar la aplicacin aparece en la figura adjunta. Moviendo el ratn por encima de cualquier control aparecer un ToolTipText indicndonos el control de que se trata.

Cuando vayamos a utilizar un control en nuestro formulario, tendremos que darle un nombre. Aunque podemos poner el nombre que deseemos a un control, el nombre que le demos deber estar relacionado con la funcin que realizar el control; adems, es conveniente que indique el tipo de control de que se trata. Existe una convencin ampliamente aceptada que es la siguiente: se utilizan siempre tres letras minsculas que indican el tipo de control, seguidas por otras letras (la primera mayscula, a modo de separacin) libremente escogidas por el usuario, que tienen que hacer referencia al uso que se va a dar a ese control. La tabla siguiente muestra las abreviaturas de los controles ms usuales, junto con la nomenclatura inglesa de la que derivan: cmb chk cmd frm fra img lbl lin mnu opt ComboBox CheckBox CommandButton Form Frame Image Label Line Menu OptionButton pic shp txt tmr PictureBox Shape TextBox Timer

As por ejemplo, el botn Aceptar que comentamos antes podra tener en el formulario el nombre cmdAceptar.

3.2. Controles bsicos


Hay una serie de propiedades que son comunes a la mayora de los controles. Son las siguientes: Name: es el nombre con el que se conocer el control cuando lo utilicemos en el cdigo. En un mismo formulario no puede haber 2 controles con el mismo nombre. Conviene poner un nombre que represente la funcin que tiene el control en la aplicacin para que el cdigo quede ms claro. Alignment: alineacin que tendr el texto dentro del control: izquierda, centro o derecha. Appearance: aspecto del control: 3D o plano. BackColor: color del fondo del control. BorderStyle: es el tipo de contorno para el control, el estilo del borde. Caption: Es el texto que contendr el control. Esta propiedad no existe en el control TextBox. Enabled: establece si un control est habilitado para su modificacin por parte del usuario o no. Si un control no est habilitado, es decir, tiene la propiedad Enabled establecida en False, su color aparece un poco difuminado para indicar que no se puede utilizar ese control en ese momento. En la figura anterior podemos ver un men con una opcin habilitada y dos deshabilitadas. Font: tipo y tamao de letra que usa el control. ForeColor color de la letra del control. Heigth: altura del control. Left: distancia entre el borde izquierdo de un objeto y el borde izquierdo de su contenedor. TabIndex: es el orden que ocupa el control cuando se va pasando de uno a otro mediante la tecla tabulador. ToolTipText: Aqu indicaremos el texto que se mostrar cuando el ratn se site sobre el control. Este texto puede servir de aclaracin o ayuda sobre la funcin de dicho control. En la figura adjunta Top podemos ver el ToolTipText que aparece al dejar el puntero del ratn sobre el Left Heigth botn Abrir.
Width

Top: distancia entre el borde superior de un objeto y el borde superior de su contenedor.

Visible: Devuelve o establece un valor que determina si el control es visible. Por ejemplo para ocultar un control podemos establecer el valor de esta propiedad a False. Width: anchura del control.

TextBox
Mediante este control podremos realizar tanto la entrada como la salida de datos en nuestras aplicaciones. Las propiedades de las que dispone el control (adems de las generales de todos los controles) son las siguientes: CausesValidation: Esta propiedad sirve para indicar si queremos que al abandonar el control se genere un evento Validate. Desde el mtodo correspondiente a dicho evento se deber comprobar el valor introducido en el TextBox, permitindose as o no la salida. Esta propiedad podr tener el valor True o False. MaxLength: nmero de caracteres mximo que puede contener el texto introducido en el TextBox. Cuando estamos introduciendo texto y llegamos al mximo nos alerta con un pitido. MultiLine: permite que el control tenga varias lneas de edicin. Esta propiedad podr tener el valor True o False. Locked: Si est con valor True bloquea el control, es decir, el usuario no puede introducir ni modificar el texto que contenga. Nos puede servir para utilizar el control como salida de datos sin que el usuario pueda modificarlos por error. Text: Es la propiedad equivalente a Caption en los dems controles. Aqu indicamos el texto que aparecer en el control. Podemos asignarle cualquier texto en el momento de disear el programa o durante la ejecucin del mismo. Tambin podemos leer el texto que haya introducido el usuario para tratarlo durante la ejecucin del programa.

Label
Su utilidad queda restringida a la visualizacin de datos en el programa, no permitiendo la introduccin de datos por parte del usuario. Este control sirve para mostrar mensajes en nuestro formulario que orienten al usuario sobre la utilidad de los dems controles que tengamos en la aplicacin o para indicarnos acciones que podemos realizar. Sus propiedades son las comunes a los dems controles, aunque podemos mencionar aqu la propiedad AutoSize: Hace que el tamao de la etiqueta se ajuste automticamente a la longitud del texto que contiene. Para este control no se suelen utilizar los eventos ya que su contenido suele cambiar poco a lo largo de la ejecucin de la aplicacin. A este control no se le puede dar el enfoque (al pulsar la tecla tabulador nunca nos podremos colocar sobre este control).

Frame OptionButton TextBox

Label

CommandButton

ComboBox

Antes de seguir comentando otros controles, podemos ver en la figura siguiente algunos de ellos.

CommandButton
Este control es el tpico botn que aparece en todas las aplicaciones y que al hacer click sobre l nos permite realizar alguna operacin concreta. Segn el cdigo que le asociemos podremos realizar las operaciones que queramos. El evento por excelencia de este control es click. Sus propiedades son: Cancel: si esta propiedad tiene el valor True quiere decir que se trata del botn de cancelacin. Ello implica que al pulsar la tecla Escape se ejecutar el cdigo asociado al evento click de dicho botn, independientemente de donde se encuentre el foco en ese momento. Default: si esta propiedad tiene el valor True quiere decir que se trata del botn por defecto. Ello implica que al pulsar la tecla Intro se ejecutar el cdigo asociado al evento click de dicho botn, independientemente de donde se encuentre el foco en ese momento. Picture: Podemos escoger una imagen que aparecer sobre el botn. DisablePicture: es la imagen que se mostrar en el botn cuando ste se encuentre deshabilitado, es decir, cuando su propiedad Enabled sea False. DownPicture: imagen que mostrar el botn cuando est pulsado. NOTA: Para poder utilizar las tres propiedades anteriores es necesario que la propiedad Style est en el valor Graphical; en caso contrario el botn no podr contener dibujos. Style: Esta propiedad puede tomar dos valores: Standard o Graphical. Value: dando a esta propiedad desde el cdigo del programa el valor True, se generar el evento Click. Por lo tanto se trata de una forma de activar el botn desde el cdigo, igual que si se hubiese pulsado el ratn o el teclado.

CheckBox
El control CheckBox es una casilla de verificacin en la que nicamente cabe la posibilidad de que se encuentre marcada o desmarcada. Su principal propiedad es:

Value: el valor ser Checked cuando la casilla de verificacin se encuentre marcada y Unchecked cuando est desmarcada.

OptionButton
Este control nos permite elegir una opcin entre varias de las que se nos plantean. Cada opcin ser un control OptionButton diferente. Observa la figura del ejemplo de ms abajo. De todas las opciones que se nos ofrece, slo podremos activar una. Si activamos cualquier otra opcin, se desactivar automticamente la ltima que tenamos activada. El marco que est alrededor de los 6 controles OptionButton se trata del control Frame , es opcional, aunque es conveniente colocarlo siempre que hagamos uso de las opciones. No slo por motivos de presentacin sino porque de esta manera podremos establecer grupos de controles OptionButton independientes en los que en cada grupo slo pueda haber una opcin activada a la vez. Tambin, al mover el marco se movern los controles incluidos en l facilitndonos las modificaciones. Para que los controles OptionButton queden englobados dentro de un control Frame, primero tendremos que colocar el control Frame en el formulario con el tamao adecuado y despus ir colocando los controles Optionbutton dentro del Frame. Del control Frame la nica propiedad que nos interesar es Caption, que es el texto que aparecer en el encabezado. La propiedad ms importante del control OptionButton es Value: Es el valor que tendr el control: True si se encuentra activado y False si no lo est. No se suele asociar cdigo a los eventos de este tipo de controles, sino nicamente conocer el valor que tienen: True o False.

EJEMPLO
Para practicar vamos a realizar una aplicacin que consistir en realizar con 2 nmeros que introduzcamos, una operacin que seleccionemos y mostrar el resultado. El formulario donde estarn todos los controles es el que aparece en la figura adjunta. La propiedad Caption de cada uno de los controles es la que se muestra en el formulario. Se ha modificado la propiedad Name de cada control para que al utilizarlos desde el cdigo sepamos cual es el control con el que trabajamos:

Los controles TextBox tienen los nombres: Num1, Num2 y Resul.

Los controles Optionbutton tienen cada uno de ellos el mismo nombre que su caption Los controles CommandButton tienen los nombres: Calcular, Limpiar y Salir. A los controles Label y al Frame no hace falta cambiarles el nombre.

Lo que habr que hacer ahora es asociar cdigo a cada uno de los botones que es de donde se van a realizar las operaciones:
Para el botn Calcular, que es el que nos mostrar el resultado segn la operacin seleccionada, hemos utilizado la instruccin If Then Else.

Private Dim a = b = r =

Sub Calcular_Click() r, a, b As Double Num1.Text Num2.Text 0

If suma.Value = True Then r = a + b ElseIf resta.Value = True Then r = a b ElseIf producto.Value = True Then r = a * b ElseIf division.Value = True Then r = a / b ElseIf potencia.Value = True Then r = a ^ b End If Resul.Text = r End Sub El botn Limpiar Datos nos va a servir para borrar los datos introducidos por el usuario y el resultado preparando. El cdigo que tendremos que introducir es el siguiente: Private Sub Limpiar_Click() Num1.Text = Num2.Text = Resul.Text = End Sub

El botn Salir nicamente contendr la sentencia End. Private Sub Salir_Click() End End Sub

Nota: el comando End hace que un programa finalice.

Image

Este control lo utilizaremos cuando necesitemos visualizar una imagen en nuestro programa. Para ello haremos uso de las dos propiedades siguientes: Picture: determina la imagen que se debe mostrar en el control. Esta propiedad contendr la direccin del archivo donde est almacenada la imagen. Si la imagen ha de cargarse en tiempo de ejecucin, habr que hacer uso de la funcin LoadPicture de la siguiente forma: Image1.Picture = LoadPicture("c:\mis documentos\dibujo.bmp") Stretch: si esta propiedad est establecida a False, el control se redimensionar al cargar la imagen, adaptndose al tamao de esta. Si el valor es True, ser la imagen la que se adapte al tamao del control.

PictureBox
El control cuadro de imagen es como un control Image ampliado; adems de poder visualizar imgenes nos permite dibujar puntos, lneas, rectngulos, crculos, etc... Dentro de l pueden colocarse incluso otro tipo de controles. Las propiedades ms importantes son: Picture: determina la imagen que se debe mostrar en el control. AutoSize: automatiza el tamao del control a la imagen, es decir, aquel se ajustar al tamao de la imagen que ha de contener. FillColor: Color que se utilizar como relleno cuando se dibujen formas en el formulario utilizando los mtodos Line o Circle. FillStyle: Tipo de relleno que se dar a las formas que se dibujen en el formulario utilizando los mtodos Line o Circle. Existen una serie de mtodos que nos van a permitir realizar determinados dibujos dentro de un PictureBox. Son los siguientes: Pset (x, y), color Dibuja un punto en la posicin dada por las coordenadas X e Y. El color vendr dado por el valor de la variable color. Line (x, y) - (z, w), color Dibuja una lnea entre los puntos (X, Y) y (Z, W) con el color especificado. Line (x, y) - (z, w), color, B Dibuja un rectngulo cuyas esquinas superior izquierda e inferior derecha sern respectivamente los puntos de coordenadas (X, Y) y (Z, W). El color del borde est dado por el valor de color. Circle (x, y), radio, color Dibuja un crculo con centro el punto (X, Y). Cls Borra el contenido del PictureBox. Todos los mtodos anteriores funcionan igualmente sobre el formulario. Si queremos que los dibujos se realicen sobre un PictureBox tendremos que anteponer el nombre de este antes de todos los mtodos, separados por un punto. En aquellos en los que sea posible, el tipo de relleno y el color del mismo estarn determinados por los atributos establecidos en FillStyle y en FillColor. El estilo de las

lneas (continuas, discontinuas) y su grosor se establecen mediante las propiedades DrawWidth y DrawStyle. El siguiente ejemplo hace uso de uno de estos mtodos. Private Sub Form_MouseMove(Button As Integer, Shift As Integer, _ X As Single, Y As Single) If Button = 1 Then PSet (X, Y), vbBlue End Sub El ejemplo anterior ir pintando de color azul aquellos puntos por los que vaya pasando el ratn, siempre que tengamos pulsado el botn primario del mismo. Esto es as porque la condicin If hace que el mtodo Pset slo se ejecute si la variable Button (variable que determina que botn del ratn est pulsado en cada momento) vale 1. El valor de Button ser 0 si no se encuentra pulsado ningn botn, 1 si el botn pulsado es el primario y 2 si es el secundario.

Line

Shape

Estos dos controles son de los ms simples que podemos encontrar en Visual Basic. Se utilizan para dibujar lneas el primero de ellos y para dibujar distintas figuras o polgonos el segundo. Son controles estticos, pues no pueden responder a ningn tipo de evento. Las propiedades caractersticas a ambos controles son: BorderColor: color de la lnea o color del borde que delimita la figura. BorderStyle: estilo de la lnea o del borde: continuo, discontinuo, etc... BorderWidth: anchura de la lnea o del borde de la figura. Adems de estas, hay otras propiedades caractersticas de cada control. Las propias del control Line son: X1, X2, Y1, Y2: Estas cuatro coordenadas determinan los puntos origen y final de la lnea. Recordar que en informtica el origen de coordenadas se corresponde con la esquina superior izquierda. El control Shape tiene estas propiedades caractersticas: FillColor: color de relleno de la figura. FillStyle: el valor de esta propiedad determinar el tipo de relleno que tendr la figura. Este puede ser slido, transparente, con lneas horizontales, verticales, ... Conviene recordar ahora que habamos dicho que existan dos propiedades comunes a todos los controles que eran BackColor y BackStyle, y que tenan una funcin semejante a la que estamos describiendo para FillColor y FillStyle. Si en un Shape tenemos activadas las dos opciones, el color que prevalecer como color de relleno ser el que est indicado en la propiedad FillColor. Shape: propiedad cuyo valor sirve para especificar que figura se dibujar. Los valores posibles son 0 (rectngulo), 1 (cuadrado), 2 (valo), 3 (crculo), 4 (rectngulo redondeado) y 5 (cuadrado redondeado).

ComboBox
Este control es una lista desplegable donde el usuario puede seleccionar una de las posibles opciones que aparecen cuando desplegamos la persiana. El control ComboBox posee dos listas, una visible, que es la que se despliega, y otra no visible. La informacin de la lista visible se guarda en la propiedad List. El primer elemento de la lista est almacenado en la propiedad List(0), el segundo elemento en List(1) y as sucesivamente. El primer elemento de la lista tiene el subndice 0. La propiedad ListCount contiene el nmero de elementos que existen en la lista desplegable. El ltimo elemento de la lista tiene el subndice ListCount 1. Como dijimos este control posee una lista adicional no visible. Los elementos de esta lista no visible se almacenan en la propiedad ItemData; ItemData(0) para el primero, ItemData(1) el segundo, etc. Esta propiedad solo admite nmeros enteros. Cuando hacemos clic sobre una de las opciones de la lista, se muestra en la ventana de control. La propiedad Text almacena el contenido de esa ventana; es decir, Text guarda la misma informacin que la propiedad List(n), donde n es el subndice del elemento seleccionado. La propiedad ListIndex contiene el subndice del elemento seleccionado, o sea n. Cuando la ventana superior de la persiana no contiene nada, la propiedad Text est vacia y ListIndex alamacena 1. Si necesitamos que adems la aplicacin haga algo al seleccionar una opcin de la lista, podemos programar el evento Click del control. El mtodo AddItem inserta un nuevo elemento en la lista. La propiedad NewIndex contiene el ndice del ltimo elemento que hemos insertado. Como propiedades caractersticas de este elemento de control podemos destacar: List: Podemos aadir los Items de la lista no en el momento de ejecucin del programa, sino en el momento de su creacin. Para ello accedemos a esta propiedad y vamos escribiendo los distintos elementos que queremos que salgan al desplegar la lista. Una vez escrito el primero de ellos, para seguir aadiendo elementos debemos pulsar Ctrl+Intro. Sorted: permite especificar si los elementos de la lista aparecern ordenados alfabticamente. Style: existen tres posibles estilos para el ComboBox: 0 (Dropdown Combo) Este estilo hace que el texto del ComboBox pueda seleccionarse de la lista o bien escribirse directamente sobre el mismo. No aparece la flecha que nos permite desplegar la lista, por lo que no podremos escoger los elementos de la misma. Simplemente se nos permitir escribir directamente sobre el control como si se tratase de un control TextBox. No es posible escribir directamente sobre el control; nicamente pueden escogerse los elementos de su lista.

1 (Simple Combo)

2 (Dropdown List)

Timer

Este control funciona de forma distinta a los dems pues no aparece en el formulario durante la ejecucin del programa; slo lo veremos en el proceso de diseo. Se utilizar cuando queramos que una o varias sentencias se ejecuten de forma repetida a lo largo del desarrollo del programa. La propiedad caracterstica de este control es Interval. Esta contendr el valor, en milisegundos, que especifica cada cuanto tiempo deben ejecutarse las sentencias incluidas en el cdigo asociado al control. Para detener la ejecucin del cdigo asociado al control bastar con establecer el valor de la propiedad Interval a 0. Por ejemplo, si queremos que un programa emita un pitido cada segundo deberemos escribir el siguiente cdigo
Private Sub tmrTemporizador_Timer() Beep End Sub

adems de tener la propiedad Interval del temporizador establecida en 1000.

HScrollBar y VscrollBar
Son las tpicas barras de desplazamiento horizontal y vertical que aparecen en multitud de programas. Las propiedades a destacar de estas barras son: Value: valor que indica la posicin en la que se encuentra el indicador de desplazamiento de la barra. Este valor estar comprendido entre los valores Max y Min. Max: valor mximo que podr tomar la propiedad Value. Min: valor mnimo que podr tomar la propiedad Value. SmallChange: esta propiedad indica cuantas unidades cambiar Value al hacer click en una de las flechas de los extremos de la barra de desplazamiento. LargeChange: nmero de unidades que cambiar el valor de Value al hacer click dentro de la barra de desplazamiento.

3.3. Eventos
Los eventos son acciones que se pueden realizar en cualquier control: click, doble click, movimiento del ratn, A estos eventos se les puede asociar cdigo para que se ejecute al producir el evento. Los eventos ms habituales son: MouseMove: al mover el ratn por encima del control. MouseDown: al pulsar cualquier botn del ratn. MouseUp: al soltar cualquier botn del ratn. Los tres eventos anteriores poseen los cuatro parmetros siguientes: Button, Shift, X e Y. Cada uno de ellos toma los siguientes valores: Button: toma el valor 0 si no se aprieta ningn botn del ratn, el valor 1 si el botn que se aprieta es el primario, el valor 2 si el botn pulsado es el secundario y 4 si se pulsa el botn central del ratn.

Shift:

nos indica si al pulsar el ratn tenamos pulsada alguna de las teclas Shift, Ctrl, Alt o AltGr. Sus posibles valores son los siguientes: 0 1 2 4 6 si no est pulsada ninguna de estas teclas, est pulsada la tecla Shift, est pulsada la tecla Ctrl, 4 pulsada la tecla Alt, pulsada la tecla AltGr.

X e Y:

guardan el valor de las coordenadas X e Y en las que se encontraba el puntero del ratn en el momento de producirse el evento.
As Single, & X & ", " " & X & ", & X & ", "

Veamos un ejemplo del uso de uno de estos controles:


Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X Y As Single) If Button = 1 Then Print "Has pulsado el botn primario en la posicin " & Y ElseIf Button = 2 Then Print "Has pulsado el botn secundario en la posicin "& Y Else Print "Has pulsado el botn central en la posicin " & Y End If End Sub

Si pulsamos uno de los botones del ratn, el programa imprimir en pantalla cual de ellos era y la posicin en la que lo hemos hecho. Change: al cambiar el contenido del control, por ejemplo al escribir algo en un TextBox. Click: al hacer click con el botn izquierdo del ratn sobre el control. DblClick: al hacer doble click con el con el botn izquierdo del ratn sobre el control. KeyDown: al presionar una tecla en el teclado. Este evento tiene dos parmetros: KeyCode, que se corresponde con un cdigo numrico que depender de la tecla pulsada, y Shift , que valdr 1 o 0 dependiendo respectivamente de si se encuentra pulsada o no la tecla Shift.
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) Print KeyCode, Shift End Sub

KeyUp: semejante al anterior, salvo que este evento se genera al soltar la tecla que tenamos presionada. KeyPress: al pulsar una tecla del teclado y mantenerla pulsada. Es un evento parecido a KeyDown, aunque dispone de un solo parmetro, KeyAscii. Este parmetro es particular de cada carcter, y es un nmero entre 0 y 255 que nos informa del carcter pulsado. (Aunque parezca igual que el parmetro KeyCode del evento

KeyDown, no son lo mismo. KeyAscii diferencia entre pulsar a o pulsar A, mientras que KeyCode no). El siguiente ejemplo imprime el carcter pulsado.
Private Sub Form_KeyPress(KeyAscii As Integer) Print Chr(KeyAscii) End Sub

Gotfocus: este evento se activa cuando el control recibe el enfoque, es decir, cuando se activa el control en tiempo de ejecucin para introducir datos en l o realizar alguna operacin. Lostfocus: Es el contrario del anterior evento, se activa cuando el control pierde el enfoque, es decir, se pasa a otro control para seguir introduciendo datos.

5. Formularios
Los formularios son tratados como controles con sus propiedades, eventos y mtodos. Aunque digamos que se trata de un control especial que utilizamos para contener los controles ms usuales con los que construiremos nuestras aplicaciones: TextBox, Label, CommandButton, etc... Vamos a ver las propiedades y eventos ms importantes de los formularios, como trabajar con mltiples formularios y como se establece la comunicacin entre ellos. Mientras que los formularios con los atributos por defecto son ventanas de las que se utilizan en todas las aplicaciones Windows, cuando se les inhabilita los botones de minimizar y maximizar junto con la caracterstica de ser redimensionables tenemos una ventana a la que se denomina cuadro de dilogo. Estos se caracterizan por tener unas dimensiones fijas (p. e., no se puede redimensionar el cuadro de dilogo Imprimir que se muestra al ejecutar el comando del mismo nombre en cualquier programa Windows) y un atributo adicional, el de ser modales o no modales. Un cuadro de dilogo es modal cuando se muestra sobre todas las dems ventanas de la aplicacin y no se puede realizar ninguna otra operacin en tanto no se cierre dicho cuadro de dilogo. Ser no modal en caso contrario.

5.1. Propiedades
Las propiedades ms comunes de los formularios y que son similares al resto de los controles son: Name: Nombre del formulario, necesario para llamar al formulario desde el cdigo. Caption: Texto que aparece en el ttulo del formulario Backcolor: Color de fondo del formulario. Forecolor: Color del texto del formulario. FillColor: Color que se utilizar como relleno cuando se dibujen formas en el formulario utilizando los mtodos Line o Circle que vimos anteriormente. FillStyle: Tipo de relleno que se dar a las formas que se dibujen en el formulario utilizando los mtodos Line o Circle. Otras propiedades que son propias de los formularios son: WindowState: Nos permite indicar el modo en el que aparecer el formulario cuando sea llamado. Tiene tres posibles valores: 0 Normal 1 - Minimizado. 2 - Maximizado. MinButton y MaxButton: Son dos propiedades que admiten nicamente los valores True o False. Permiten que queden habilitados los botones minimizar y maximizar, respectivamente de un formulario. Nos sirven para controlar que el usuario no pueda cambiar el tamao en que presentemos un formulario en pantalla. Si slo desactivamos una de las propiedades, el botn correspondiente aparecer desactivado, pero si desactivamos las dos propiedades, no aparecer ninguno de los 2 botones, nicamente lo har el botn con la "x" de cerrar. ShowInTaskbar: Mediante esta propiedad podremos controlar que determinado formulario aparezca o no en la barra de tareas de Windows. En una aplicacin con mltiples formularios, si para cada uno de los que aparezca en pantalla, nos aparece

tambin en la barra de tareas, al final la barra estar llena de aplicaciones. Podemos hacer que determinados formularios no aparezcan en ella colocando esta propiedad a False. Icon: Nos permite modificar el icono que aparece a la izquierda de la barra del ttulo de cualquier formulario, que es donde aparece el men de control, para personalizarlo en nuestra aplicacin ControlBox: Controla la aparicin del men de control. Esta propiedad por defecto est activada, aunque si la ponemos a False, no slo hacemos desaparecer el icono que simboliza al men de control, sino que desaparecen tambin los botones de minimizar, maximizar y cerrar. nicamente aparece la barra de titulo con el caption. Si adems de colocar ControlBox a False, colocamos MinButton y MaxButton a False y dejamos vaca la propiedad Caption, es decir sin nada en el ttulo, nos aparecer un formulario sin barra de titulo, es decir, nicamente un rectngulo gris que s podremos cambiar de tamao apuntando sobre el borde. BorderStyle: Esta propiedad es la que ms opciones tiene y la que ms posibilidades ofrece para cambiar el aspecto de nuestros formularios. El cambiar el valor de esta propiedad afecta tambin a las propiedades MinButton, MaxButton y ShowInTaskbar que cambian automticamente segn la opcin que hayamos seleccionado. En la siguiente tabla aparece una explicacin de cada una de sus opciones y de que valor adoptan otras propiedades del formulario:

Opciones de BorderStyle

Utilidad

MinButton MaxButton ShowInTaskbar

Muestra

0- None

No aparecen bordes ni barra de titulo. No podemos modificar su tamao de ninguna False forma. Sirve para pantallas de presentacin al principio de nuestra aplicacin No se puede cambiar su tamao.Ni siquiera se puede maximizar haciendo doble False click sobre la barra del ttulo, algo que s se puede hacer desactivando los botones MinButton y MaxButton en un

False

False

1 - Fixed Single

False

True

formulario normal Formulario por defecto de VB.Contiene todos los botones de la 2 - Sizable barra del ttulo, se (aparece por puede cambiar su defecto) tamao actuando sobre el borde y aparece en la barra de tareas.

True

True

True

3 - Fixed Dialog

No se puede cambiar su tamao False y no aparece en la barra de tareas

False

False

Aparece con la barra de titulo ms pequea, es el que utiliza VB para mostrar la caja de 4 - Fixed herramientas. No False ToolWindow aparece el icono del men de control ni aparece en la barra de tareas. Igual que el anterior pero s 5 - Sizable permite modificar ToolWindow su tamao actuando sobre el borde.

False

False

False

False

False

5.2. Utilizacin de multiples formularios


Para utilizar varios formularios en nuestra aplicacin tendremos que aadir cada uno de ellos mediante la opcin de men Insert / Form o pulsando sobre el botn .

Mtodo Show
Para llamar a un formulario desde el cdigo utilizaremos el mtodo Show. Si el formulario 2 tiene en la propiedad Name form2, para llamarlo desde otro formulario pondremos: Form2.Show

Si no ponemos ningn argumento se asume que el formulario aparece en modo no modal, es decir, se permitir que se active cualquier otro formulario sin cerrar el formulario 2. La otra modalidad que existe es modal, lo que significa que no se permite el enfoque hacia ningn otro formulario hasta que no se cierre el actual. Este ltimo modo puede servir para cuadros de dilogo que soliciten ciertos parmetros para que la aplicacin siga funcionando: una contrasea. Los argumentos del mtodo Show son: 0 1 Ejemplo: vbModeless vbModal Form2.Show vbModal No modal Modal

Sentencia Load
La sentencia Load seguida del nombre de un formulario provoca que se cargue el formulario en memoria pero sin visualizarse, ya que la propiedad Visible se coloca a False. Ejemplo: Load Form2 Realmente el mtodo Show realiza la carga del formulario en memoria, si no estaba cargado antes, y coloca la propiedad Visible del formulario a True. Durante este proceso se provoca la activacin de los eventos Load y Activate del formulario en ese orden. En dichos eventos se puede colocar el cdigo necesario que haga que el formulario se inicie siempre con los valores que queramos. Si el formulario ya estaba cargado en memoria, mediante una sentencia Load o porque se haya ocultado con el mtodo Hide, al llamarlo con el mtodo Show, nicamente se realizar la modificacin de la propiedad Visible a True, y no se volver a efectuar el proceso de carga del formulario a memoria. Por tanto el formulario aparecer con los mismos datos que tena cuando se ocult. Ahora el nico evento que se activar es el Activate que se activa cada vez que un formulario recibe el enfoque o pasa a ser el formulario activo.

Sentencia Unload
Nos permite descargar un formulario de la memoria. Se introduce junto al nombre del formulario que vayamos a descargar: Unload Form2 Si nos encontramos dentro del mismo formulario para descargarlo no hace falta colocar el nombre sino nicamente: Unload me En una aplicacin con varios formularios debemos usar esta sentencia para los mtodos que terminamos de utilizar, de esta forma liberaremos espacio en memoria para que los otros formularios puedan aprovecharla mejor. La sentencia unload provoca la activacin de los eventos: Deactivate: Al contrario que el evento Activate, ste se activa cada vez que un formulario pierde el enfoque. Tambin se activa este evento al utilizar el mtodo Hide.
Unload: Este evento recibe el parmetro Cancel, y modificando su valor podemos hacer que se suspenda (cancele) el proceso de descarga de un formulario. Mediante 2 lneas de cdigo podemos hacer una pregunta al usuario cada vez que se cierra un formulario para que nos confirme la operacin:

Este cdigo provocar que cada vez que se cierre el formulario de cualquier forma, (no slo mediante la sentencia Unload sino tambin haciendo click sobre la "x", el men de control o con ALT + F4) aparezca un mensaje preguntndonos si realmente queremos salir: