¿Qué es Visual Basic?
La palabra "Visual" hace referencia al método que se utiliza para crear la
interfaz gráfica de usuario (GUI). En lugar de escribir numerosas líneas de
código para describir la apariencia y la ubicación de los elementos de la
interfaz, simplemente puede arrastrar y colocar objetos prefabricados en su
lugar dentro de la pantalla. Si ha utilizado alguna vez un programa de dibujo
como Paint, ya tiene la mayor parte de las habilidades necesarias para crear una
interfaz de usuario efectiva.
La palabra "Basic" hace
referencia al lenguaje BASIC (Beginners All-Purpose Symbolic Instruction Code),
un lenguaje utilizado por más programadores que ningún otro lenguaje en la
historia de la informática o computación. Visual Basic ha evolucionado a partir
del lenguaje BASIC original y ahora contiene centenares de instrucciones,
funciones y palabras clave, muchas de las cuales están directamente relacionadas
con la interfaz gráfica de Windows. Los principiantes pueden crear aplicaciones
útiles con sólo aprender unas pocas palabras clave, pero, al mismo tiempo, la
eficacia del lenguaje permite a los profesionales acometer cualquier objetivo
que pueda alcanzarse mediante cualquier otro lenguaje de programación de
Windows.
El lenguaje de
programación Visual Basic no es exclusivo de Visual Basic. La Edición para
aplicaciones del sistema de programación de Visual Basic, incluida en Microsoft
Excel, Microsoft Access y muchas otras aplicaciones Windows, utilizan el mismo
lenguaje. El sistema de programación de Visual Basic, Scripting Edition (VBScript)
para programar en Internet es un subconjunto del lenguaje Visual Basic. La
inversión realizada en el aprendizaje de Visual Basic le ayudará a abarcar estas
otras áreas.
Si su objetivo es crear
un pequeño programa para su uso personal o para su grupo de trabajo, un sistema
para una empresa o incluso aplicaciones distribuidas de alcance mundial a través
de Internet, Visual Basic dispone de las herramientas que necesita.
- Las
características de acceso a datos le permiten crear bases de datos y
aplicaciones cliente para los formatos de las bases de datos más conocidas,
incluidos Microsoft SQL Server y otras bases de datos de ámbito empresarial.
- Las tecnologías ActiveX™
le permiten utilizar la funcionalidad proporcionada por otras aplicaciones, como
el procesador de textos Microsoft Word, la hoja de cálculo Microsoft Excel y
otras aplicaciones Windows. Puede incluso automatizar las aplicaciones y los
objetos creados con la Edición profesional o la Edición empresarial de Visual
Basic.
- Las capacidades
de Internet facilitan el acceso a documentos y aplicaciones a través de Internet
desde su propia aplicación.
- La aplicación
terminada es un auténtico archivo .exe que utiliza una biblioteca de vínculos
dinámicos (DLL) de tiempo de ejecución que puede distribuir con toda libertad.
Ediciones de Visual Basic
Visual Basic se
encuentra disponible en tres versiones, cada una de las cuales está orientada a
unos requisitos de programación específicos.
- La Edición de
aprendizaje de Visual Basic permite a los programadores crear robustas
aplicaciones para Microsoft Windows 95 y Windows NT®.
Incluye todos los controles intrínsecos, además de los controles de cuadrícula,
de fichas y los controles enlazados a datos. La documentación que se proporciona
con esta edición incluye Learn VB Now (un CD-ROM multimedia), un
Manual del programador impreso, la Ayuda en pantalla y los Libros en
pantalla de Visual Basic.
- La Edición
profesional proporciona a los profesionales un completo conjunto de herramientas
para desarrollar soluciones para terceros. Incluye todas las características de
la Edición de aprendizaje, así como controles ActiveX adicionales, incluidos
controles para Internet y el Generador de informes de Crystal Reports. La
documentación que se proporciona con la Edición profesional incluye el Manual
del programador, la Ayuda en pantalla, la Guía de herramientas
componentes y el Manual del usuario de Crystal Reports para Visual Basic.
- La Edición empresarial permite a los profesionales
crear sólidas aplicaciones distribuidas en un entorno de equipo. Incluye todas
las características de la Edición profesional, asó como el Administrador de
automatización, la Galería de objetos, las herramientas de administración de
bases de datos, el sistema de control de versiones orientado a proyectos Microsoft
Visual SourceSafe™, etc. La documentación impresa que se proporciona con la
Edición empresarial incluye toda la documentación de la Edición profesional,
y la Guía para la creación de aplicaciones cliente-servidor con Visual Basic
y el Manual del usuario de SourceSafe.
1- Introducción:
1.1- Programación orientada a objetos.
1.1.1- Objetos.
Un objeto es una entidad que tiene asociado un
conjunto de métodos, eventos y propiedades. Ejemplo: Una caja de texto (TextBox)
en la cual podemos escribir cualquier línea es un objeto.
1.1.2- Propiedades.
Son las características que posee un objeto o un
formulario (ventana de Windows).
Ejemplo: Color de fondo del formulario, Fuente de
texto de un TextBox, ….
1.1.3- Métodos.
Los métodos son funciones internas de un determinado
objeto que permite realizar funciones sobre él o sobre otro objeto.
Ejemplo: Deseamos poner en la ventana Windows de
nuestra aplicación "Hola mundo", por tanto pondremos el método -> Ventana.Print
"Hola mundo"
1.1.4- 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.
Un programa Visual Basic es un POE (Programa
orientado a eventos).
Todo lo que hacemos en un programa Visual Basic está
generado por medio de eventos
1.1.5- Explicación integrada y ejemplo de Objetos, Propiedades, Métodos y Eventos.
Los formularios y controles de Visual Basic
son objetos que exponen sus propios métodos, propiedades y eventos. Las
propiedades se pueden considerar como atributos de un objeto, los métodos como
sus acciones y los eventos como sus respuestas.
Un objeto de uso diario como el globo de un niño tiene también propiedades,
métodos y eventos. Entre las propiedades de un globo se incluyen atributos
visibles como el peso, el diámetro y el color. Otras propiedades describen su
estado (inflado o desinflado) o atributos que no son visibles, como su edad. Por
definición, todos los globos tienen estas propiedades; lo que varía de un globo
a otros son los valores de estas propiedades.
Un globo tiene también métodos o acciones
inherentes que puede efectuar. Tiene un método inflar (la acción de llenarlo de
helio) o un método desinflar (expeler su contenido) y un método elevarse (si se
deja escapar). De nuevo, todos los globos pueden efectuar estos métodos.
Los globos tienen además respuestas
predefinidas a ciertos eventos externos. Por ejemplo, un globo respondería al
evento de pincharlo desinflándose o al evento de soltarlo elevándose en el aire.
Los objetos tienen propiedades, responden a
eventos y ejecutan métodos:
Si se pudiera programar un globo, el código
de Visual Basic podría ser como el siguiente. Para establecer las propiedades
del globo:
Globo.Color = Rojo
Globo.Diametro = 10
Globo.Inflado = True
Observe la sintaxis del código: el objeto
(Globo) seguido de la propiedad (Color) seguida de la asignación del valor
(Rojo). Podría modificar el color del globo desde el código si repitiera esta
instrucción y sustituyera el valor por otro diferente. Las propiedades también
se pueden establecer en la ventana Propiedades mientras se está diseñando la
aplicación.
Los métodos de un globo se invocan de esta
forma:
Globo.Inflar
Globo.Desinflar
Globo.Elevar 5
La sintaxis es similar a la sintaxis de las
propiedades: el objeto (un nombre) seguido de un método (un verbo). En el tercer
ejemplo hay un elemento adicional, llamado argumento, que indica la
distancia que se eleva. Algunos métodos tendrán uno o más argumentos para
describir más a fondo la acción que se va a ejecutar.
El globo puede responder a un evento como
se muestra a continuación:
Sub Globo_Pinchazo()
Globo.Desinflar
Globo.HacerRuido "Bang"
Globo.Inflado = False
Globo.Diámetro = 1
End Sub
En este caso, el código describe el
comportamiento del globo cuando se produce un evento Pinchazo: invoca el método
Desinflar y luego invoca el método HacerRuido con un argumento “Bang” (el tipo
de ruido que se va a hacer). Como el globo ya no está inflado, la propiedad
Inflado tiene el valor False y la propiedad Diámetro adopta un nuevo valor.
Si bien no puede programar un globo, sí
puede programar un formulario o un control de Visual Basic. Como programador,
tiene el control: decide qué propiedades se deben modificar, qué métodos se
deben invocar o a qué eventos hay que responder para conseguir la apariencia y
el comportamiento deseados
1.1.6- Diferencias entre la programación procedural y la programación bajo
Windows.
Un estudio profundo del funcionamiento
interno de Windows necesitaría un libro completo. No es necesario tener un
profundo conocimiento de todos los detalles técnicos. Una versión reducida del
funcionamiento de Windows incluye tres conceptos clave: ventanas, eventos y
mensajes.
Una ventana es simplemente una región
rectangular con sus propios límites. Probablemente ya sabe que hay varios tipos
de ventanas: una ventana Explorador en Windows 95, una ventana de documento
dentro de su programa de proceso de textos o un cuadro de diálogo que emerge
para recordarle una cita. Aunque éstos son los ejemplos más comunes, realmente
hay otros muchos tipos de ventanas. Un botón de comando es una ventana. Los
iconos, cuadros de texto, botones de opción y barras de menús son todos
ventanas.
El sistema operativo Microsoft Windows
administra todas estas ventanas asignando a cada una un único número
identificador (controlador de ventana o hWnd). El sistema controla continuamente
cada una de estas ventanas para ver si existen signos de actividad o eventos.
Los eventos pueden producirse mediante acciones del usuario, como hacer clic con
el mouse (ratón) o presionar una tecla, mediante programación o incluso
como resultado de acciones de otras ventanas.
Cada vez que se produce un evento se envía
un mensaje al sistema operativo. El sistema procesa el mensaje y lo transmite a
las demás ventanas. Entonces, cada ventana puede realizar la acción apropiada,
basándose en sus propias instrucciones para tratar ese mensaje en particular
(por ejemplo, volverse a dibujar cuando otra ventana la ha dejado al
descubierto).
Como puede imaginar, tratar todas las
combinaciones posibles de ventanas, eventos y mensajes podría ser interminable.
Afortunadamente, Visual Basic le evita tener que tratar con todos los
controladores de mensajes de bajo nivel. Muchos de los mensajes los controla
automáticamente Visual Basic, mientras que otros se tratan como procedimientos
de evento para su comodidad. Esto le permite crear rápidamente eficaces
aplicaciones sin tener que tratar detalles innecesarios.
En las aplicaciones tradicionales o "por
procedimientos", la aplicación es la que controla qué partes de código y en qué
secuencia se ejecutan. La ejecución comienza con la primera línea de código y
continúa con una ruta predefinida a través de la aplicación, llamando a los
procedimientos según se necesiten.
En una aplicación controlada por eventos,
el código no sigue una ruta predeterminada; ejecuta distintas secciones de
código como respuesta a los eventos. Los eventos pueden desencadenarse por
acciones del usuario, por mensajes del sistema o de otras aplicaciones, o
incluso por la propia aplicación. La secuencia de estos eventos determina la
secuencia en la que se ejecuta el código, por lo que la ruta a través del código
de la aplicación es diferente cada vez que se ejecuta el programa.
Puesto que no puede predecir la secuencia
de los eventos, el código debe establecer ciertos supuestos acerca del "estado
del mundo" cuando se ejecute. Cuando haga suposiciones (por ejemplo, que un
campo de entrada debe contener un valor antes de ejecutar un procedimiento para
procesar ese valor), debe estructurar la aplicación de forma que asegure que esa
suposición siempre será válida (por ejemplo, deshabilitando el botón de comando
que inicia el procedimiento hasta que el campo de entrada contenga un valor).
El código también puede desencadenar
eventos durante la ejecución. Por ejemplo, cambiar mediante programación el
texto de un cuadro de texto hace que se produzca el evento Change del cuadro de
texto. Esto causaría la ejecución del código (si lo hay) contenido en el evento
Change. Si supone que este evento sólo se desencadenará mediante la interacción
del usuario, podría ver resultados inesperados. Por esta razón es importante
comprender el modelo controlado por eventos y tenerlo en cuenta cuando diseñe su
aplicación.
1.3- Proyecto.
1.3.1- Definición de Proyecto en Visual Basic.
Para crear una aplicación con Visual Basic
se trabaja con proyectos. Un proyecto es una colección de archivos que se
usan para generar una aplicación. Este tema describe cómo generar y administrar
proyectos.
Al crear una aplicación probablemente
creará nuevos formularios; también puede volver a usar o modificar formularios
creados en proyectos anteriores. Esto también se aplica a otros módulos o
archivos que pueda incluir en su proyecto. Los controles ActiveX y los objetos
de otras aplicaciones también se pueden compartir entre proyectos.
Después de ensamblar todos los componentes
de un proyecto y escribir el código, puede compilar el proyecto para crear un
archivo ejecutable.
1.3.2-Componentes de un Proyecto.
Cuando desarrolla un aplicación, trabaja
con un archivo de proyecto para administrar todos los diferentes archivos que
crea. Un proyecto consta de lo siguiente:
- Un archivo de proyecto que realiza
el seguimiento de todos los componentes (.vbp)
- Un archivo para cada formulario (.frm).
- Un archivo de datos binario para
cada formulario que contenga datos sobre propiedades de controles del formulario
(.frx). Estos archivos no se pueden modificar y los genera automáticamente
cualquier archivo .frm que tenga propiedades en formato binario, como Picture
o Icon.
- Opcionalmente, un archivo para cada
módulo de clase (.cls).
- Opcionalmente, un archivo para cada
módulo estándar (.bas).
- Opcionalmente, uno o más archivos
con controles ActiveX (.ocx).
- Opcionalmente, un único archivo de
recursos (.res).
El archivo de proyecto es
simplemente una lista de todos los archivos y objetos asociados con el proyecto,
así como información sobre las opciones de entorno establecidas. Esta
información se actualiza cada vez que guarda el proyecto. Todos los archivos y
objetos también se pueden compartir con otros proyectos.
Cuando ha completado todos los archivos del
proyecto puede convertir el proyecto en un archivo ejecutable (.exe): en el menú Archivo, elija el comando Generar proyecto.exe.
1.3.2.1-Formularios.
Un formulario es una ventana. La ventana Windows de
cualquier aplicación.
Podemos abrir tantas ventanas como queramos en
nuestro proyecto, pero el nombre de las ventanas debe ser distinto. Por defecto
como ya hemos visto, la ventana que se abre en Visual Basic tiene el nombre de
Form1. Ya veremos como cambiar estas "Propiedades" más adelante.
Los módulos de formularios (extensión de
nombre de archivo .frm) pueden contener descripciones en forma de texto del
formulario y sus controles, incluyendo los valores de sus propiedades. También
pueden contener declaraciones a nivel de formulario de constantes, variables y
procedimientos externos, procedimientos de evento y procedimientos generales.
1.3.2.2-Módulos de clase.
Los módulos de clase (extensión de nombre
de archivo .cls) son similares a los módulos de formulario, excepto en que no
tiene interfaz de usuario visible. Puede usar módulos de clase para crear sus
propios objetos, incluyendo código para métodos y propiedades.
1.3.2.3-Módulos estándar.
Un módulo es un archivo Visual Basic donde escribimos
parte del código de nuestro programa, y digo parte, porque puede haber código en
el formulario también.
Las rutinas incluidas dentro de los módulos pueden
ser ejecutadas desde los formularios de la aplicación.
Los módulos estándar (extensión de nombre
de archivo .bas) pueden contener declaraciones públicas o a nivel de módulo de
tipos, constantes, variables, procedimientos externos y procedimientos públicos.
1.3.2.4-Archivos de Recursos.
Los archivos de recursos (extensión de nombre de archivo
.res) contienen mapas de bits, cadenas de texto y otros datos que puede
modificar sin volver a modificar el código. Por ejemplo, si piensa traducir su
aplicación a un idioma extranjero, puede guardar todas las cadenas de texto de
la interfaz de usuario y los mapas de bits en un archivo de recursos, y
simplemente traducir el archivo de recursos en vez de la aplicación completa. Un
proyecto sólo puede contener un archivo de recursos.
1.3.2.5-Controles Active X.
Los controles ActiveX (extensión de nombre
de archivo .ocx) son controles opcionales que se pueden agregar al cuadro de
herramientas y se pueden usar en formularios. Cuando instala Visual Basic, los
archivos que contienen los controles incluidos en Visual Basic se copian a un
directorio común (el subdirectorio \Windows\System en Windows 95). Existen
controles ActiveX adicionales disponibles en diversas fuentes. También puede
crear sus propios controles mediante las ediciones Profesional y Empresarial de
Visual Basic.
1.3.2.6-Controles estándar.
Los controles estándar los proporciona
Visual Basic. Los controles estándar, como CommandButton (botón de comando) o
Frame (marco), siempre están incluidos en el cuadro de herramientas, al
contrario de lo que ocurre con los controles ActiveX y los objetos insertables,
que se pueden agregar y quitar del cuadro de herramientas.
1.4-Entorno de Desarrollo.
1.4.1-Barra de menú. y 1.4.2-Barra de Herramientas.
En la ventana del programa, podemos hacer todas las
funciones normales que nos permite el compilador Visual Basic.
1.4.3-Ventana de Proyecto.

Pulse "Ctrl+R" (Ver -> Proyecto) y se abrirá la
ventana de proyectos (3).
En esta ventana tenemos todos los ficheros del
proyecto Visual Basic en el que vamos a trabajar.
1.4.4- Formulario.

Al principio y por defecto, el programa abre un
formulario con el nombre Form1 que es la ventana Windows de nuestra aplicación.
1.4.5- Ventana de Propiedades.

Pulsando la tecla "F4", aparecerá la ventana de
propiedades . Esta ventana es fundamental, ya que contiene todas las propiedades
de cada objeto que insertaremos en nuestro formulario, así como las propiedades
del formulario en sí.
1.4.6- Caja de Herramientas.

La ventana caja de herramientas contiene todos los objetos que podemos incluir
en nuestro formulario. Esta ventana se puede abrir en el menú principal (Ver ->
Caja de herramientas).
2-Programación:
2.1- Fundamentos de la Programación.
Cada módulo de formulario contiene
procedimientos de evento (secciones de código donde se colocan las
instrucciones que se ejecutarán como respuesta a eventos específicos). Los
formularios pueden contener controles. Por cada control de un formulario, existe
el correspondiente conjunto de procedimientos de evento en el módulo de
formulario. Además de procedimientos de evento, los módulos de formulario pueden
contener procedimientos generales que se ejecutan como respuesta a una llamada
desde cualquier procedimiento de evento.
El código que no esté relacionado con un
control o un formulario específico se puede colocar en un tipo diferente de
módulo, un módulo estándar (.bas). Se deben colocar en un módulo estándar
los procedimientos que se puedan utilizar como respuesta a eventos de diversos
objetos, en lugar de duplicar el código en los procedimientos de evento de cada
objeto.
2.1.1- Como funciona una aplicación controlada por eventos.
Un evento es una acción reconocida por un
formulario o un control. Las aplicaciones controladas por eventos ejecutan
código Basic como respuesta a un evento. Cada formulario y control de Visual
Basic tiene un conjunto de eventos predefinidos. Si se produce uno de dichos
eventos y el procedimiento de evento asociado tiene código, Visual Basic llama a
ese código.
Aunque los objetos de Visual Basic
reconocen automáticamente un conjunto predefinido de eventos, usted decide
cuándo y cómo se responderá a un evento determinado. A cada evento le
corresponde una sección de código (un procedimiento de evento). Cuando desea que
un control responda a un evento, escribe código en el procedimiento de ese
evento.
Los tipos de eventos reconocidos por un objeto varían,
pero muchos tipos son comunes a la mayoría de los controles. Por ejemplo, la
mayoría de los objetos reconocen el evento Click: si un usuario hace clic en un
formulario, se ejecuta el código del procedimiento de evento Click del
formulario; si un usuario hace clic en un botón de comando, se ejecuta el código
del procedimiento de evento Click del botón. El código en cada caso será
diferente.
He aquí una secuencia típica de eventos en
una aplicación controlada por eventos:
1. Se inicia la aplicación y se carga y
muestra un formulario.
2. El formulario (o un control del formulario)
recibe un evento. El evento puede estar causado por el usuario (por ejemplo, por
la pulsación de una tecla), por el sistema (por ejemplo, un evento de
cronómetro) o, de forma indirecta, por el código (por ejemplo, un evento Load
cuando el código carga un formulario).
3. Si hay código en el procedimiento de evento
correspondiente, se ejecuta.
4. La aplicación espera al evento siguiente.
2.2- Variables.
2.2.1- Alcance de las variables.
El alcance de una variable define qué partes del código
son conscientes de su existencia. Cuando declara una variable en un
procedimiento, sólo el código de dicho procedimiento puede tener acceso o
modificar el valor de la variable; tiene un alcance que es local al
procedimiento. A veces, sin embargo, se necesita utilizar una variable con un
alcance más general, como aquella cuyo valor está disponible para todos los
procedimientos del mismo módulo o incluso para todos los procedimientos de toda
la aplicación. Visual Basic le permite especificar el alcance de una variable
cuando la declara.
Establecimiento del alcance de las variables
Dependiendo de cómo se declara, una
variable tiene como alcance un procedimiento (local) o un módulo.
|
Alcance |
Privado |
Público |
|
Nivel de
procedimiento |
Las variables son
privadas del procedimiento en el que aparecen. |
No es aplicable. No
puede declarar variables públicas dentro de un procedimiento. |
|
Nivel de módulo |
Las variables son
privadas del módulo en el que aparecen. |
Las variables están
disponibles para todos los módulos. |
Variables utilizadas en un procedimiento
Las variables a nivel de procedimiento sólo
se reconocen en el procedimiento en el que se han declarado. Se las conoce
también como variables locales. Se declaran mediante las palabras clave Dim
o Static. Por ejemplo:
Dim intTemp As Integer
o bien
Static intPermanent As Integer
Los valores de variables locales declaradas
con Static existen mientras se ejecuta la aplicación, mientras que las
variables declaradas con Dim sólo existen mientras se ejecuta el
procedimiento.
Las variables locales resultan una elección
apropiada para cálculos temporales. Por ejemplo, puede crear una docena de
procedimientos distintos que contengan una variable llamada intTemp. Como cada
intTemp se ha declarado como una variable local, cada procedimiento sólo
reconoce su propia versión de intTemp. Cualquier procedimiento puede alterar el
valor de su intTemp local sin que ello afecte a las variables intTemp de los
demás procedimientos.
Variables utilizadas en un módulo
De forma predeterminada, una variable a
nivel de módulo está disponible para todos los procedimientos del módulo, pero
no para el código de otros módulos. Cree variables a nivel de módulo
declarándolas con la palabra clave Private en la sección Declaraciones al
principio del módulo. Por ejemplo:
Private intTemp As Integer
A nivel de módulo, no hay diferencia entre Private y Dim, pero es preferible Private porque contrasta
con Public y hace que el código sea más fácil de comprender.
Variables utilizadas por todos los módulos
Para hacer que una variable a nivel de
módulo esté disponible para otros módulos, utilice la palabra clave Public
para declarar la variable. Los valores de las variables públicas están
disponibles para todos los procedimientos de la aplicación. Al igual que todas
las variables a nivel de módulo, las variables públicas se declaran en la
sección Declaraciones al principio del módulo. Por ejemplo:
Public intTemp As Integer
Nota:
No puede declarar variables públicas en un procedimiento, sólo en la sección
Declaraciones de un módulo.
2.2.2- Declaración
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
sea local al ámbito en que se declara. Puede ser dentro de un procedimiento
o dentro de un formulario, de esta forma no sería accesible desde los demás
procedimientos o formularios.
Public: Las variables declaradas serán publicas y podrán estar accesibles
desde todos los formularios de la aplicación. Para conseguirlo tendremos que
declararlas en un módulo de código, no en la sección declarations de cualquier
formulario de los que conste la aplicación. Para crear un módulo de código en
el menú principal de Visual Basic marcamos en PROYECTO/INSETAR MÓDULO y aparecerá
junto a los demás formularios de la ventana de proyecto aunque con un icono
distinto indicando que se trata de un módulo de código.
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 ejecución
de la aplicación. De esta forma a entrar en algún procedimiento las variables
recuerdan el valor que tenían cuando se salió de él.
2.2.3- Tipos de variables
|
PRIVATE<TBODY>TIPO |
COMENTARIO |
|
BOOLEAN |
Sólo admite 2 valores TRUE o FALSE |
|
BYTE |
admite valores entre 0 y 255 |
|
INTEGER |
admite valores entre -32768 y 32767 |
|
LONG |
admite valores entre -2.147.483.648 y 2.147.483.647 |
|
SINGLE |
admite valores decimales con precisión simple |
|
DOUBLE |
admite valores decimales de doble precisión |
|
CURRENCY |
válido para valores de tipo moneda |
|
STRING |
cadenas de caracteres |
|
DATE |
fechas, permite operar con ellas</TBODY> |
2.2.4- Matrices
Para declarar matrices debemos colocar entre paréntesis el número de elementos
de los que constará a continuación del nombre de la variable:
Dim medidas(9) as integer
De esta forma tenemos una matriz de 10 elementos identificados del 0 al 9
Podemos obligar a que el primer elemento de una matriz tenga el índice con
valor 1.
Esto lo haremos colocando la instrucción option base 1 en la sección declarations
de nuestro formulario.
También podemos indicar los límites inferior y superior de la matriz:
Dim medidas(5 to 14) as integer
es una matriz de 10 elementos cuyos indices van del 5 al 14
Las matrices multidimensionales se declaran de la siguiente forma:
Dim medidas(1 to 10, 1 to 10) as integer
CONSIDERACIONES
Al trabajar con Visual Basic es preferible que activemos la opción que nos
obligue a declarar todas las variables que utilicemos, de esta forma nos ahorraremos
errores inesperados como el de trabajar con una variable ya utilizada anteriormente
produciéndose un conflicto difícil de resolver. En cambio si intentamos declarar
2 variables con el mismo nombre, en el mismo formulario o procedimiento se produce
un error en tiempo de edición avisándonos de la situación.
Para activar esta opción debemos ir a la opción del menú Herramientas y Opciones
para que aparezca un cuadro de dialogo como este.

La opción que nos interesa activar es Requerir declaración de variables que
en este caso ya lo está. De esta forma en cada sección declarations de cada
formulario aparecerá la sentencia option explicit
Otra opción que es interesante activar, es la de Guardar los cambios en la
ficha entorno, la cual te guarda una copia del código antes de ejecutarlo por
si acaso luego no podemos, se bloquea la aplicación etc... no suele pasar pero
nunca se sabe. De esta forma te aseguras que lo último que hayas ejecutado lo
tienes guardado en el disco.
La opción Comprobación automática de sintaxis normalmente viene activada por
defecto, no conviene desactivarla puesto que te avisa de errores de sintaxis
conforme vas escribiendo el código: Si te falta el then después del if, el do
antes del while etc...
2.3- Procedimientos y funciones.
2.3.1-Introducción a los Procedimientos.
Puede simplificar las tareas de
programación si divide los programas en componentes lógicos más pequeños. Estos
componentes, llamados procedimientos, pueden convertirse en bloques
básicos que le permiten mejorar y ampliar Visual Basic.
Los procedimientos resultan muy útiles para
condensar las tareas repetitivas o compartidas, como cálculos utilizados
frecuentemente, manipulación de texto y controles, y operaciones con bases de
datos.
Hay dos ventajas principales cuando se
programa con procedimientos:
-
Los procedimientos le permiten
dividir los programas en unidades lógicas discretas, cada una de las cuales se
puede depurar más fácilmente que un programa entero sin procedimientos.
-
Los procedimientos que se utilizan
en un programa pueden actuar como bloques de construcción de otros programas,
normalmente con pocas o ninguna modificación.
En Visual Basic se utilizan varios tipos de
procedimientos:
2.3.2- Procedimientos.
Un procedimiento Sub es un bloque de
código que se ejecuta como respuesta a un evento. Al dividir el código de un
módulo en procedimientos Sub, es más sencillo encontrar o modificar el
código de la aplicación.
La sintaxis de un procedimiento Sub
es la siguiente:
[Private|Public][Static]Sub nombre_procedimiento (argumentos)
instrucciones
End Sub
Cada vez que se llama al procedimiento se
ejecutan las instrucciones que hay entre Sub y End Sub. Se
pueden colocar los procedimientos Sub en módulos estándar, módulos de
clase y módulos de formulario. De forma predeterminada, los procedimientos
Sub son Public en todos los módulos, lo que significa que se les
puede llamar desde cualquier parte de la aplicación.
Los argumentos de un procedimiento
son como las declaraciones de variables; se declaran valores que se pasan desde
el procedimiento que hace la llamada.
Resulta muy útil en Visual Basic distinguir
entre dos tipos de procedimientos Sub, procedimientos generales y procedimientos de evento.
Procedimientos generales
Un procedimiento general indica a la
aplicación cómo realizar una tarea específica. Una vez que se define un
procedimiento general, se le debe llamar específicamente desde la aplicación.
Por el contrario, un procedimiento de evento permanece inactivo hasta que se le
llama para responder a eventos provocados por el usuario o desencadenados por el
sistema.
¿Por qué crear procedimientos generales?
Una razón es que muchos procedimientos de evento distintos pueden necesitar que
se lleven a cabo las mismas acciones. Es una buena estrategia de programación
colocar las instrucciones comunes en un procedimiento distinto (un procedimiento
general) y hacer que los procedimientos de evento lo llamen. Esto elimina la
necesidad de duplicar código y también hace que la aplicación sea más fácil de
mantener.
Procedimientos de evento
Cuando un objeto en Visual Basic reconoce que se ha
producido un evento, llama automáticamente al procedimiento de evento utilizando
el nombre correspondiente al evento. Como el nombre establece una asociación
entre el objeto y el código, se dice que los procedimientos de evento están
adjuntos a formularios y controles.
-
Un procedimiento de evento de un
control combina el nombre real del control (especificado en la propiedad Name),
un carácter de subrayado (_) y el nombre del evento. Por ejemplo, si desea que
un botón de comando llamado cmdPlay llame a un procedimiento de evento cuando se
haga clic en él, utilice el procedimiento cmdPlay_Click.
-
Un procedimiento de evento de un
formulario combina la palabra "Form", un carácter de subrayado y el nombre del
evento. Si desea que un formulario llame a un procedimiento de evento cuando se
hace clic en él, utilice el procedimiento Form_Click. (Como los controles, los
formularios tienen nombres únicos, pero no se utilizan en los nombres de los
procedimientos de evento.)
Todos los procedimientos de evento utilizan
la misma sintaxis general.
Sintaxis de un
evento de control Sintaxis de un evento de
formulario
Private Sub nombrecontrol_nombreevento (argumentos )
instrucciones
End Sub
Private Sub Form_nombreevento (argumentos)
instrucciones
End Sub
Aunque puede escribir procedimientos de
evento nuevos, es más sencillo utilizar los procedimientos de código que
facilita Visual Basic, que incluyen automáticamente los nombres correctos de
procedimiento. Puede seleccionar una plantilla en la ventana Editor de código si
selecciona un objeto en el cuadro Objeto y selecciona un procedimiento en
el cuadro Procedimiento.
También es conveniente establecer la
propiedad Name de los controles antes de empezar a escribir los
procedimientos de evento para los mismos. Si cambia el nombre de un control tras
vincularle un procedimiento, deberá cambiar también el nombre del procedimiento
para que coincida con el nuevo nombre del control. De lo contrario, Visual Basic
no será capaz de hacer coincidir el control con el procedimiento. Cuando el
nombre de un procedimiento no coincide con el nombre de un control, se convierte
en un procedimiento general.
2.3.3- Funciones.
La sintaxis de un procedimiento Function
es la siguiente:
[Private|Public][Static]Function nombre_procedimiento (argumentos) [As tipo]
instrucciones
End Function
Al igual que un procedimiento Sub,
un procedimiento Function es un procedimiento diferente que puede tomar
argumentos, realizar una serie de instrucciones y cambiar el valor de los
argumentos. A diferencia de los procedimientos Sub, los procedimientos
Function pueden devolver un valor al procedimiento que realiza la llamada.
Hay tres diferencias entre los procedimientos Sub y Function:
-
Generalmente, se llama a una función
incluyendo el nombre y los argumentos del procedimiento en la parte derecha de
una instrucción o expresión mayor (valor_retorno = función()).
-
Los procedimientos Function
tienen tipos de datos, al igual que las variables. Esto determina el tipo del
valor de retorno. (En ausencia de la cláusula As, el tipo es el tipo
predeterminado Variant.)
-
Se devuelve un valor asignándole al
propio nombre_procedimiento. Cuando el procedimiento Function
devuelve un valor, se puede convertir en parte de una expresión mayor.
Por ejemplo, podría escribir una función
que calculara el tercer lado, o hipotenusa, de un triángulo rectángulo, dados
los valores de los otros dos lados:
Function Hipotenusa (A As Integer, B As Integer) As String
Hipotenusa
= Sqr(A ^ 2 + B ^ 2)
End Function
Se llama a un procedimiento Function
de la misma forma que a las funciones incorporadas en Visual Basic:
Label1.Caption = Hipotenusa(CInt(Text1.Text),CInt(Text2.Text))
strX = Hipotenusa(Width, Height)
2.3.4- Llamadas a procedimientos.
Un procedimiento Sub difiere de un
procedimiento Function en que al procedimiento Sub no se le puede
llamar mediante su nombre en una expresión. La llamada a un procedimiento Sub
es una instrucción única. Además, un procedimiento Sub no devuelve un
valor en su nombre como hace una función. Sin embargo, al igual que Function,
un procedimiento Sub puede modificar los valores de las variables que se
le pasan.
Hay dos formas de llamar a un procedimiento Sub:
Ambas instrucciones llaman a un Sub
denominado MiProc.
Call MiProc (PrimerArgumento,
SegundoArgumento)
MiProc PrimerArgumento, SegundoArgumento
Observe que cuando utiliza la sintaxis
Call, debe poner los argumentos entre paréntesis. Si omite la palabra clave Call, deberá también omitir los paréntesis alrededor de los argumentos.
2.3.5- Llamadas a Funciones.
Normalmente se llama a un procedimiento de
función que se ha escrito de la misma forma en que se llama a una función
intrínseca de Visual Basic como Abs; es decir, utilizando su nombre en
una expresión:
Las instrucciones siguientes llamarían a una función
' llamada ToDec.
Print 10 * Adec
X = Adec
If Adec = 10 Then Debug.Print "Fuera del
intervalo"
X = OtraFunción(10 * Adec)
También es posible llamar a una función
igual que se llama a un procedimiento Sub. Las instrucciones siguientes
llaman a la misma función:
Call Year(Now)
Year Now
Cuando llama a una función de esta manera,
Visual Basic desecha el valor de retorno.
2.3.6- Pasaje de argumentos a los procedimientos y funciones.
Normalmente el código de un procedimiento
necesita cierta información sobre el estado del programa para realizar su
trabajo. Esta información consiste en variables que se pasan al procedimiento
cuando se le llama. Cuando se pasa una variable a un procedimiento, se llama
argumento.
Tipos de datos de los argumentos
Los argumentos de los procedimientos que
escriba tienen el tipo de dato Variant de forma predeterminada. Sin
embargo, puede declarar otros tipos de datos para los argumentos. Por ejemplo,
la función siguiente acepta una cadena y un entero:
Function QuéComer (DíaSemana As String, Hora As Integer) As String
' Devuelve
el menú del almuerzo basándose en el día y la hora.
If DíaSemana = "Viernes" then
QuéComer = "Pescado"
Else
QuéComer = "Pollo"
End If
If Hora
> 4 Then QuéComer = "Demasiado tarde"
End Function
Paso de argumentos por valor
Sólo se pasa una copia de la variable
cuando se pasa un argumento por valor. Si el procedimiento cambia el valor, el
cambio afecta sólo a la copia y no a la variable propiamente dicha. Utilice la
palabra clave ByVal para indicar un argumento pasado por valor.
Por ejemplo:
Sub Cuentas (ByVal intNumCuenta as Integer)
.
. ' Ponga aquí sus instrucciones.
.
End Sub
Paso de argumentos por referencia
Pasar argumentos por referencia le da al
procedimiento acceso al contenido real de la variable en su ubicación de
dirección de memoria. Como resultado, el procedimiento al que se ha pasado el
valor de la variable se puede modificar de forma permanente. La forma
predeterminada de pasar valores en Visual Basic es por referencia.
Si especifica el tipo de dato de un
argumento que se pasa por referencia, debe pasar un valor de ese tipo para el
argumento. Puede eludirlo si pasa una expresión en vez de un tipo de dato como
argumento. Visual Basic evalúa la expresión y la pasa como el tipo requerido si
puede.
La forma más sencilla de convertir una
variable en una expresión es ponerla entre paréntesis. Por ejemplo, para pasar
una variable declarada como entero a un procedimiento que espera una cadena como
argumento, debería hacer lo siguiente:
Sub ProcedimientoQueLlama ()
Dim intX As Integer
intX =
12 * 3
Foo(intX)
End Sub
Sub Foo(Bar As String)
MsgBox
Bar 'El valor de Bar es la cadena "36".
End Sub
2.4- Estructuras de Control (Repetición y Decisión).
2.4.1-Do While – Loop / Do – Loop While.
Utilice el bucle Do para ejecutar un
bloque de instrucciones un número indefinido de veces. Hay algunas variantes en
la instrucción Do...Loop, pero cada una evalúa una condición numérica
para determinar si continúa la ejecución. Como ocurre con If...Then, la condición debe ser un valor o una expresión que dé como resultado
False (cero) o True (distinto de cero).
En el ejemplo de Do...Loop
siguiente, las instrucciones se ejecutan siempre y cuando condición
sea True:
Do While condición
instrucciones
Loop
Cuando Visual Basic ejecuta este bucle
Do, primero evalúa condición. Si condición es False
(cero), se salta todas las instrucciones. Si es True (distinto de cero),
Visual Basic ejecuta las instrucciones, vuelve a la instrucción Do While
y prueba la condición de nuevo.
Por tanto, el bucle se puede ejecutar
cualquier número de veces, siempre y cuando condición sea distinta de
cero o True. Nunca se ejecutan las instrucciones si condición es False inicialmente. Por ejemplo, este procedimiento cuenta las veces que
se repite una cadena de destino dentro de otra cadena repitiendo el bucle tantas
veces como se encuentre la cadena de destino:
Function ContarCadenas (cadenalarga,
destino)
Dim posición, contador
posición = 1
Do While InStr(posición, cadenalarga,
destino)
posición = InStr(posición,
cadenalarga, destino) +1
contador = contador + 1
Loop
ContarCadenas = contador
End Function
Si la cadena de destino no está en la otra
cadena, InStr devuelve 0 y no se ejecuta el bucle.
Otra variante de la instrucción Do...Loop
ejecuta las instrucciones primero y prueba condición después de cada
ejecución. Esta variación garantiza al menos una ejecución de instrucciones:
Do
instrucciones
Loop While condición
|
Hace el bucle cero
o más veces |
Hace el bucle al
menos una vez |
|
Do Until condición
instrucciones
Loop |
Do
instrucciones
Loop
Until condición |
2.4.2- For – Next.
Los bucles Do funcionan bien cuando
no se sabe cuántas veces se necesitará ejecutar las instrucciones del bucle. Sin
embargo, cuando se sabe que se van a ejecutar las instrucciones un número
determinado de veces, es mejor elegir el bucle For…Next. A diferencia del
bucle Do, el bucle For utiliza una variable llamada contador que
incrementa o reduce su valor en cada repetición del bucle. La sintaxis es la
siguiente:
For contador
= iniciar To finalizar [Step incremento]
instrucciones
Next
[contador]
Los argumentos contador, iniciar, finalizar e incremento son todos numéricos.
Nota:
El argumento incremento puede ser positivo o negativo. Si incremento
es positivo, iniciar debe ser menor o igual que finalizar o no se
ejecutarán las instrucciones del bucle. Si incremento es negativo,
iniciar debe ser mayor o igual que finalizar para que se ejecute el
cuerpo del bucle. Si no se establece Step, el valor predeterminado de
incremento es 1.
Al ejecutar el bucle For, Visual
Basic:
1. Establece contador al mismo
valor que iniciar.
2. Comprueba si contador es
mayor que finalizar. Si lo es, Visual Basic sale del bucle.
(Si incremento es negativo, Visual
Basic comprueba si contador es menor que finalizar.)
3. Ejecuta instrucciones.
4. Incrementa contador en 1 o en instrucciones, si se especificó.
5. Repite los pasos 2 a 4.
Este código imprime los nombres de todas
las fuentes de pantalla disponibles:
Private Sub Form_Click ()
Dim I As
Integer
For i =
0 To Screen.FontCount
Print Screen.Fonts(i)
Next
End Sub
En la aplicación de ejemplo VCR, el
procedimiento HighlightButton utiliza un bucle For...Next para pasar por
la colección de controles del formulario VCR y mostrar el control Shape
apropiado:
Sub HighlightButton(MyControl As Variant)
Dim i As
Integer
For i =
0 To frmVCR.Controls.Count - 1
If TypeOf frmVCR.Controls(i) Is Shape Then
If frmVCR.Controls(i).Name = MyControl Then
frmVCR.Controls(i).Visible = True
Else
frmVCR.Controls(i).Visible = False
End If
End If
Next
End Sub
2.4.3- If – Else – End If.
Use la estructura If...Then para
ejecutar una o más instrucciones basadas en una condición. Puede utilizar la
sintaxis de una línea o un bloque de varias líneas:
If condición
Then instrucción
If condición Then
instrucciones
End If
Condición normalmente es una comparación,
pero puede ser cualquier expresión que dé como resultado un valor numérico.
Visual Basic interpreta este valor como True o False; un valor
numérico cero es False y se considera True cualquier valor
numérico distinto de cero. Si condición es True, Visual
Basic ejecuta todas las instrucciones que siguen a la palabra clave
Then. Puede utilizar la sintaxis de una línea o de varias líneas para
ejecutar una instrucción basada en una condición (estos dos ejemplos son
equivalentes):
If cualquierFecha < Now Then cualquierFecha
= Now
If cualquierFecha < Now Then
cualquierFecha = Now
End If
Observe que el formato de una única línea
de If...Then no utiliza la instrucción End If. Si desea ejecutar
más de una línea de código cuando condición sea True, debe
utilizar la sintaxis de bloque de varias líneas If...Then...End If.
If cualquierFecha < Now Then
cualquierFecha = Now
Timer1.Enabled = False ' Desactiva el control Timer.
End If
If...Then...Else
Utilice un bloque If...Then...Else
para definir varios bloques de instrucciones, uno de los cuales se ejecutará:
If condición1 Then
[bloque de
instrucciones 1]
[Else
[bloque de
instrucciones n]]
End If
Visual Basic evalúa primero condición1.
Si es False, Visual Basic ejecuta el bloque de instrucciones
correspondientes a Else y después ejecuta el código que sigue a End If.
Por ejemplo, la aplicación podría realizar
distintas acciones dependiendo del control en que se haya hecho clic de una
matriz de controles de menú:
Private Sub mnuCut_Click (Index As Integer)
If Index
= 0 Then
' Comando Cortar.
CopyActiveControl
ClearActiveControl
Else
' Comando Pegar.
PasteActiveControl
End If
End Sub
2.4.4- Select - Case
Visual Basic proporciona la estructura
Select Case como alternativa a If...Then...Else para ejecutar
selectivamente un bloque de instrucciones entre varios bloques de instrucciones.
La instrucción Select Case ofrece posibilidades similares a la
instrucción If...Then...Else, pero hace que el código sea más legible
cuando hay varias opciones.
La estructura Select Case funciona
con una única expresión de prueba que se evalúa una vez solamente, al principio
de la estructura. Visual Basic compara el resultado de esta expresión con los
valores de cada Case de la estructura. Si hay una coincidencia, ejecuta
el bloque de instrucciones asociado a ese Case:
Select Case expresión_prueba
[Case
lista_expresiones1
[bloque
de instrucciones 1]]
[Case
lista_expresiones2
[bloque
de instrucciones 2]]
.
.
.
[Case Else
[bloque
de instrucciones n]]
End Select
Cada lista_expresiones es una lista
de uno o más valores. Si hay más de un valor en una lista, se separan los
valores con comas. Cada bloque de instrucciones contiene cero o más
instrucciones. Si más de un Case coincide con la expresión de prueba,
sólo se ejecutará el bloque de instrucciones asociado con la primera
coincidencia. Visual Basic ejecuta las instrucciones de la cláusula (opcional) Case Else si ningún valor de la lista de expresiones coincide con la
expresión de prueba.
Por ejemplo, suponga que agrega otro
comando al menú Edición en el ejemplo If...Then...Else. Podría
agregar otra cláusula ElseIf o podría escribir la función con Select
Case:
Private Sub mnuCut_Click (Index As Integer)
Select
Case Index
Case 0
' Comando Cortar.
CopyActiveControl
' Llama a procedimientos generales.
ClearActiveControl
Case 1 ' Comando Copiar.
CopyActiveControl
Case 2 ' Comando Borrar.
ClearActiveControl
Case 3 ' Comando Pegar.
PasteActiveControl
Case Else
frmFind.Show ' Muestra el cuadro de diálogo
Buscar.
End Select
End Sub
Observe que la estructura Select Case
evalúa una expresión cada vez al principio de la estructura.
3- Controles
3.1- Controles básicos
Vamos a ver los siguientes puntos:
Antes de empezar a conocer los controles básicos veamos cuales son sus
características 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...
-
Metodos: Son procedimientos asociados
a los controles, es decir, rutinas ya establecidas que podemos invocar desde
nuestras aplicaciones para que se realice alguna operación sobre el control.
Por ejemplo el control ListView ( la lista de archivos que aparece en el explorador
de windows) dispone del método order que te ordena los datos aparecidos en la
lista.
-
Eventos: Son acciones que pueden
ser motivadas por el propio usuario o por mismo sistema operativo. Ejemplos
pueden ser el movimiento del ratón o hacer click sobre su botón. En Visual Basic
digamos que se utiliza la programación orientada a eventos, lo cual es una de
las diferencias más importantes respecto a la programación lineal de MS DOS.
No necesitamos detectar cuando se ha producido un evento determinado, Windows
lo detecta automáticamente. Los eventos ya estan definidos, son bastantes y
cada control cuenta con los suyos propios, aunque son muy parecidos. Lo único
que tendremos que hacer es asociar el código necesario al evento que necesitemos
tratar.
TextBox

Mediante este control podremos realizar tanto la entrada como la salida de datos
en nuestras aplicaciones.
No hace falta que indiquemos las coordenadas de la situación del formulario en
pantalla, simplemente tendremos que marcar sobre el control de la caja de
herramientas y dibujarlo con el tamaño que queramos en nuestro formulario.
PROPIEDADES
Las propiedades de las que dispone el control son las siguientes:(para obtener
el cuadro de propiedades, seleccionar el control y pulsar F4 o
pulsar con el boton derecho para obtener el menú contextual y marcar
Propierties)
Text: Aquí indicamos el texto que aparecerá en el control. Podemos asignarle
cualquier texto en tiempo de diseño o ejecución. También podemos tomar el texto
que haya introducido el usuario para tratarlo durante la ejecución.
Name: Esta propiedad la tienen todos los controles, el nombre que viene por
defecto en este caso Text1 y es el nombre con el que se conocerá el control
cuando lo utilicemos en el código. En un mismo formulario no puede haber 2 controles
con el mismo nombre. Conviene poner un nombre que represente la función que
tiene el control en la aplicación para que el código quede más claro. Ejemplo,
si en el textbox vamos a introducir la dirección de una persona podemos asignarle
a esta propiedad el valor Dirección.
MultiLine: Permite que introduzcamos varias lineas de texto en el control
en lugar de sólo una.
Alignment: Alineación que tendrá el texto dentro del control: izquierda, centro
o derecha. Para que funcione la propiedad MultiLine debe estar con el valor
true.
Locked: Si esta 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.
Otras propiedades que son comunes a la mayoria de los controles:
Backcolor: color de fondo.
Forecolor: color de letra.
Font: tipo y tamaño de letra.
METODOS
Recordemos que por métodos se entienten los procedimientos o funciones asociados
a un control, los cuales nos permiten realizar ciertas operaciones útiles sobre
dicho control: Ej. ordenar sus elementos, buscar un dato, etc..
Pues bien, los controles básicos que vamos a ver en este capítulo únicamente
contienen métodos avanzados que no vamos a analizar por ahora, ya que son
métodos que no se suelen utilizar. Más adelante cuando veamos otros tipos de
controles estudiaremos cuales son los métodos que nos podrán servir. Si alguien
está interesado en conocer todas las características de los controles puede
hacerlo mirando en la ayuda que proporciona VB, haciendo click sobre cualquier
control de la caja de herramientas y pulsando a continuación F1 obtendrá ayuda
referente a ese control donde aparecerán todas sus propiedades, metodos y
eventos.
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.
MouseMove: al mover el raton por encima del control.
Mousedown: al pulsar cualquier boton del raton
Change: al cambiar el contenido del control
Click: al hacer click con el botón izquierdo del ratón sobre el control
Doubleclick: al hacer doble click con el con el botón izquierdo del ratón
sobre el control
Getfocus: 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.
EJEMPLO
Vamos a probar el uso del control TextBox mediante un pequeño ejemplo
en el que teniendo un único control de este tipo en un formulario, lo
programaremos de forma que al pasar el ratón sobre el control (evento
mousemove) aparecerá en el formulario el texto que contenga.

Observamos que al situar el control en el formulario aparece por defecto el
texto Text1. Para que no aparezca ese texto al ejecutar la
aplicación, debemos cambiar la propiedad Text pulsando
F4 y colocar el texto que queramos o no colocar nada.
Lo que queremos hacer es que cada vez que movamos el raton por el control
aparezca su contenido en el formulario. Entonces lo que habrá que hacer abrir la
ventana de código, seleccionando el control y pulsando F7, o
con el botón derecho del ratón y la opción View code del
menú contextual. Este proceso nos llevará al cuadro de la imagen siguiente.

Lo que tendremos que hacer es seleccionar el evento que necesitemos de la
sección Proc, en nuestro caso mousemove y a continuación
teclear el codigo correspondiente: La instrucción print
visualiza un texto en el formulario y si le ponemos text1.text
le decimos que nos muestre la propiedad Text del control Text1 que ese será el nombre que tendrá el control por defecto
si no lo hemos cambiado en la propiedad name.
Al ejecutar esta pequeña aplicación pulsando F5 observaremos
como aparece en el formulario lo que hayamos tecleado en el control cada vez que
movemos el raton sobre el Textbox.
Podemos modificar el programa para que responda a cualquier otro evento sin más
que seleccionarlo en la sección Proc e introduciendo el codigo
que sea necesario.
Label

Este control es también uno de los más utilizados, aunque su utilidad queda
restringida a la visualización de datos en el mismo, no permitiendo la
introducción de datos por parte del usuario.
La forma de utilizarlo es similar a la del control anterior, dibujar el control
en el formulario con el tamaño que queramos y asignarle un texto en tiempo de
diseño o de ejecución esta vez sin utilizar la propiedad text puesto que no la
incorpora, sino utilizando la propiedad caption.
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. En el ejemplo anterior donde
aparecía un textbox en el formulario, hubiera quedado mejor con un mensaje
aclaratorio contenido en un control label:

PROPIEDADES
Caption: Es el texto que contendrá el control.
Alignment: Alineación del texto contenido en el control, no necesita que esté
activada ninguna otra propiedad.
BorderStyle: Si queremos que aparezca un borde alrededor del control activaremos
esta propiedad.
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. De todas formas los
eventos son casi los mismos del control textbox excepto que no dispone de los
eventos GetFocus y LostFocus ya
que a este control no se le puede dar el enfoque.
En la parte final de este capitulo veremos un ejemplo donde se muestra el
funcionamiento de todos los controles que vamos a ir viendo.Por ahora a ver si
conseguis que ahora el mensaje no aparezca en el formulario sino en un segundo
label situado en el formulario, dejando un control label que muestre el mensaje
aclaratorio que hemos visto antes.
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, normalmente
Aceptar o Cancelar. Aunque según el código que le asociemos podremos realizar
las operaciones que queramos.
En el ejemplo anterior podemos añadir un control de este tipo para salir de la
aplicación sin tener pulsar sobre la equis de la esquina superior derecha.

Pero sólo con introducir un control de este tipo con el texto salir que se
introduce a traves de la propiedad caption no basta. Habrá que asociarle un
código que nos permita salir de la aplicación en el evento adecuado. Y el evento
por excelencia de este control es click. Así pues accederemos al código del
control y la sentencia nos permitirá salir de la aplicación es End, simplemente
tecleamos esa palabra en el evento click y comprobar que realmente finalizaremos
nuestra aplicación al pulsar sobre dicho botón.
PROPIEDADES
Caption: Aqui pondremos el letrero que queremos que apaezca en el botón: aceptar,
cancelar, salir, etc...
Enabled: Esta es una nueva propiedad, cuando su valor es true el botón funciona
normalmente, cuando su valor es false el boton se encuentra desactivado, no
responde a los eventos producidos sobre él y el texto aparece en un gris claro
advirtiendonos de su estado. Podemos utilizar esta propiedad para activar o
desactivar un boton dependiendo del estado de otros controles. Por ejemplo,
en un boton Aceptar, no activarlo hasta que se haya introducido una cantidad
en un control textbox, ya que ese botón nos calculará el IVA de la cantidad.
EVENTOS
Click: Es el evento tipico de este control y el que más se utiliza.
MouseMove: Como sabemos detecta el movimiento del raton sobre el control.
Puede servir para que aparezca un mensaje en un control Label que nos aporte
información sobre la utilidad del control ampliando el texto que hayamos colocado
como caption del commandbutton.
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.
Facilita la introducción de datos por parte del usuario:

De todas las opciones que se nos ofrece, en este caso los 4 colores, 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 4 controles optionbutton se trata del control Frame
,
es opcional, aunque es conviente 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 opcioó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 despues 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, en el ejemplo anterior: colores.
PROPIEDADES DE OPTIONBUTTON
Caption: El texto que aparecerá al lado del control: Rojo, verde, etc...
Value: Es el valor que tendrá el control: True si se encuentra activado y
False si no lo está. Para comprobar que opcion ha activado el usuario comprobaremos
el estado de esta propiedad.
Alignment: Alineación del texto respecto al control: Left Justify: el control
aparece a la izquierda del texto. Es el ejemplo anterior.Right Justify: el control
aparece a la derecha del texto.
Los eventos del control son los mismos que en anteriores controles, aunque no se
suele asociar código a los eventos de este tipo de controles, sino únicamente
conocer el valor que tienen: true o
false.
3.1.1- APLICACION DE EJEMPLO
Para practicar con los controles que hemos visto
vamos a realizar una pequeña aplicación que consistirá en realizar con 2 números
que introduzcamos, una operación que seleccionemos y mostrar el resultado.
El formulario donde estarán todos los controles es el
siguiente:

La propiedad Caption de cada uno de los controles es la
que se muestra en el formulario.
He modificado la propiedad Name de cada control para que
al utilizarlos desde el codigo 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 have falta
cambiarles el nombre.
Lo que habrá que hacer ahora es asociar codigo a cada uno de los botones que es
de donde se van a realizar las operaciones:


El botón Salir únicamente contendrá
la sentencia End.
4 -Formularios.
Los formularios tienen sus propios eventos,
propiedades y métodos con los que se puede controlar su apariencia y
comportamiento.
El primer paso para diseñar un formulario
consiste en establecer sus propiedades. Puede establecer las propiedades de un
formulario en tiempo de diseño en la ventana Propiedades o en tiempo de
ejecución, escribiendo código.
Nota
En tiempo de diseño, que es cualquier momento mientras está desarrollando
una aplicación en el entorno de Visual Basic, se trabaja con formularios y
controles, se establecen propiedades y se escribe código para los eventos.
Tiempo de ejecución es cualquier momento mientras se ejecuta realmente la
aplicación y se interactúa con ella como lo haría un usuario.
4.1- Estableciendo las Propiedades más importantes de los formularios.
Muchas propiedades de un formulario afectan
a su apariencia física. La propiedad Caption determina el texto que
muestra la barra de título del formulario y la propiedad Icon establece
el icono que aparece cuando se minimiza un formulario. Las propiedades
MaxButton y MinButton determinan si el formulario se puede maximizar
o minimizar. Cambiando la propiedad BorderStyle puede controlar el
comportamiento de cambio de tamaño del formulario.
Las propiedades Height y Width
determinan el tamaño inicial de un formulario, mientras que las propiedades
Left y Top determinan la ubicación del formulario en relación con la
esquina superior izquierda de la pantalla. Con la propiedad WindowState
puede establecer si el formulario se inicia en estado maximizado, minimizado o
normal.
La propiedad Name establece el
nombre con el que hará referencia al formulario en el código. De forma
predeterminada, cuando se agrega un formulario por primera vez a un proyecto, su
nombre es Form1, Form2, etc. Es conveniente establecer la propiedad Name
a algo más significativo, como “frmEntry” para un formulario de entrada de
pedidos.
La mejor manera de familiarizarse con las
numerosas propiedades de los formularios es experimentar. Cambie algunas
propiedades de un formulario en la ventana Propiedades y ejecute la aplicación
para ver su efecto. Puede aprender más sobre cada propiedad si la selecciona y
presiona F1
para ver Ayuda contextual.
4.2- Eventos y Métodos de los formularios.
Como objetos que son, los formularios
pueden ejecutar métodos y responder a eventos.
El evento Resize de un formulario se
desencadena siempre que se cambia el tamaño de un formulario, ya sea por una
acción del usuario o a través del código. Esto permite realizar acciones como
mover o cambiar el tamaño de los controles de un formulario cuando han cambiado
sus dimensiones.
El evento Activate se produce siempre que
un formulario se convierte en el formulario activo; el evento Deactivate se
produce cuando otro formulario u otra aplicación se convierte en activo. Estos
eventos son adecuados para iniciar o finalizar acciones del formulario. Por
ejemplo, en el evento Activate podría escribir código para resaltar el texto de
un determinado cuadro de texto; con el evento Deactivate podría guardar los
cambios efectuados en un archivo o en una base de datos.
Para hacer visible un formulario se invoca
el método Show:
Form2.Show
Para descargar un
formulario (cerrarlo), se invoca al método Unload:
Form2.Unload
Unload Me ‘Me
significa el Formulario activo.
Para ocultar un
formulario (pero dejarlo activo en memoria) se invoca al método Hide:
Form2.Hide
Invocar el método Show tiene el
mismo efecto que establecer a True la propiedad Visible del
formulario.
Muchos métodos de un formulario implican
texto o gráficos. Los métodos Print, Line, Circle y
Refresh son útiles para imprimir o dibujar directamente en la superficie de
un formulario.
4.3- Establecer el formulario de arranque de la aplicación.
De forma predeterminada, el primer
formulario de la aplicación es el formulario inicial. Cuando la
aplicación inicia la ejecución, se presenta este formulario (el primer código
que se ejecuta es el del evento Form_Initialize de dicho formulario). Si quiere
presentar un formulario diferente cuando se inicie la aplicación, debe cambiar
el formulario inicial.
Para cambiar el formulario inicial
1. En el menú Proyecto, elija
Propiedades del proyecto.
2. Elija la ficha General.
3. En el cuadro de lista Objeto
inicial, seleccione el formulario que desee que sea el nuevo formulario
inicial.
4. Elija Aceptar.
Inicio sin formulario inicial
Algunas veces puede desear que la
aplicación se inicie sin cargar ningún formulario. Por ejemplo, puede que desee
ejecutar código que cargue un archivo de datos y después presentar uno de entre
varios formularios, según el contenido de dicho archivo. Puede hacerlo creando
un procedimiento Sub llamado Main en un módulo estándar, como en el
siguiente ejemplo:
Sub Main()
Dim intStatus As Integer
' Llamar a un procedimiento de función para comprobar el estado
' del usuario.
intStatus = GetUserStatus
' Mostrar un formulario
inicial distinto según el estado.
If intStatus = 1 Then
frmMain.Show
Else
frmPassword.Show
End If
Este procedimiento tiene que ser un
procedimiento Sub y no puede estar en un módulo de formulario. Para
establecer el procedimiento Sub Main como objeto inicial, en el menú
Proyecto elija Propiedades del proyecto, seleccione la ficha
General y seleccione Sub Main en el cuadro Objeto inicial.
5 -Combo Box (lista combo)
Un control ComboBox combina las
características de un control TextBox y un control ListBox; los
usuarios pueden introducir información en la parte del cuadro de texto o
seleccionar un elemento en la parte de cuadro de lista del control.
Para agregar o eliminar elementos en un
control ComboBox, use el método AddItem o RemoveItem.
Establezca las propiedades List, ListCount y ListIndex para
permitir a un usuario tener acceso a los elementos de un control ComboBox.
Como alternativa, puede agregar elementos a la lista mediante la propiedad
List en tiempo de diseño.
Nota
Un evento Scroll ocurrirá en un control ComboBox sólo cuando se desplace
el contenido de la parte desplegable del ComboBox, no cada vez que cambie
el contenido del ComboBox. Por ejemplo, si la parte desplegable de un
ComboBox contiene cinco elementos y el elemento superior está resaltado, no
ocurrirá un evento Scroll hasta que presione seis veces la flecha hacia abajo (o
una vez la tecla
AV PÁG). Después de eso, ocurrirá un
evento Scroll por cada pulsación de la tecla de flecha hacia abajo. Sin embargo,
si después presiona la tecla de flecha hacia arriba, no ocurrirá un evento
Scroll hasta que presione seis veces la tecla de flecha hacia arriba (o una vez
la tecla RE PÁG).
Después de eso, cada vez que presione la tecla de flecha hacia arriba se
producirá un evento Scroll.
Eventos:
Evento Change
Evento
LostFocus
Evento Click
Evento
OLECompleteDrag
Evento DblClick
Evento OLEDragDrop
Evento DragDrop Evento
OLEDragOver
Evento DragOver
Evento OLEGiveFeedback
Evento DropDown
Evento OLESetData
Evento GotFocus
Evento OLEStartDrag
Eventos KeyDown y KeyUp
Evento Scroll
Evento KeyPress
Métodos:
Método AddItem
Método Refresh
Método Clear (Clipboard,
ComboBox, ListBox) Método RemoveItem
Método Drag
Método SetFocus
Método Move
Método ShowWhatsThis
Método OLEDrag
Método ZOrder
Propiedades:
Propiedad Appearance
Propiedad
ListIndex
Propiedades BackColor
y ForeColor Propiedad Locked
Propiedad Container
Propiedad
MouseIcon
Propiedad DataChanged
Propiedad
MousePointer
Propiedad DataField
Propiedad
Name
Propiedad DragIcon
Propiedad
NewIndex
Propiedad DragMode
Propiedad
OLEDragMode
Propiedad Enabled
Propiedad
OLEDropMode
Propiedad Font
Propiedad
Parent
Propiedades FontBold,
FontItalic, FontStrikethru y FontUnderline
Propiedad FontName
Propiedades
SelLength, SelStart y SelText (Controles ActiveX)
Propiedad FontSize
Propiedad
Sorted
Propiedades Height y
Width
Propiedad Style
Propiedad
HelpContextID
Propiedad
TabIndex
Propiedad hWnd
Propiedad TabStop
Propiedad Index
(Control Array)
Propiedad Tag
Propiedad
IntegralHeight
Propiedad
Text
Propiedad ItemData
Propiedad
ToolTipText
Propiedades Left y Top
Propiedad
TopIndex
Propiedad List
Propiedad Visible
Propiedad ListCount
Propiedad
WhatsThisHelpID
Propiedades SelLength,
SelStart y SelText
6- List Box (lista).
Un control ListBox muestra una lista
de elementos entre los cuales el usuario puede seleccionar uno o más. Si el
número de elementos supera el número que puede mostrarse, se agregará
automáticamente una barra de desplazamiento al control ListBox.
Si no se selecciona ningún elemento, el
valor de la propiedad ListIndex será -1. El primer elemento de la lista
es ListIndex 0 y el valor de la propiedad ListCount siempre es uno
más que el mayor valor de ListIndex.
Para agregar o eliminar elementos de un
control ListBox, use el método AddItem o RemoveItem.
Establezca las propiedades List, ListCount y ListIndex para
permitir que un usuario tenga acceso a elementos del ListBox. También
puede agregar elementos a la lista mediante la propiedad List en tiempo
de diseño.
Eventos
Evento Click
Eventos MouseDown y MouseUp
Evento DblClick
Evento MouseMove
Evento DragDrop
Evento OLECompleteDrag
Evento DragOver
Evento OLEDragDrop
Evento GotFocus
Evento OLEDragOver
Evento ItemCheck
Evento OLEGiveFeedback
Eventos KeyDown y KeyUp Evento
OLESetData
Evento KeyPress
Evento OLEStartDrag
Evento LostFocus
Evento Scroll
Métodos
Método AddItem
Método Refresh
Método Clear (Clipboard,
ComboBox, ListBox) Método RemoveItem
Método Drag
Método SetFocus
Método Move
Método ShowWhatsThis
Método OLEDrag
Método ZOrder
Propiedades
Propiedad Appearance
Propiedad
MousePointer
Propiedades BackColor
y ForeColor Propiedad MultiSelect
Propiedad Columns (ListBox)
Propiedad Name
Propiedad Container
Propiedad
NewIndex
Propiedad DataChanged
Propiedad
OLEDragMode
Propiedad DataField
Propiedad
OLEDropMode
Propiedad DataSource
Propiedad
Parent
Propiedad DragIcon
Propiedad
SelCount
Propiedad DragMode
Propiedad
Selected
Propiedad Enabled
Propiedad
Sorted
Propiedad Font
Propiedad Style
Propiedades FontBold,
FontItalic, FontStrikethru y FontUnderline
Propiedad FontName
Propiedad
TabStop
Propiedad FontSize
Propiedad Tag
Propiedades Height y
Width
Propiedad Text
Propiedad
HelpContextID
Propiedad
ToolTipText
Propiedad hWnd
Propiedad TopIndex
Propiedad Index
(Control Array)
Propiedad Visible
Propiedad ItemData
Propiedad
WhatsThisHelpID
Propiedades Left y Top
Propiedad
TabIndex
Propiedad List
Propiedad
ListCount
Propiedad ListIndex
Propiedad
MouseIcon
7- Timer (cronómetro)
Un control Timer puede ejecutar
código a intervalos periódicos produciendo un evento Timer.
El control Timer, invisible para el
usuario, resulta útil para el procesamiento de fondo.
No puede establecer la propiedad Enabled
de un Timer para una selección múltiple de controles que no sean
controles Timer.
No existe ningún límite práctico en cuanto
al número de controles Timer activos que puede tener en Visual Basic 5.0
ejecutándose en Windows 95 o en Windows NT.
Eventos:
Evento Timer
Propiedades:
Propiedad Enabled
Propiedad Name
Propiedad Index
(Control Array) Propiedad Parent
Propiedad Interval
Propiedad Tag
Propiedades Left y Top
8- Shape (figura).
Shape
es un control gráfico que se muestra como un rectángulo, un cuadrado, una
elipse, un círculo, un rectángulo redondeado o un cuadrado redondeado.
Utilice controles Shape en tiempo de
diseño en lugar de o además de invocar los métodos Circle y Line
en tiempo de ejecución. Puede dibujar un control Shape en un contenedor,
pero no puede actuar como contenedor. El efecto de establecer la propiedad
BorderStyle depende del valor de la propiedad BorderWidth. Si
BorderWidth no es 1 y BorderStyle no es 0 ó 6, BorderStyle se
establece a 1.
Métodos:
Método Move
Método ZOrder
Método Refresh
Propiedades:
Propiedades BackColor
y ForeColor Propiedades Height y Width
Propiedad BackStyle
Propiedad
Index (Control Array)
Propiedad BorderColor
Propiedades
Left y Top
Propiedad BorderStyle
Propiedad
Name
Propiedad BorderWidth
Propiedad
Parent
Propiedad Container
Propiedad
Shape
Propiedad DrawMode
Propiedad Tag
Propiedad FillColor
Propiedad
Visible
Propiedad FillStyle
9- Line (línea).
Line
es un control gráfico que se muestra como una línea horizontal, vertical o
diagonal.
Puede utilizar un control Line en
tiempo de diseño para dibujar líneas en formularios. En tiempo de ejecución
puede utilizar un control Line en lugar del método Line, o además
de él. Las líneas dibujadas con el control Line permanecen en el
formulario aunque la propiedad AutoRedraw sea False. Los controles Line pueden mostrarse en formularios, en cuadros de imagen y en marcos.
No puede utilizar el método Move para mover un control Line en
tiempo de ejecución, pero sí se puede mover o cambiar de tamaño alterando sus
propiedades X1, X2, Y1 e Y2. El efecto de establecer
la propiedad BorderStyle depende del valor de la propiedad BorderWidth.
Si BorderWidth no es 1 y BorderStyle no es 0 ó 6, BorderStyle
se establecerá a 1.
Métodos:
Método Refresh
Método ZOrder
Propiedades:
Propiedad BorderColor
Propiedad Name
Propiedad BorderStyle
Propiedad Parent
Propiedad BorderWidth
Propiedad Tag
Propiedad Container
Propiedad Visible
Propiedad DrawMode
Propiedades X1,
Y1, X2 y Y2
Propiedad Index
(Control Array)
10- Image (imagen)
Utilice el control Image para
mostrar un gráfico. Un control Image puede mostrar un gráfico desde un
mapa de bits, un icono o un metarchivo, así como un metarchivo mejorado, un
archivo JPEG o archivos GIF.
El control Image utiliza menos
recursos del sistema y actualiza con más rapidez que un control PictureBox,
pero sólo admite un subconjunto de las propiedades, los eventos y los métodos de PictureBox. Use la propiedad Stretch para determinar si el gráfico
se escala para ajustarse al control o viceversa. Aunque puede colocar un control Image dentro de un contenedor, un control Image no puede actuar
como contenedor.
Eventos:
Evento Click
Evento
OLECompleteDrag
Evento DblClick
Evento
OLEDragDrop
Evento DragDrop
Evento OLEDragOver
Evento DragOver
Evento
OLEGiveFeedback
Eventos MouseDown y
MouseUp Evento OLESetData
Evento MouseMove
Evento OLEStartDrag
Métodos:
Método Drag
Método Refresh
Método Move
Método ShowWhatsThis
Método OLEDrag Método ZOrder
Propiedades:
Propiedad Appearance
Propiedad MouseIcon
Propiedad BorderStyle
Propiedad MousePointer
Propiedad Container
Propiedad Name
Propiedad DataChanged
Propiedad OLEDragMode
Propiedad DataField
Propiedad OLEDropMode
Propiedad DataSource
Propiedad Parent
Propiedad DragIcon
Propiedad Picture
Propiedad DragMode
Propiedad Stretch
Propiedad Enabled
Propiedad Tag
Propiedades Height y
Width Propiedad ToolTipText
Propiedad Index
(Control Array) Propiedad Visible
Propiedades Left y Top
Propiedad
WhatsThisHelpID
11- Data (acceso a bases de datos)
Proporciona acceso a datos almacenados en
bases de datos mediante uno de los tres tipos de objetos Recordset. El
control Data le permite desplazarse de un registro a otro, así como
presentar y manipular datos de los registros en controles enlazados. Sin un
control Data los controles enlazados a datos (vinculados) de un
formulario no pueden tener acceso a los datos automáticamente.
Puede realizar la mayoría de las
operaciones de acceso a datos utilizando el control Data sin escribir
código. Los controles enlazados a datos vinculados a un control Data
presentan automáticamente los datos de uno o varios campos del registro actual
o, en algunos casos, de un conjunto de registros situado a ambos lados del
registro actual. El control Data realiza todas sus operaciones sobre el
registro actual.
Si el control Data recibe
instrucciones para desplazarse a un registro diferente, todos los controles
enlazados pasan automáticamente los posibles cambios al control Data para
que los guarde en la base de datos. Después, el control Data se desplaza
al registro solicitado y pasa los datos del registro actual a los controles
enlazados, en los que se presentan.
El control Data administra
automáticamente una serie de contingencias entre las que se incluyen los
conjuntos de registros vacíos, la inserción de nuevos registros, la modificación
y actualización de registros existentes, y la administración de ciertos tipos de
errores. Sin embargo, en aplicaciones más sofisticadas es necesario interceptar
algunas condiciones de error que el control Data no puede administrar.
Por ejemplo, si el motor de base de datos Microsoft Jet tiene un problema al
tener acceso al archivo de base de datos, no tiene el permiso adecuado o no
puede ejecutar la consulta, se producirá un error interceptable. Si el error se
produce antes de que se inicien los procedimientos de la aplicación o se trata
de errores internos, se desencadenará el evento Error.
12- Controles enlazados
Los controles DBList, DBCombo, DBGrid y MSFlexGrid son capaces de administrar conjuntos de
registros cuando están enlazados a un control Data. Todos estos controles
permiten presentar o manipular varios registros a la vez.
Los controles incorporados Picture,
Label, TextBox, CheckBox, Image, OLE, ListBox
y ComboBox también son controles enlazados a datos y se pueden enlazar a
un único campo de un Recordset administrado por un control Data.
En las ediciones Profesional y Empresarial se encuentran disponibles otros
controles enlazados a datos como MaskedEdit y RichTextBox; otros
proveedores también ofrecen controles adicionales.
12.1 Funcionamiento
Una vez iniciada la aplicación, Visual
Basic utiliza las propiedades del control Data para abrir la base de
datos seleccionada, crear un objeto Database y crear un objeto
Recordset. Las propiedades Database y Recordset del control
Data hacen referencia a los objetos Database y Recordset
recién creados, que se pueden manipular de forma independiente del control Data,
con o sin controles enlazados. El control Data se inicializa antes
del evento Form_Load inicial del formulario en el que se encuentra. Si se
producen errores durante esta fase de inicialización, se produce un error no
interceptable.
Cuando Visual Basic utiliza el motor de
base de datos Jet para crear un Recordset, no se pueden producir otras
operaciones o eventos de Visual Basic hasta que se termine la operación. Sin
embargo, otras aplicaciones basadas en Windows pueden seguir en ejecución
mientras se está creando el Recordset. Si el usuario presiona CTRL+INTER
mientras el motor Jet está generando un Recordset, la operación termina,
se produce un error interceptable y la propiedad Recordset del control
Data se establece a Nothing. En tiempo de diseño, la segunda vez que se
presiona
CTRL+INTER hace que Visual Basic
presente la ventana
Depuración.
Puede manipular el control Data con
el mouse (ratón), desplazándose de un registro a otro, o al principio o
al final del Recordset. Las propiedades EOFAction y BOFAction
determinan lo que ocurre cuando el usuario se desplaza al principio o al final
de un Recordset con el mouse. No puede establecer el enfoque en un
control Data.
12.2 Validación
El evento Validate y la propiedad
DataChanged se utilizan para realizar comprobaciones de última hora sobre
los registros que se van a escribir en la base de datos.
12.3 Objetos de acceso a datos
En los procedimientos puede utilizar los
objetos de acceso a datos Database y Recordset creados por el
control Data. Cada objeto Database y Recordset tiene sus
propias propiedades y métodos, y puede escribir procedimientos que utilicen
dichas propiedades y métodos para manipular sus datos.
Por ejemplo, el método MoveNext de
un objeto Recordset desplaza el registro actual al siguiente registro
dentro del Recordset. Para invocar este método, podría utilizar el código
siguiente:
Data1.Recordset.MoveNext
El control Data puede tener acceso a
cualquiera de los tres tipos de objetos Recordset del motor Jet versión
3.0. Si no selecciona el tipo de conjunto de registros, se crea un Recordset
de tipo dynaset.
En muchos casos, el tipo predeterminado y
la configuración del objeto Recordset creado son muy ineficientes. Es
decir, puede que no necesite un cursor actualizable totalmente desplazable de
conjunto de claves para tener acceso a los datos. Por ejemplo, un Recordset
de tipo snapshot, de sólo lectura y unidireccional se crearía con más rapidez
que el cursor predeterminado. Asegúrese de elegir el tipo más eficiente, así
como las propiedades Exclusive, Options y ReadOnly
adecuadas a su situación.
Para seleccionar un tipo de Recordset
específico, establezca la propiedad RecordsetType del control Data
a:
RecordsetType Valor
Constante
Table
0
vbRSTypeTable
Dynaset
1
vbRSTypeDynaset (Predeterminado)
Snapshot
2
vbRSTypeSnapshot
12.4 Ediciones Profesional y Empresarial
En lo que concierne al acceso a datos, la
principal diferencia entre las ediciones de Aprendizaje, Profesional y
Empresarial de Visual Basic es la capacidad de crear nuevos objetos de acceso a
datos. En la Edición estándar no puede declarar (con la palabra clave Dim)
variables como objetos de acceso a datos dentro del código. Esto significa que
sólo el control Data puede crear objetos Database y Recordset.
En las ediciones Profesional y Empresarial
de Visual Basic versión 5.0 puede crear un objeto Recordset y asignarlo a
la propiedad Recordset de un control Data. Cualquier control
enlazado que esté conectado al control Data permitirá manipular los
registros del Recordset que ha creado. Asegúrese de que las propiedades DataField de los controles enlazados estén establecidas a nombres de
campo válidos dentro del nuevo Recordset.
12.5 Consultas almacenadas
Otra opción importante al utilizar el
control Data es la posibilidad de ejecutar consultas almacenadas. Si
antes ha creado un objeto QueryDef, el control Data puede
ejecutarlo y crear un Recordset mediante las propiedades SQL,
Connect y otras del objeto QueryDef. Para ejecutar un QueryDef,
establezca la propiedad RecordSource del control Data al nombre
del QueryDef y utilice el método Refresh.
Si el QueryDef almacenado contiene
parámetros, tiene que crear el Recordset y pasarlo al control Data.
12.6 Tratamiento de BOF/EOF
El control Data también puede
administrar lo que ocurre cuando se encuentre con un Recordset sin
registros. Modificando la propiedad EOFAction puede programar el control Data para que pase al modo AddNew de forma automática.
Puede programar el control Data para
que se ajuste automáticamente a la parte superior o inferior del formulario
primario utilizando la propiedad Align. En cualquiera de los casos, el
control Data cambia de tamaño horizontalmente para llenar todo el ancho
de su formulario primario, siempre que éste cambie de tamaño.
Eventos:
Evento DragDrop
Evento OLEDragOver
Evento DragOver
Evento OLEGiveFeedback
Evento Error
Evento OLESetData
Eventos MouseDown, MouseUp Evento OLEStartDrag
Evento MouseMove
Evento Reposition
Evento OLECompleteDrag
Evento Resize
Evento OLEDragDrop
Evento Validate
Métodos
Método Drag
Método
ShowWhatsThis
Método Move
Método
UpdateControls
Método OLEDrag Método
UpdateRecord
Método Refresh
Método ZOrder
Propiedades
Propiedad Align
Propiedad FontSize
Propiedad Appearance
Propiedades
Height, Width
Propiedades BackColor,
ForeColor Propiedad Index (Matriz de
controles)
Propiedad BOFAction, EOFAction Propiedades
Left, Top
Propiedad Caption
Propiedad
MouseIcon
Propiedad Connect
Propiedad
MousePointer
Propiedad Database
Propiedad Name
Propiedad DatabaseName
Propiedad
OLEDropMode
Propiedad
DefaultCursorType
Propiedad Options
Propiedad DefaultType
Propiedad
Parent
Propiedad DragIcon
Propiedad
ReadOnly (Aceso de datos)
Propiedad DragMode
Propiedad
Recordset
Propiedad EditMode
Propiedad
RecordsetType
Propiedad Enabled
Propiedad
RecordSource
Propiedad Exclusive
Propiedad Tag
Propiedad Font
Propiedad ToolTipText
Propiedades FontBold,
FontItalic, FontStrikethru, FontUnderline
Propiedad FontName
Propiedad
WhatsThisHelpID
Propiedad Visible |