Documentos de Académico
Documentos de Profesional
Documentos de Cultura
http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 1 de 31
Apuntes Visual Basic 29/01/20 21'57
Al declarar una variable lo que estamos haciendo es decir al procesador que reserve una posición 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 más pequeña 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
http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 2 de 31
Apuntes Visual Basic 29/01/20 21'57
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
http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 3 de 31
Apuntes Visual Basic 29/01/20 21'57
Los operadores aritméticos y los relacionales no necesitan mayor aclaración. La función de los operadores lógicos y de
texto es la siguiente:
! Not (expresión) si el resultado de expresión es FALSO lo convierte en VERDADERO, y
viceversa.
! (expresión_1) And (expresión_2) devuelve VERDADERO si el resultado de las dos expresiones es
VERDADERO, y FALSO en caso contrario.
! (expresión_1) Or (expresión_2) devuelve VERDADERO si el resultado de alguna de las dos expresiones es
VERDADERO, y FALSO en caso contrario.
Unos ejemplos ayudarán a comprender mejor algunos de los distintos operadores:
Expresión Resultado Expresión Resultado
4 ^ 3 64 2 + 7 <> 5 VERDADERO
7 / 3 2,33333333 2 + 7 > 9 FALSO
7\3 2 2 + 7 >= 9 VERDADERO
7 mod 3 1 Not (3 < 5) FALSO
(2 + 3 < 8) And (3 < 5) VERDADERO
“buen” & “día” “buendía” (2 + 3 < 8) Or (3 < 5) VERDADERO
Ejercicios:
1) Indica como se declararía una variable que almacenase los siguientes datos:
a) El año de nacimiento de una persona.
b) El resultado de una ecuación de un ejercicio de física.
c) Saber si una persona es mayor de edad.
d) La ciudad de residencia de una persona.
e) El número de hijos de una persona.
2) Escribe la expresión que declara una constante de valor “ZAMORA”.
3) Queremos crear una matriz en la que se van a almacenar las medidas (ancho, alto y largo) de un
automóvil, en milímetros y sin decimales. ¿Cómo se declararía la matriz que contuviese estos
datos?
4) Indica el resultado de las siguientes expresiones:
a) (2 + 5) ^ 2
b) Not (( 19 Mod 5) < 7)
c) “Hola“ & “ “ & “amigos”
d) 18 > 11 And (( 5 \ 3 ) <> 1)
e) 18 > 11 Or (( 5 \ 3 ) <> 1)
http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 4 de 31
Apuntes Visual Basic 29/01/20 21'57
2. Estructuras de selección
Hay ocasiones en las que un programa debe realizar distintas acciones dependiendo del valor de una condición. En estos
casos, disponemos de 2 tipos de sentencias para realizar selecciones dependiendo del valor de una expresión o de una
variable:
http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 5 de 31
Apuntes Visual Basic 29/01/20 21'57
Podemos introducir tantas líneas ElseIf como queramos siempre antes del último Else, si es que lo necesitamos.
Para múltiples decisiones, normalmente más de 3, en las que dependiendo del valor de una variable queremos que se
realice una acción distinta, no conviene utilizar la estructura If Then, sino que el código queda más claro y resulta más
fácil de modificar utilizando la sentencia Select
Ejercicios:
1) Escribe un programa que imprima la palabra GRANDE si un número es mayor o igual que 1000 y
PEQUEÑO en caso contrario.
2) Un programa debe indicar si un número es positivo, negativo o cero. ¿Cuál será su código?
http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 6 de 31
Apuntes Visual Basic 29/01/20 21'57
3) Indica como sería el código de un programa en el que a partir del valor numérico del mes nos
dijese en que estación del año nos encontramos.
4) Indica como se escribiría el código en el que a partir del valor numérico del mes nos dijese el
nombre del mes en que nos encontramos.
http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 7 de 31
Apuntes Visual Basic 29/01/20 21'57
3. Estructuras iterativas
Hay que tener cuidado con no crear un bucle que no se acabe nunca. Por el ejemplo, el siguiente bucle For no se
terminaría nunca, pues si comenzamos en el número 10 y aumentamos una unidad cada vez que el bucle se repita, nunca
llegaremos al número 5.
For i = 10 to 5
Print i
Next i
Estructura Explicación
http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 8 de 31
Apuntes Visual Basic 29/01/20 21'57
En cualquier momento podemos abandonar la ejecución en mitad del bucle si dentro del bloque de sentencias
colocamos la instrucción Exit Do.
Veamos algunos ejemplos del uso de estas sentencias:
i = 2
Do While i < 8
Print i Imprime en pantalla los números 2, 4 y 6
i = 2 + i
Loop
i = 3
Do
Print i Imprime en pantalla los números 3, 6 y 12
i = 2 * i
Loop While i <= 12
i = 2
Do Until i >= 16
Print i Imprime en pantalla los números 2 y 4
i = i ^ 2
Loop
i = 10
Do
Print i Imprime en pantalla los números 10, 9, 8 y 7
i = i - 1
Loop Until i < 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 números
pares, hasta el infinito.
También 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á.
http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 9 de 31
Apuntes Visual Basic 29/01/20 21'57
Ejercicios:
1) Escribe el código de un programa que imprima en pantalla los números del 1 al 10 junto a su
cuadrado.
2) Un programa debe imprimir todos los números impares en orden descendente entre el 100 y el
10. ¿Cuál será su código?
3) Queremos calcular la suma de los números comprendidos entre 11 y 20, a. i. Escribe el
código correspondiente.
4) Escribe el código que imprime todos los números junto a su cubo, comenzando por el 1, hasta
que ese cubo sea superior a 5.000.
http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 10 de 31
Apuntes Visual Basic 29/01/20 21'57
4. Controles básicos
cmb ComboBox
chk CheckBox
cmd CommandButton
frm Form
fra Frame
img Image
lbl Label
lin Line
mnu Menu
opt OptionButton
pic PictureBox
shp Shape
txt TextBox
http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 11 de 31
Apuntes Visual Basic 29/01/20 21'57
tmr Timer
Así por ejemplo, el botón Aceptar que comentamos antes podría tener en el formulario el nombre cmdAceptar.
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 (además 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
http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 12 de 31
Apuntes Visual Basic 29/01/20 21'57
Validate. Desde el método correspondiente a dicho evento se deberá comprobar el valor introducido en el TextBox,
permitiéndose así o no la salida. Esta propiedad podrá tener el valor True o False.
MaxLength: número de caracteres máximo que puede contener el texto introducido en el TextBox. Cuando estamos
introduciendo texto y llegamos al máximo nos alerta con un pitido.
MultiLine: permite que el control tenga varias líneas de edición. 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 demás controles. Aquí indicamos el texto que aparecerá en el
control. Podemos asignarle cualquier texto en el momento de diseñar el programa o durante la ejecución del mismo.
También podemos leer el texto que haya introducido el usuario para tratarlo durante la ejecución del programa.
Label
Su utilidad queda restringida a la visualización de datos en el programa, no permitiendo la introducción de datos por
parte del usuario. Este control sirve para mostrar mensajes en nuestro formulario que orienten al usuario sobre la utilidad
de los demás controles que tengamos en la aplicación o para indicarnos acciones que podemos realizar. Sus propiedades
son las comunes a los demás controles, aunque podemos mencionar aquí la propiedad
AutoSize: Hace que el tamaño de la etiqueta se ajuste automáticamente 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 ejecución de la
aplicación. A este control no se le puede dar el enfoque (al pulsar la tecla tabulador nunca nos podremos colocar sobre este
control).
Antes de seguir comentando otros controles, podemos ver en la figura siguiente algunos de ellos.
CommandButton
Este control es el típico botón que aparece en todas las aplicaciones y que al hacer click sobre él nos permite realizar
alguna operación concreta. Según el código 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 botón de cancelación. Ello implica que al
pulsar la tecla Escape se ejecutará el código asociado al evento click de dicho botón, independientemente de donde se
encuentre el foco en ese momento.
Default: si esta propiedad tiene el valor True quiere decir que se trata del botón por defecto. Ello implica que al pulsar
la tecla Intro se ejecutará el código asociado al evento click de dicho botón, independientemente de donde se encuentre el
http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 13 de 31
Apuntes Visual Basic 29/01/20 21'57
CheckBox
El control CheckBox es una casilla de verificación 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 verificación se encuentre marcada y Unchecked cuando esté
desmarcada.
OptionButton
Este control nos permite elegir una opción entre varias de las que se nos plantean. Cada opción será un control
OptionButton diferente. Observa la figura del ejemplo de más abajo. De todas las opciones que se nos ofrece, sólo
podremos activar una. Si activamos cualquier otra opción, se desactivará automáticamente la última que teníamos
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 sólo por motivos de presentación sino porque de esta
manera podremos establecer grupos de controles OptionButton independientes en los que en cada grupo sólo pueda haber
una opción activada a la vez. También, al mover el marco se moverán los controles incluidos en él facilitándonos 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 tamaño adecuado y después 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 más 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 código a los eventos de este tipo de controles, sino únicamente conocer el valor que tienen: True o
False.
EJEMPLO
http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 14 de 31
Apuntes Visual Basic 29/01/20 21'57
Resul.Text = r
End Sub
· El botón Limpiar Datos nos va a servir para borrar los datos introducidos por el usuario y el resultado preparando. El
código que tendremos que introducir es el siguiente:
Private Sub Limpiar_Click()
Num1.Text = “”
Num2.Text = “”
Resul.Text = “”
End Sub
http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 15 de 31
Apuntes Visual Basic 29/01/20 21'57
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 dirección del archivo
donde está almacenada la imagen. Si la imagen ha de cargarse en tiempo de ejecución, habrá que hacer uso de la función
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, adaptándose al
tamaño de esta. Si el valor es True, será la imagen la que se adapte al tamaño del control.
PictureBox
El control cuadro de imagen es como un control Image ampliado; además de poder visualizar imágenes nos permite
dibujar puntos, líneas, rectángulos, círculos, etc... Dentro de él pueden colocarse incluso otro tipo de controles. Las
propiedades más importantes son:
Picture: determina la imagen que se debe mostrar en el control.
AutoSize: automatiza el tamaño del control a la imagen, es decir, aquel se ajustará al tamaño de la imagen que ha de
contener.
FillColor: Color que se utilizará como relleno cuando se dibujen formas en el formulario utilizando los métodos Line
o Circle.
FillStyle: Tipo de relleno que se dará a las formas que se dibujen en el formulario utilizando los métodos Line o Circle.
Existen una serie de métodos que nos van a permitir realizar determinados dibujos dentro de un PictureBox. Son los
siguientes:
Pset (x, y), color Dibuja un punto en la posición 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 línea entre los puntos (X, Y) y (Z, W) con el color especificado.
Line (x, y) - (z, w), color, B Dibuja un rectángulo cuyas esquinas superior izquierda e inferior derecha serán
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 círculo con centro el punto (X, Y).
Cls Borra el contenido del PictureBox.
Todos los métodos 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 métodos, separados por un punto.
En aquellos en los que sea posible, el tipo de relleno y el color del mismo estarán determinados por los atributos
establecidos en FillStyle y en FillColor. El estilo de las líneas (continuas, discontinuas) y su grosor se establecen mediante
http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 16 de 31
Apuntes Visual Basic 29/01/20 21'57
Line y Shape
Estos dos controles son de los más simples que podemos encontrar en Visual Basic. Se utilizan para dibujar líneas el
primero de ellos y para dibujar distintas figuras o polígonos el segundo. Son controles estáticos, pues no pueden responder
a ningún tipo de evento. Las propiedades características a ambos controles son:
BorderColor: color de la línea o color del borde que delimita la figura.
BorderStyle: estilo de la línea o del borde: continuo, discontinuo, etc...
BorderWidth: anchura de la línea o del borde de la figura.
Además de estas, hay otras propiedades características de cada control. Las propias del control Line son:
X1, X2, Y1, Y2: Estas cuatro coordenadas determinan los puntos origen y final de la línea. Recordar que en
informática el origen de coordenadas se corresponde con la esquina superior izquierda.
El control Shape tiene estas propiedades características:
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 sólido,
transparente, con líneas horizontales, verticales, ...
Conviene recordar ahora que habíamos dicho que existían dos propiedades comunes a todos los controles que eran
BackColor y BackStyle, y que tenían una función 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 (rectángulo), 1
(cuadrado), 2 (óvalo), 3 (círculo), 4 (rectángulo 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 información 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 subíndice 0. La propiedad ListCount
contiene el número de elementos que existen en la lista desplegable. El último elemento de la lista tiene el subíndice
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 números
http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 17 de 31
Apuntes Visual Basic 29/01/20 21'57
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 información que la propiedad List(n), donde n es el
subíndice del elemento seleccionado. La propiedad ListIndex contiene el subíndice 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 además la aplicación haga algo al seleccionar una opción de la lista, podemos programar el evento
Click del control.
El método AddItem inserta un nuevo elemento en la lista. La propiedad NewIndex contiene el índice del último elemento
que hemos insertado.
Como propiedades características de este elemento de control podemos destacar:
List: Podemos añadir los Items de la lista no en el momento de ejecución del programa, sino en el momento de su
creación. 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 añadiendo elementos debemos pulsar Ctrl+Intro.
Sorted: permite especificar si los elementos de la lista aparecerán ordenados alfabéticamente.
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.
1 (Simple Combo) 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.
2 (Dropdown List) No es posible escribir directamente sobre el control; únicamente pueden escogerse los
elementos de su lista.
Timer
Este control funciona de forma distinta a los demás pues no aparece en el formulario durante la ejecución del
programa; sólo lo veremos en el proceso de diseño. Se utilizará cuando queramos que una o varias sentencias se ejecuten
de forma repetida a lo largo del desarrollo del programa. La propiedad característica de este control es Interval. Esta
contendrá el valor, en milisegundos, que especifica cada cuanto tiempo deben ejecutarse las sentencias incluidas en el
código asociado al control. Para detener la ejecución del código 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 código
Private Sub tmrTemporizador_Timer()
Beep
End Sub
HScrollBar y VscrollBar
Son las típicas 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 posición en la que se encuentra el indicador de desplazamiento de la barra. Este valor estará
comprendido entre los valores Max y Min.
http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 18 de 31
Apuntes Visual Basic 29/01/20 21'57
3.3. Eventos
Los eventos son acciones que se pueden realizar en cualquier control: click, doble click, movimiento del ratón,… A estos
eventos se les puede asociar código para que se ejecute al producir el evento. Los eventos más habituales son:
MouseMove: al mover el ratón por encima del control.
MouseDown: al pulsar cualquier botón del ratón.
MouseUp: al soltar cualquier botón del ratón.
Los tres eventos anteriores poseen los cuatro parámetros siguientes: Button, Shift, X e Y. Cada uno de ellos toma los
siguientes valores:
Button: toma el valor 0 si no se aprieta ningún botón del ratón, el valor 1 si el botón que se
aprieta es el primario, el valor 2 si el botón pulsado es el secundario y 4 si se pulsa el
botón central del ratón.
Shift: nos indica si al pulsar el ratón teníamos pulsada alguna de las teclas Shift, Ctrl, Alt o
AltGr. Sus posibles valores son los siguientes:
0 si no está pulsada ninguna de estas teclas,
1 está pulsada la tecla Shift,
2 está pulsada la tecla Ctrl,
4 pulsada la tecla Alt,
6 pulsada la tecla AltGr.
X e Y: guardan el valor de las coordenadas X e Y en las que se encontraba el puntero del
ratón en el momento de producirse el evento.
Veamos un ejemplo del uso de uno de estos controles:
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
Print "Has pulsado el botón primario en la posición " & X & ", " & Y
ElseIf Button = 2 Then
Print "Has pulsado el botón secundario en la posición " & X & ", "& Y
Else
Print "Has pulsado el botón central en la posición " & X & ", " & Y
End If
End Sub
Si pulsamos uno de los botones del ratón, el programa imprimirá en pantalla cual de ellos era y la posición 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 botón izquierdo del ratón sobre el control.
DblClick: al hacer doble click con el con el botón izquierdo del ratón sobre el control.
KeyDown: al presionar una tecla en el teclado. Este evento tiene dos parámetros: KeyCode, que se corresponde con un
http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 19 de 31
Apuntes Visual Basic 29/01/20 21'57
código numérico 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 teníamos presionada.
KeyPress: al pulsar una tecla del teclado y mantenerla pulsada. Es un evento parecido a KeyDown, aunque dispone de
un solo parámetro, KeyAscii. Este parámetro es particular de cada carácter, y es un número entre 0 y 255 que nos informa
del carácter pulsado. (Aunque parezca igual que el parámetro 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 carácter 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
ejecución para introducir datos en él o realizar alguna operación.
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.
http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 20 de 31
Apuntes Visual Basic 29/01/20 21'57
5. Formularios
Los formularios son tratados como controles con sus propiedades, eventos y métodos. Aunque digamos que se trata de
un control especial que utilizamos para contener los controles más usuales con los que construiremos nuestras
aplicaciones: TextBox, Label, CommandButton, etc... Vamos a ver las propiedades y eventos más importantes de
los formularios, como trabajar con múltiples formularios y como se establece la comunicación 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 característica de ser
redimensionables tenemos una ventana a la que se denomina cuadro de diálogo. Estos se caracterizan por tener unas
dimensiones fijas (p. e., no se puede redimensionar el cuadro de diálogo “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 diálogo es modal cuando se muestra sobre todas las demás ventanas de la aplicación y no se puede realizar ninguna otra
operación en tanto no se cierre dicho cuadro de diálogo. Será no modal en caso contrario.
5.1. Propiedades
Las propiedades más 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 código.
Caption: Texto que aparece en el título 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 métodos Line
o Circle que vimos anteriormente.
FillStyle: Tipo de relleno que se dará a las formas que se dibujen en el formulario utilizando los métodos 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 tamaño en que presentemos un formulario en pantalla. Si sólo desactivamos una de las
propiedades, el botón correspondiente aparecerá desactivado, pero si desactivamos las dos propiedades, no aparecerá
ninguno de los 2 botones, únicamente lo hará el botón 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 aplicación con múltiples formularios, si para cada uno de los que aparezca en pantalla, nos
aparece también 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 título de cualquier formulario, que es
donde aparece el menú de control, para personalizarlo en nuestra aplicación
ControlBox: Controla la aparición del menú de control. Esta propiedad por defecto está activada, aunque si la
ponemos a False, no sólo hacemos desaparecer el icono que simboliza al menú de control, sino que desaparecen también
los botones de minimizar, maximizar y cerrar. Únicamente aparece la barra de titulo con el caption.
Si además de colocar ControlBox a False, colocamos MinButton y MaxButton a False y dejamos vacía la propiedad
Caption, es decir sin nada en el título, nos aparecerá un formulario sin barra de titulo, es decir, únicamente un rectángulo
gris que sí podremos cambiar de tamaño apuntando sobre el borde.
BorderStyle: Esta propiedad es la que más opciones tiene y la que más posibilidades ofrece para cambiar el aspecto de
http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 21 de 31
Apuntes Visual Basic 29/01/20 21'57
nuestros formularios. El cambiar el valor de esta propiedad afecta también a las propiedades MinButton, MaxButton y
ShowInTaskbar que cambian automáticamente según la opción que hayamos seleccionado. En la siguiente tabla aparece
una explicación de cada una de sus opciones y de que valor adoptan otras propiedades del formulario:
Opciones
de Utilidad MinButton MaxButton ShowInTaskbar Muestra
BorderStyle
http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 22 de 31
Apuntes Visual Basic 29/01/20 21'57
Método Show
Para llamar a un formulario desde el código utilizaremos el método Show. Si el formulario 2 tiene en la propiedad Name
form2, para llamarlo desde otro formulario pondremos: Form2.Show
Si no ponemos ningún 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 ningún otro formulario hasta que no se cierre el actual. Este último modo puede servir para
cuadros de diálogo que soliciten ciertos parámetros para que la aplicación siga funcionando: una contraseña.
Los argumentos del método Show son:
0 vbModeless No modal
1 vbModal Modal
Ejemplo: Form2.Show vbModal
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 método 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 activación de los eventos Load y Activate del
formulario en ese orden. En dichos eventos se puede colocar el código 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 método
Hide, al llamarlo con el método Show, únicamente se realizará la modificación 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 tenía 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 aplicación con varios formularios debemos usar esta sentencia para los métodos que terminamos de utilizar, de
esta forma liberaremos espacio en memoria para que los otros formularios puedan aprovecharla mejor. La sentencia
unload provoca la activación de los eventos:
· Deactivate: Al contrario que el evento Activate, éste se activa cada vez que un formulario pierde el enfoque. También
se activa este evento al utilizar el método Hide.
· Unload: Este evento recibe el parámetro Cancel, y modificando su valor podemos hacer que se suspenda (cancele) el
proceso de descarga de un formulario. Mediante 2 líneas de código podemos hacer una pregunta al usuario cada vez que
se cierra un formulario para que nos confirme la operación:
http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 23 de 31
Apuntes Visual Basic 29/01/20 21'57
http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 24 de 31
Apuntes Visual Basic 29/01/20 21'57
sobre el botón de la barra de herramientas. Nos aparecerá una ventana en la que únicamente podremos colocar las
variables y procedimientos o funciones que queramos que sean públicas para toda la aplicación.
http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 25 de 31
Apuntes Visual Basic 29/01/20 21'57
Ahora la ventana de proyecto tiene una línea más con un icono distinto
indicando que se trata de un módulo de código:
http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 26 de 31
Apuntes Visual Basic 29/01/20 21'57
6.1. Constantes
A continuación se detalla una lista con las constantes más usadas definidas en Visual Basic y su significado:
vbBlack color negro
vbBlue color azul
vbCyan color azul celeste
vbGreen color verde
vbMagenta color violeta
vbRed color rojo
vbWhite color blanco
vbYellow color amarillo
vbYes Si
vbNo No
vbCrLf Introduce un retorno de carro y un avance de línea. De esta forma podemos hacer que
se comience a escribir en una nueva línea.
Las siguientes constantes se utilizan en los MsgBox para indicar la señal y los botones que se mostrarán:
vbCritical señal de error
vbExclamation señal de advertencia
vbInformation señal de información
vbQuestion señal de interrogación
vbOkOnly botón de aceptar
vbOkCancel botones aceptar y cancelar
vbYesNo botones Sí y No
vbYesNoCancel botones Sí, No y Cancelar
vbAbortRetryIgnore botones Anular, Reintentar y Omitir
Para determinar que carácter se ha pulsado en el teclado podemos comprobar su código ASCII. Visual Basic nos
facilita esta labor mediante estas constantes:
vbKeyUp flecha arriba
vbKeyDown flecha abajo
vbKeyLeft flecha izquierda
vbKeyRight flecha derecha
vbKeyReturn tecla Intro
vbKeyEscape tecla Escape
vbKeySpace tecla espacio
vbLeftButton botón izquierdo del ratón
vbRightButton botón derecho del ratón
Evidentemente hay muchas más, aunque no las expondremos aquí. Los cuatro primeros casos propuestos nos servirán
para, por ejemplo, mover un objeto por la pantalla con la ayuda de las teclas de desplazamiento, como sucede en un juego.
Funciones
Una función nos servirá para realizar un cálculo u obtener un determinado valor. Entre las múltiples existentes
podemos destacar las siguientes, agrupadas en categorías.
http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 28 de 31
Apuntes Visual Basic 29/01/20 21'57
Separador Resultado
, (coma) los datos quedan separados por un tabulador
; (punto y coma) los datos quedan separados por un único espacio en blanco
& (andpersand) los datos se escriben unos junto a otros, sin separación
Ejemplos Resultado en pantalla
Print 22, “hola” 22 hola
Print 22; “hola” 22 hola
Print 22 & “hola” 22hola
La función MsgBox permite mostrar un mensaje. La sintaxis de esta función es como en el siguiente ejemplo:
MsgBox “No se puede calcular el factorial de un número negativo”, _ vbCritical +
vbOKOnly, “Error”
El resultado del ejemplo anterior sería una ventana como la que
aparece a continuación. Como puede verse la función MsgBox
lleva tres argumentos separados por comas; el primero de ellos
es el cuerpo del mensaje, en el segundo se hace referencia tanto
al dibujo que se mostrará como al botón o botones que
aparecerán y en el último se indica el título de la ventana en la
que aparece el mensaje.
La función MsgBox nos permite conocer que botón ha pulsado el usuario como respuesta al mensaje. Por ejemplo, una
http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 29 de 31
Apuntes Visual Basic 29/01/20 21'57
función MsgBox en la que aparecieran un botón SI junto a un botón NO (vbYesNo), tendría el valor vbYes si pulsamos el
botón SI o el valor vbNo si el botón pulsado es NO. Veámoslo más claramente en el siguiente ejemplo
Esta línea de código hace que aparezca una ventana preguntándonos si deseamos salir del programa, en la que aparecerán
los botones <Si> o <No>. Si pulsamos el botón <Si>, el programa finalizará (comando End).
Nota importante: conviene resaltar aquí que cuando una sentencia de Visual Basic es demasiado larga y
no cabe en una línea, antes de comenzar a escribir la continuación de dicha sentencia en la línea inferior es
necesario escribir el carácter de subrayado ( _ ) al finalizar la línea anterior como puede observarse en el
último ejemplo.
Las distintas combinaciones de dibujos y botones que pueden mostrarse en un MsgBox se encuentran en el apartado 6.1. ,
aunque los repetiremos aquí:
vbCritical señal de error
vbExclamation señal de advertencia
vbInformation señal de información
vbQuestion señal de interrogación
vbOkOnly botón de aceptar
vbOkCancel botones aceptar y cancelar
vbYesNo botones Sí y No
vbYesNoCancel botones Sí, No y Cancelar
vbAbortRetryIgnore botones Anular, Reintentar y Omitir
http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 30 de 31
Apuntes Visual Basic 29/01/20 21'57
7. El editor de menús
Cuando queramos añadir a nuestros programas una barra de menús, la tarea será sencilla utilizando el editor de menús.
Para activar el editor de menús debemos ir al menú Herramientas de Visual Basic y allí escoger la opción Editor de
menús…, o bien hacer clic sobre el botón correspondiente de la barra de herramientas Estandar. Aparecerá una
ventana como la siguiente:
Caption: será el texto que aparecerá en el menú. Si se desea que alguna de las letras del menú sirva para acceder de
forma rápida a dicho menú, se debe situar el carácter & antes de esa letra. Como se puede observar en cualquier programa
Windows esto hará que ese carácter del menú aparezca subrayado. (Este mismo carácter & puede utilizarse de modo
análogo en el caption de un CommandButton. Si pulsamos la combinación de teclas ‘ALT+ el carácter escogido’ será
como hacer click con el ratón en dicho botón) Para incluir un separador entre distintas opciones del menú, esta propiedad
debe ser – (un guión).
Name: es el nombre con el que nos referiremos al menú desde el código.
Shortcut: asocia una combinación de teclas para acceder al menú de forma abreviada.
Checked: determina si aparecerá o no una marca de verificación a la izquierda de la opción del menú.
Enabled: si esta casilla no está marcada, dicho menú no será accesible apareciendo difuminado.
Visible: determina si dicho elemento del menú podrá verse o no.
Estas tres últimas propiedades pueden modificarse en tiempo de ejecución estableciendo su valor a True o a False.
Cuando queramos que un menú esté dentro de otro, es decir, sea un submenú, no tendremos más que tabularlo en el
editor de menús mediante el botón del mismo.
El único evento disponible para un menú es Click , que corresponde a la selección de la opción, independientemente de
que ésta se realice con el ratón o con el teclado.
Para crear un menú emergente o menú contextual no tememos más que crearlo como si se tratase de un menú normal y
hacerlo invisible. Para abrirlo haremos uso del método PopupMenu, como se muestra en el siguiente ejemplo.
If Button = vbRightButton Then PopupMenu nombremenú
http://www.corazondejesusza.net/apuntes/Visual%20Basic.htm Página 31 de 31