Capitulo 2 Visual Basic
Capitulo 2 Visual Basic
2
OBJETOS VISUAL BASIC PROPIEDADES, PROCEDIMIENTOS Y METODOS
Vamos a ver en este capítulo como podemos realizar una aplicación en Visual Basic.
Comencemos por abajo.
Una aplicación VB es una aplicación que, generalmente, tiene una interface gráfica. Es decir, es
una aplicación de las típicas de Windows. Y esa interface gráfica está formada por un formulario y
dentro de él, controles. Tanto al formulario como a los controles les denominamos genéricamente
Objetos. Hay objetos VB que no los podemos ver en la interface gráfica. No podemos verlos
porque pese a que son objetos VB, no tienen ninguna representación en la ventana. Son por
ejemplo, los objetos de acceso a datos que veremos profusamente más adelante.
Todos los objetos de Visual Basic tienen Propiedades. (Por ejemplo, el nombre de ese objeto es
una de sus propiedades). Los objetos que tienen parte gráfica tienen además Eventos. Y muchos
de ellos tienen también Métodos
Las propiedades son aquellas características de un objeto que lo define "físicamente", bien por su
forma o color, por su contenido, por la forma en la que va a trabajar… Las propiedades pueden
modificarse cuando estamos diseñando la interface gráfica, mediante lo que llamamos caja de
propiedades, o durante la ejecución del programa. En este caso hay que hacerlo con código
escrito en el propio programa. Veamos ya dos definiciones que se repetirán profusamente a lo
largo del curso
- Tiempo de diseño. Es cuando realizamos una operación durante el diseño. Por ejemplo,
podemos cambiar el color de un control durante el diseño de la aplicación, accediendo a su
propiedad BackColor en la caja de propiedades.
- Tiempo de ejecución. Es cuando esa operación se realiza durante la ejecución del
programa. Si tenemos una línea de código como esta
MiControl.BackColor =RGB(255,0,0)
al ejecutarse esa línea, se cambiará el color del control de nombre MiControl. Hemos cambiado la
propiedad BackColor de ese control en tiempo de ejecución.
Las propiedades pueden ser de lectura y escritura, (se puede cambiar y se puede leer el valor de
la propiedad), sólo de lectura (solamente se puede leer el valor de la propiedad) ó solo de escritura
(hay muy pocas de este tipo). Puede que una propiedad, que es de lectura y escritura en tiempo
de diseño, sea sólo de lectura en tiempo de ejecución (esto es lo que le pasa por ejemplo, a la
propiedad Name - Nombre)
Un evento es todo aquello que le puede ocurrir a un objeto con parte gráfica (Control o
Formulario) Por ejemplo, es un evento el hecho de hacer click sobre ese control, el hecho de
pasar el ratón por encima de él, el hecho de que un control cambie de tamaño…. Los controles
tienen muchos eventos, unos de ellos comunes a casi todos los controles (Evento click, por
ejemplo) y otros exclusivos de un determinado control (El evento Timer solamente lo tiene el
control Timer) Puede ver los eventos de un control haciendo doble click sobre ese control en
tiempo de diseño. Le aparecerá la ventana de código.
La ventana de código es el lugar donde deberá escribir el código de su aplicación. Puede ver que
existen en ella dos listas desplegables, una a la izquierda (sin desplegar) donde se ve el nombre
del control del cual estamos visualizando el código (en este caso Command1) y otra a la derecha,
donde se despliegan todos los eventos que tiene ese control. Haciendo click en la línea de uno de
esos eventos, aparecerá la ventana de código dedicada a ese evento.
Nota. Fíjese en la parte inferior izquierda de la ventana de código. Hay dos botones, uno que
permite visualizar el código correspondiente a un solo evento, (el de más a la izquierda) y otro
que permiten ver en la misma ventana el código de todos los eventos. Cada programador tiene
su costumbre para ver uno o todos. La práctica le dirá lo que es más práctico para Vd.
Estos procedimientos forman parte del programa. Podría hacerse una aplicación que no tuviese
mas código que el introducido en los procedimientos, y muchas veces esa es la realidad.
Un procedimiento puede pasar parámetros. Se dice que pasa parámetros cuando el sistema
aporta datos automáticamente al procedimiento. Por ejemplo, el procedimiento MouseUp, que se
ejecuta cuando levantamos el botón del ratón (también existe el evento MouseDown), pasa los
siguientes parámetros: Número del botón que se ha pulsado, (1=Izdo, 2=Dcho, 3=Central), si está
pulsada la tecla mayúsculas (Shift, 1 si está pulsada, 0 si no está pulsada) y los valores X e Y de la
posición del cursor del ratón. Podemos ver los parámetros que pasa en la propia definición del
End Sub
Observe que los parámetros están entre paréntesis, y que queda definido el tipo de variable que
es cada uno de ellos. Podemos usar ese valor dentro del código del procedimiento como un dato
más.
Un Método es una operación que la realiza Visual Basic sin necesidad de escribir código para
realizarla. Por ejemplo, si queremos dibujar una línea en un formulario o en la impresora
utilizaremos el método Line. Si queremos dibujar una circunferencia usaremos el método Circle. Si
queremos escribir texto, utilizaremos el método Print. No necesitamos decirle como lo tiene que
haver, puesto que eso ya lo sabe hacer VB sin necesidad de que se lo expliquemos. A los métodos
les tenemos que pasar datos. A eso le llamamos también pasarle parámetros. Los métodos solo
permiten introducir los parámetros que necesita el método para ejecutarse. (En el caso de una
línea, el punto inicial y el final, en el caso del circulo, el radio y las coordenadas del centro.
Pueden pedir parámetros optativos, como el puede ser el color de la línea o circulo.
Espero que le quede claro cada una de estas definiciones. Tendrá tiempo suficiente a lo largo del
curso para verlas, y dentro de muy poco tiempo le serán muy familiares estos conceptos.
EL FORMULARIO
El primer objeto Visual Basic con que nos encontramos es el FORMULARIO. De hecho, cada vez
que iniciamos Visual Basic (VB) nos presenta en pantalla un nuevo formulario, que tiene por
defecto el nombre de Form1
Fig. 2.3 Un formulario que parece un equipo de radio (Programa realizado por el autor)
Ejemplo de un formulario para una aplicación industrial. Este formulario reproduce el panel de
control de un transmisor - receptor de radio. En este caso, parece que el nombre de ventana le
viene mejor que el de formulario. Observe que dentro del formulario existen gran cantidad de
objetos. Botones, que hacen la misma función que el botón real en el equipo de radio, y un par de
displays, que muestran un texto, en este caso las frecuencias de transmisión y recepción.
Vamos a ver las propiedades del formulario, pero solo veremos las que son específicas para un
formulario. El resto las podrá ver al final del capítulo. Aquí haremos referencia a esas propiedades
con un asterisco (*) que significa que esa propiedad no tiene una notación especial para los
formularios. Seguiremos esta norma con todos los controles.
PROPIEDADES.
Name Nombre
Caption Título
Es el texto que aparecerá en la barra de Título cada vez que aparezca en pantalla este formulario.
No tiene otra función dentro del programa. El programa no accede a este formulario por el título,
sino por el nombre. Puede cambiarse en tiempo de ejecución.
Control Box Menú de Control en la parte sup. Izda. Valor por defecto : True
Propiedad Booleana que admite los valores de true (verdadero) o False (Falso). Si esta propiedad
es True, aparecerá en la esquina superior izquierda el icono (el "menos" en W-3.11) para
desplegar el menú de control de este formulario. Si esta propiedad se pone como False, no
aparece dicho icono y por tanto no se puede desplegar dicho menú.
MinButton
MaxButton Valor por defecto: True
Botones de minimizar y maximizar este formulario. Son igualmente propiedades booleanas, que
admiten el valor True o False. Si están en true, aparecerá la flecha correspondiente. Si están en
False, no aparecerá dicha flecha. Deben configurarse de una u otra forma, dependiendo si se
quiere minimizar / maximizar este formulario durante la ejecución.
Nota. En los formularios MDI child, es necesario poner a true las propiedades ControlBox,
MinButton y MaxButton para poder maximizar el formulario hijo. De no ponerlas a true, sí se
pretende maximizar el formulario hijo, (Propiedad WindowState=2) el formulario no aparece.
Define el tipo de borde que tendrá el formulario durante la ejecución. No se puede cambiar en
tiempo de ejecución. Admite los siguientes valores:
1 - Fixed Single
El formulario tendrá un borde fino, y no podrá cambiarse su tamaño
durante el tiempo de ejecución. Con este valor, el formulario puede tener
un menú de control, barra de título y botones de maximizar y minimizar.
Solo podrá cambiarse de tamaño utilizando estos botones.
2-Sizable
3 - Fixed Dialog
El formulario tendrá borde grueso, y no se podrá redimensionar durante la
ejecución. No puede tener los botones de maximizar ni minimizar.
4 - Fixed ToolWindow
En las versiones de 16 bits de Windows y Windows NT 3.51 y anteriores
se comporta como Fixed Single. No puede cambiar de tamaño. En
Windows 95 muestra el botón Cerrar, y el texto de la barra de titulo
aparece con un tamaño de fuente reducido. El formulario no aparece en la
barra de tareas de W95.
5 - Sizable ToolWindow
En las versiones de 16 bits se comporta como Sizable. En W95 muestra el
botón Cerrar y el texto de la barra de titulo aparece con un tamaño de
fuente reducido. El formulario no aparece en la barra de tareas de W95.
Admite los valores 0 (=Flat, plano) y 1 (=3D) Si tiene el valor 1 (3D), el formulario aparecerá con
cierto efecto tridimensional, y los controles que le introduzcamos a este formulario aparecerán
como esculpidos dentro de él. Con valor 0 (Flat) en esta propiedad, el formulario aparecerá
durante la ejecución como una superficie plana. El color de fondo se ve afectado al cambiar esta
propiedad. Si se cambia a 3D, el fondo (Backcolor) toma el color definido en Windows en el Panel
de Control. Si se cambia a Flat, toma el color blanco
Propiedad Booleana. Esta propiedad, estando en True, permite actualizar el contenido del
formulario y de sus controles incluso cuando no están visibles. Imaginemos que en este formulario
existe un texto, que se haya cambiado por programa mientras este formulario no estaba visible. Si
esta propiedad Autoredraw está en False, al hacer visible este formulario, aparecerá sin reflejar
ese cambio. Si esta propiedad está en True, aparecerá actualizado.
Establece el color del fondo del formulario. Puede cambiarse en tiempo de ejecución.
Propiedad Booleana. Establece si un evento Paint vuelve a dibujar el objeto entero (True) o si
solamente dibujan las partes que han sufrido cambios (False)
DrawMode
Enabled (*)
Establece el color del primer plano del formulario. Es el color que tendrán las letras si escribimos
en él, o los dibujos, si lo que hacemos es dibujar. En tiempo de diseño, determina el color de la
rejilla,.
Especifica el tipo y tamaño de la letra que se usará en el formulario al utilizar el método Print. Al
seleccionar esta propiedad en la ventana de propiedades, aparece un cuadro de dialogo donde se
eligen ambos parámetros.
Cuando introduzca nuevos controles en el Formulario, la propiedad Font de estos controles tomará
el valor que tenga esta propiedad en el Formulario. Puede servirle este pequeño truco para utilizar
en todos los controles una determinada fuente sin tener que teclearla para cada control.
Establece si el texto o gráfico de fondo del formulario se muestra (True) o no se muestra entre los
caracteres de texto escritos en el propio formulario.
Icon Icono
Esta propiedad define el icono que va a representar a este formulario cuando esté minimizado. Si
el formulario es el formulario padre o formulario de inicio de una aplicación, este icono es el que
toma el Asistente de Instalación para colocarlo como icono de apertura del programa en el grupo
de programas Windows correspondiente. Como valor de esta propiedad se le puede asignar
directamente el icono o el nombre de un archivo (con su path correspondiente) que lo contiene,
haciéndolo directamente sobre la caja de propiedades.
Propiedad Booleana. Cuando un formulario tiene dentro de sí varios controles, uno de ellos es el
que está activo. En estas condiciones, si se pulsa una tecla, esa pulsación la recibe en primer
Indica la posición del borde izquierdo del formulario respecto a la parte izquierda de la pantalla.
(Lo verá mas adelante, la pantalla será para VB el objeto Screen). Normalmente no se introduce
como valor numérico, sino que lo toma automáticamente de la posición que tenga el formulario en
el tiempo de diseño. Puede cambiarse en tiempo de ejecución, para mover el formulario.
Permite que una aplicación destino inicie una conversación DDE con el formulario (origen de
datos). Puede tomar los siguiente valores:
LinkTopic
Establece el tema al que este formulario va a responder a una conversación DDE, cuando
funciona como origen. Es por este tema por el que se debe llamar a este formulario cuando actúa
de origen en una conversación DDE
Establece que este formulario es un formulario Hijo dentro de un formulario MDI. No se puede
cambiar en tiempo de ejecución. Es una propiedad Booleana
MouseIcon (*)
Picture Gráfico
Mediante esta propiedad podemos poner un gráfico como fondo del formulario. El gráfico puede
ser un bit-map o un fichero .ICO
Indican la unidad de medida de dimensión de altura y anchura del Formulario. ScaleMode indica
en qué unidades de medida se van a medir esas dimensiones. Acepta Twips (1), Point(2), Pixel
(3), Character (4), Pulgadas (Inch) (5), Milímetros (6), Centímetros (7). Si colocamos la propiedad
ScaleMode en cualquiera de estos valores, las propiedades ScaleHeight y ScaleWidth nos
vendrán dadas automáticamente dependiendo del ancho del Formulario, y no se extrañe si
encuentra para estas propiedades valores tan peregrinos como 4815 y 7423. Al haber elegido la
unidad de medida, los valores de ancho (ScaleWidth) y alto (ScaleHeight) serán los que tengan
que ser, medidos en la unidad que hemos elegido. Podemos elegir una cifra para el ancho y el alto
del Formulario de forma que podamos controlar mejor las distintas posiciones que van a ocupar en
Estas unidades de medida afectarán a los controles que metamos en este Formulario. Se medirán
en su ancho y alto con la unidad de medida definida para el ancho y alto del Formulario.
Lógicamente también afectará a las propiedades Left y Top de los controles, pero estas
propiedades se verán afectadas además por las propiedades ScaleLeft y ScaleTop del Formulario
que se verán a continuación.
ScaleLeft, ScaleTop
Estas propiedades, medidas en la unidad de medida elegida para el ancho y alto mediante las
propiedades ScaleMode, ScaleWidth y ScaleHeight anteriores, expresan las coordenadas
iniciales de la parte izquierda y de la parte superior respectivamente del Formulario. Estas
propiedades no afectan a la posición del Formulario en la pantalla (Si está maximizado seguirá
ocupando toda la pantalla, si está en “Normal” ocupará el mismo sitio que se dio en tiempo de
diseño). Supongamos que se le asigna a un Formulario, las propiedades ScaleWidth = 400, y
ScaleHeight = 300. Si colocamos un control justamente en el centro del Formulario tendrá sus
propiedades Top =150 y Left=200. Si ponemos ahora las propiedades del Formulario ScaleLeft a
30 y ScaleTop a 10, ese control, para seguir en el centro del Formulario deberá tener sus
propiedades Top a 160 (150 + 10) y Left a 230 (200 + 30).
Recuerde que las medidas de un formulario crecen, desde la esquina superior izquierda, según
avanzamos hacia abajo y hacia la derecha.
Como aclaración de las relaciones entre distintas unidades de medida, puede ver en la siguiente
table la correspondencia entre cada una de ellas y la unidad imaginaria Twip.
1 Point=20 Twips ; 1Pixel=15 Twips : 1 Charecter=240 Twips ; 1 Inch (pulgada) =1440 Twips
1mm=56,52 Twips 1 cm=566 Twips
Tag (*)
Esta propiedad establece la posición del borde superior del formulario respecto a la parte superior
de la pantalla (Objeto Screen). Normalmente no se introduce como valor numérico sino que lo
toma automáticamente de la posición que tenga el Formulario durante el tiempo de diseño Este
valor puede cambiarse durante la ejecución para, conjuntamente con Left, variar la posición del
Formulario. Los valores de Top y Left definen la esquina superior izquierda del Formulario.
WindowState
Este evento ocurre cuando el formulario toma el foco. Cosa un poco difícil, ya que para que el
formulario tome el foco debe ocurrir, o que no tenga ningún control capaz de tomar el foco, o que
todos los controles existentes en el formulario y que puedan tomar el foco, estén desactivados. No
se suele usar este procedimiento.
Se produce al cargar por primera vez el formulario. Esto significa que si en una aplicación
cargamos ese formulario una vez (la primera) se realiza este evento, pero si descargamos el
formulario (con Unload Formxx) y luego lo volvemos a cargar (con Formxx.Show), esta segunda
vez (y sucesivas) no se produce este evento
Estos tres procedimientos son excluyentes y tienen la jerarquía con el orden siguiente: KeyDown,
KeyPress y KeyUp. Si el procedimiento KeyDown tiene código que pueda realizar una operación,
no se ejecutará el procedimiento KeyPress ni el KeyUp. Si es el procedimiento KeyPress quien
tiene el código que ejecuta una operación, no se ejecutará el KeyUp. Para que realice esta
exclusión es necesario que el código pueda realizar alguna operación.
KeyCode es el código ASCII de la tecla pulsada. KeyAscii es el código ASCII de la tecla pulsada.
La diferencia entre KeyCode y KeyAscii es que el primero se refiere a las teclas del teclado (Todas
las letras y números, teclado numérico, Alt, F1 a F12, etc.) mientras que KeyAscii solamente tiene
valor cuando se pulsa una tecla de letra o número. Puede observar que el KeyCode de un número
tecleado en el teclado numérico es distinto del KeyCode de ese mismo número pulsado en el
teclado alfanumérico. No se confunda con el hecho de que el KeyCode de algunas teclas coincida
con el KeyAscii. No es lo mismo.
Shift indica si está pulsada la tecla “Mayúsculas”. Contiene un 1 si está pulsada, 0 si no lo está.
Estos tres procedimientos ocurren cuando el formulario forma parte de un enlace DDE. Vea el
capítulo del DDE para mas detalles.
Cancel es un parámetro que debemos introducir para abortar la descarga del formulario. Si se
pone a un valor distinto de 0, se detiene la descarga.
Constante Valor
vbFormControlMenu 0 El usuario eligió el comando Cerrar del menú Control del
formulario o hizo click en el X del mismo.
vbFormCode 1 Se invocó la instrucción Unload desde el código.
vbAppWindows 2 La sesión actual del entorno operativo Microsoft Windows
está finalizando.
vbAppTaskManager 3 El Administrador de tareas de Microsoft Windows está cerrando la
aplicación.
vbFormMDIForm 4 Un formulario MDI hijo se está cerrando porque el
formulario MDI padre también se está cerrando.
Se ejecuta cuando cambia el tamaño del Formulario, bien porque le cambia con las flechas del
ratón arrastrando uno de sus bordes, bien porque lo maximizamos, ponemos a tamaño intermedio
o minimizamos. Puede usar este evento para redistribuir o cambiar el tamaño de los controles. No
pasa parámetros.
Evento Terminate
Este evento no se produce si sale de la aplicación con la instrucción End. Solamente si lo hace
mediante Unload (Unload Me, p.e.) o con el comando Cerrar o el X del formulario. Me permito
recomendarle que No termine sus aplicaciones mediante End. No podrá usar los eventos
QueryUnload, Unload ni Terminate.
Este evento se produce en el momento en el que se descarga el formulario. Pasa como parámetro
Cancel, al igual que lo hace QueryUnload. Es la última oportunidad de cancelar la descarga del
formulario, haciendo Cancel = True o Cancel = cualquier valor distinto de 0.
Existen varios eventos relacionados con el OLE de Windows. Se estudiarán cuando se estudie el
OLE. De momento se enumeran con los parámetros que pasan.
Para colocar un control en un Formulario, basta con “tomarlo” de la caja de herramientas existente
en la parte izquierda de la pantalla de VB y llevarlo al Formulario. Si no existiese el control
deseado en la caja de herramientas, deberemos ir a “cogerlo” a Proyecto | Componentes de la
barra de menú de VB. Se elige el nuevo control, marcando la caja de opción a la izquierda de su
nombre, y haciendo click en ACEPTAR. Este control ya pasa a la caja de herramientas.
No se deben introducir mas controles de los necesarios. Sobre todo, cuando vaya a compilar el
proyecto. Si tiene metido en la caja de herramientas un control que no necesita, lo introducirá en
los discos de distribución igual que si lo necesitara.
El botón de comando puede usarse para la entrada de datos con el ratón, o para validar cualquier
operación. El tamaño puede cambiarse a voluntad, pero la forma siempre es rectangular. En la
figura anterior vemos dos botones de comando, uno de ellos (el Command2) marcado con unos
puntos en su contorno. Estos puntos nos permiten variar su tamaño en tiempo de diseño. También
puede cambiarse su tamaño y posición en tiempo de ejecución.
(Las propiedades marcadas con (*) no varían de la descripción general, hecha al final del capítulo)
PROPIEDADES
Name Nombre(*)
Cancel
Establece un valor que indica si un botón de comando es el botón Cancelar de un formulario. Es
una propiedad booleana, y admite los valores True o False. Puede utilizar la propiedad Cancel
para dar al usuario la opción de cancelar los cambios que no se han hecho efectivos y devolver el
formulario a su estado anterior. En un formulario sólo puede haber un botón de comando con la
propiedad Cancel = True.
Causes Validation
Esta propiedad habilita o deshabilita la ejecución del evento Validate del control que tenía el foco
antes de cambiar el foco a este control. El evento Validate de un control se ejecuta
inmediatamente antes de que pierda el foco. (Se dice que un control tiene el foco cuando es ese
control el que está activado). Al hacer click sobre el botón de comando, siempre habrá algún
control que pierda el foco para que lo tome el botón de comando. Si el botón de comando tiene la
propiedad Causes Validation a True, se ejecutará el evento validate de ese control que acaba de
perder el foco. Si está a false, no se ejecutará. Observe que esta propiedad afecta a un control
diferente del que ostenta la propiedad.
Default
Establece un valor que determina el control CommandButton que es el botón de comando
predeterminado de un formulario. Sólo un botón de comando de un formulario puede ser el botón
de comando predeterminado. Cuando Default se define a True para un botón de comando, se
define automáticamente a False para el resto de los botones de comando del formulario. Cuando
MaskColor Establece cual es el color de la imagen del botón que actuará como
máscara para producir zonas transparentes. Para ello, la propiedad UseMaskColor
debe estar a true. (¡)
Picture. Solamente está disponible cuando la propiedad Style está puesta a Graphical.
Pone un icono sobre el botón.
Style Define el estilo del botón, aceptando dos valores: Graphycal y Standard. Poniendo
esta propiedad a Graphycal podemos cambiar el color del botón 8con la propiedad Backcolor) e
incluso introducir un fráfico (en la propiedad Picture, DownPicture o DisabledPicture.
Una etiqueta es un control que nos permite presentar un texto. La etiqueta debe usarse en
aquellos casos en los que exista una información estática o dinámica que no deba ser cambiada
por el operador.
Puede adoptar estas formas: con borde tridimensional, borde plano o sin borde, y el texto
justificado a la izquierda, a la derecha o centrado.
Se ha incluido la trama para poder observar los límites de la etiqueta sin borde.
PROPIEDADES
Alignment Justificación
Sin borde o con borde. En caso de haber elegido en la propiedad Appearance el modo
tridimensional, y eligiendo con borde en esta propiedad, el aspecto adopta una forma como
incrustada en el formulario.
Estas propiedades establecen la forma en que debe llevarse a cabo una conexión DDE con otra
aplicación. Se verán con mas detalle al estudiar los enlaces DDE
UseMneumonic
Es una propiedad Booleana. Devuelve o establece un valor que indica si al incluir el signo (&) en
el texto de la propiedad Caption del control Label se define una tecla de acceso.
True (Predeterminado) Los caracteres (&) que aparezcan en el texto de la propiedad Caption
definen al carácter siguiente como tecla de acceso. El signo (&) no aparece en el Caption del
control Label.
False Los caracteres (&) que aparezcan en el texto de la propiedad Caption aparecen como tales
en el Caption del control Label.
En tiempo de ejecución, al presionar ALT+ la tecla de acceso definida en la propiedad Caption del
control Label, el enfoque se desplaza al control siguiente al control Label en el orden de
tabulación.
WordWrap
Devuelve o establece un valor que indica si un control Label con el valor True en su propiedad
AutoSize se expande vertical u horizontalmente para adaptarse al texto especificado en su
propiedad Caption. Es una propiedad Booleana.
True El control Label se expande o contrae horizontal y verticalmente para adaptarse al texto y al
tamaño de la fuente. Contempla para la expansión horizontal la colocación de los espacios del
texto.
False (Predeterminado) El texto no se ajusta a la siguiente línea; el control Label se expande o
contrae horizontalmente para adaptarse a la longitud del texto y verticalmente para adaptarse al
tamaño de la fuente y al número de líneas.
Las cajas de texto son los controles en los que Visual Basic presenta o introduce textos. Es por
tanto un control bidireccional. Normalmente se usan para introdución de textos, o para la
presentación de aquellos que el operador pueda cambiar. Para cambiar o escribir un texto en una
caja de texto, basta con conseguir que esa caja de texto tenga el foco y teclear el texto en el
teclado. Esto se puede lograr, bien haciendo click con el ratón en esa caja de texto, bien con la
tecla TAB, bien por programa.
La caja de texto no se debe usar nunca para presentar textos que el operador de la aplicación no
deba cambiar. Úsese para ello la etiqueta, control no bidireccional, que además tiene la ventaja de
ocupar menos memoria de programa.
Las cajas de texto pueden tener una o varias líneas, según esté la propiedad Multiline. La
capacidad máxima de una caja de textos es de 64 Kbytes.
PROPIEDADES
Alignment Justificación
Sin borde o con borde. En caso de haber elegido en la propiedad Appearance el modo
tridimensional, y eligiendo con borde en esta propiedad, el aspecto adopta una forma como
incrustada en el formulario.
Enabled Habilitado
Propiedad Booleana que habilita o deshabilita la etiqueta Cuando está deshabilitado (Enabled =
False), no tienen efecto los eventos que se produzcan sobre el TextBox. No se puede escribir el
él ni pasarle el foco, pero sí se le puede cambiar el texto mediante el programa. Puede ser una
buena alternativa para impedir que el usuario pueda cambiar un determinado texto. Esta
propiedad puede variarse en tiempo de ejecución.
Locked
Establece si el texto se puede editar, es decir, cambiar. Cuando se pone esta propiedad a True, el
texto existente en la caja puede resaltarse con el ratón, e incluso copiarlo al portapapeles, pero no
puede variarse tecleando un nuevo texto. Se puede cambiar por programa, cambiando la
propiedad Text.
Si está en False, puede cambiarse el texto mediante teclado.
MaxLenght
Indica, si se establece, la longitud máxima del texto. Si no se establece o si se pone valor 0,
permite cualquier longitud de texto.
Name Nombre(*)
PasswordChar
En ocasiones, es conveniente que no se pueda leer lo que se escribe en la caja de texto, caso por
ejemplo de la entrada de un password o palabra de paso. Esta propiedad nos permite indicar un
carácter que sustituye a cualquier carácter que tenga la caja de texto. (Típicos el * o ?). El texto
que tenga en la propiedad Text no cambia por el hecho de presentar en pantalla un carácter
distinto. Esta propiedad puede cambiarse en tiempo de ejecución. Para quitar el PasswordChar
basta con forzarlo al carácter nulo : Text1.PasswordChar = “”
0 - No salen barras
1 - Barras de desplazamiento horizontal
2 - Barras de desplazamiento vertical
3 - Ambas barras.
Text Texto
La caja de texto no tiene la propiedad Caption. Su equivalente es la propiedad Text que es el texto
que tiene en su interior.
FRAME RECUADRO
Un control Frame proporciona un agrupamiento identificable para controles. También puede utilizar
un Frame para subdividir un formulario funcionalmente por ejemplo, para separar grupos de
controles OptionButton.
Para agrupar controles, en primer lugar trace el control Frame y, a continuación, meta los controles
dentro de Frame. De este modo podrá mover al mismo tiempo el Frame y los controles que
Cuando un control Frame tiene dentro otros controles, y hacemos invisible al Frame, mediante su
propiedad Visible = False, los controles interiores al Frame quedan también invisibles. Los
controles Frame se utilizan para poner dentro de ellos diversos controles, que solo aparecerán en
el programa cuando se cumpla una determinada condición. Cuando esa condición se cumpla, se
pone la propiedad Visible del Frame a True y se verán todos los controles que tiene dentro. Si no
se cumple esa condición, se pone la propiedad Visible del Frame a False y no se verá ni el Frame,
ni los controles que contiene.
PROPIEDADES
Las señaladas con (*) no presentan novedades respecto a las ya
comentadas para los controles precedentes.
ClipControls
Si esta propiedad está a True, los métodos gráficos en eventos Paint vuelven a dibujar el objeto
entero. Antes del evento Paint se crea una zona de recorte alrededor de los controles no gráficos
del formulario. Si esta propiedad está a False dibujarán solamente las áreas últimamente
expuestas. En tiempo de ejecución, esta propiedad es de sólo lectura.
Enabled
Cuando esta propiedad está a False, tanto los procedimientos asociados al propio control Frame
como todos los controles dentro del Frame estarán inhabilitados. Si esta propiedad está a True,
todos ellos están habilitados.
Font (*)
ForeColor
Color de las letras del título del Frame.
Visible
Cuando un Frame está con la propiedad Visible = False, tanto el propio Frame como todos los
controles interiores a el serán invisibles.
Un control OptionButton muestra una opción que se puede activar o desactivar, pero con
dependencia del estado de otros controles OptionButton que existan en el formulario.
En el formulario también existen tres CheckBox, que como puede verse, se pueden seleccionar
los que se desee, sin ningún tipo de exclusión entre ellos.
PROPIEDADES
Las señaladas con (*) son comunes a ambos controles y no presentan novedades respecto a las
ya comentadas para los controles precedentes.
0 - Left Justify
1 - Right Justify
Cuando se elige el valor 0, justificado a la izquierda, el título del control aparece a la derecha del
botón, pegado a la figura del botón. Cuando se elige el valor 1, justificado a la derecha, el título
(Caption) aparece a la izquierda del botón, comenzando en la parte izquierda del cuerpo total del
control, es decir, no tiene porqué aparecer con su parte derecha pegado al botón, caso que el
cuerpo total del control se haya hecho mas largo que la palabra del título.
Atención. Presenta una diferencia entre uno y otro control respecto a la forma de expresarse
respecto a su valor cuando está seleccionado. Para forzar que el control NO esté seleccionado, o
para leer el Value cuando no está seleccionado, podemos utilizar tanto Value = 0 como Value =
False. Sin embargo, cuando lo que se quiere es poner la propiedad a True hay una diferencia
entre ambos controles.
Para el OptionButton podemos utilizar indistintamente las siguiente formas :
Check1.value = 1
El poner como Value el valor True nos dará en este control un error.
Para la lectura del Value, existe una diferencia entre el valor devuelto por el CheckBox y el
devuelto por el OptionButton.
PROCEDIMIENTOS
Un control ListBox muestra una lista de elementos en la que 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.
La lista tiene varios elementos. Cada línea de esta lísta es un elemento de la lista. Como el
número de elementos de la lista tiene mas elementos de los que le podían caber, generó
automáticamente la barra de desplazamiento vertical.
El ComboBox está normalmente sin desplegar. Se despliega cuando se hace click con el ratón en
la flecha que tiene en su parte derecha (véase fig. Anterior). Al desplegarse, muestra la lista con
todos sus elementos. Haciendo click con el ratón en cualquiera de sus elementos, el elemento
elegido pasa a la parte TextBox del Combo y la lista vuelve a replegar.
El ListBox (y por tanto el ComboBox) tiene unas propiedades y métodos particulares que
solamente se pueden aplicar durante el tiempo de ejecución :
Para seleccionar un elemento de la lista, basta con hacer click con el ratón sobre él. Ese
elemento se resaltará con fondo en azul. Una vez seleccionado un elemento, la propiedad
ListIndex tomará el valor del número de orden que ocupa ese elemento en la lista, comenzando
por el 0 para el elemento que ocupa el primer lugar. 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 valor mayor de ListIndex.
En el ComboBox la propiedad Text contiene el texto que contenga la parte TextBox del Combo,
bien haya sido introducida desde teclado o mediante la recuperación de un elemento la parte
ListBox del mismo.
Ejemplos
Variable = List1.Listcount
Variable contendrá un número con el número total de elementos de la lista List1.
Variable = List1.ListIndex
Variable contendrá un número con el número de orden del elemento de la lista
seleccionado en ese momento.
Variable = “VISUALBASIC”
List1.AddItem Variable
Añade un elemento a List1. En este caso, el elemento añadido es la palabra
VISUALBASIC.
Variable = List1.Text
Variable contendrá el elemento que estaba seleccionado en List1. (Variable será
una cadena de caracteres)
List1.RemoveItem (n)
Elimina el elemento n de List1.
List1.RemoveItem (List1.ListIndex)
Elimina el elemento que estaba seleccionado en ese momento.
List1.listIndex = n
Selecciona el elemento n de List1 (Se resalta en azul el elemento n)
Las señaladas con (*) son comunes a ambos controles y no presentan novedades respecto a las
ya comentadas para los controles precedentes.
Determina si los elementos se presentan en una sola columna o en varias columnas, y la forma de
presentar los elementos en el ListBox. Si esta propiedad se pone a 0 la lista tendrá solamente una
columna, y presentará los elementos uno debajo de otro. Cuando los elementos sean mas que los
que se pueden presentar en la lista, aparecen automáticamente unas barras de desplazamiento
vertical.
Si la propiedad se pone a un número distinto a 0, el ListBox es de tipo multicolumna, presentará
en cada columna los elementos que le quepan dependiendo de su dimensión vertical, y tendrá
tantas columnas como sea necesario para albergar el número de elementos que tenga.
Presentará en su cuadro tantas columnas como se le indique en el valor de esta propiedad, y si no
puede presentar todos los elementos en las columnas que muestra, le aparecerán barras de
desplazamiento horizontales para poder movernos por todas las columnas que tenga.
Recuerde : El número que se le asigna a la propiedad Columns no indica el número de columnas
que tendrá el ListBox sino el número de columnas que presenta.
Nombrelista.Columns = número
.
Esta propiedad no puede definirse a 0 o cambiada desde 0 en tiempo de ejecuciones decir, no se
puede convertir en tiempo de ejecución un ListBox de múltiples columnas en un ListBox de
columna única o un ListBox de columna única en un ListBox de múltiples columnas. Sin embargo,
sí es posible cambiar durante la ejecución el número de columnas de un ListBox de múltiples
columnas.
DataField DataSource .
Establecen el control Data asociado y el campo donde están los datos que se llevarán al TextBox o
ComboBox para presentar datos procedentes de una Base de Datos.
La propiedad ItemData es una matriz de valores enteros largos cuyo número de elementos es el
valor de la propiedad ListCount del control. Los números asociados con cada elemento se pueden
usar para cualquier fin. Por ejemplo, se puede usar en la confección de una lista de teléfonos, el
número de identificación de un empleado, etc. Cuando se rellena el ListBox, también se rellena los
elementos correspondientes de la matriz ItemData con los números correspondientes.
La propiedad ItemData se usa a menudo como índice de una matriz de estructuras de datos
asociados con los elementos de un control ListBox.
Nota Cuando se inserta un elemento en una lista con el método AddItem, el elemento también se
inserta automáticamente en la matriz ItemData. Sin embargo, el valor no se reinicializa a cero;
retiene el valor que estaba en esa posición antes agregar el elemento a la lista. Cuando se usa la
propiedad ItemData, asegúrese de establecer su valor al agregar nuevos elementos a la lista.
Left (*)
Sorted
Cuando esta propiedad tiene el valor True, Visual Basic se encarga de casi todo el
procesamiento de cadenas necesario para mantener el orden alfabético, incluyendo el
cambio de los números de índice cuando se agregan o eliminan elementos.
Nota El uso del método AddItem para agregar un elemento en una posición específica de
la lista puede romper el orden alfabético, y los elementos agregados con posterioridad
pueden no ordenarse correctamente.
Mediante estos controles se pueden introducir datos variando la posición del cursor.
Las señaladas con (*) son comunes a ambos controles y no presentan novedades respecto a las
ya comentadas para los controles precedentes.
LargeChange
Esta propiedad establece la variación de la propiedad Value cada vez que se hace click en el
interior de la barra de desplazamiento, en la parte por donde pasa el cursor.
Left (*)
Max
Esta propiedad establece el valor máximo para la propiedad Value, es decir, el valor de esta
Min
Esta propiedad establece el valor mínimo para la propiedad Value, es decir, el valor de esta
propiedad cuando el cursor está en su parte mínima. (Recuerde que el cursor está en el mínimo,
cuando está mas a la izquierda, caso del HScrollBar, o cuando está en la parte mas alta, caso del
HScrollBar.
SmallChange
Esta propiedad establece la variación de la propiedad Value cada vez que se hace click en las
flechas superior o inferior de la barra de desplazamiento.
Value
Esta propiedad lee o establece el valor dado por la posición del cursor. Este valor tiene un mínimo,
establecido por Min y un máximo, establecido por Max. Esta propiedad es la que se debe leer
para conocer la posición del cursor.
TIMER TEMPORIZADOR
Este objeto permite establecer temporizaciones. Presenta una novedad respecto a los controles
estudiados hasta ahora. El control Timer solamente se ve durante el tiempo de diseño. En tiempo
de ejecución, el control permanece invisible.
Interval
El valor de esta propiedad nos dará el intervalo de tiempo (en milisegundos) en que se producirá
un evento Timer y consecuentemente, realizará el procedimiento asociado a este evento. Si el
valor de la propiedad Interval está a 0 (Predeterminado), no se produce el evento Timer. (El
control Timer está deshabilitado cuando la propiedad Interval = 0)
PROCEDIMIENTOS
Timer
CONTROL SHAPE
Se toma directamente de la caja de herramientas :
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.
Un control Shape no actúa como contenedor de controles. (Esto quiere decir que un control
Shape nunca le servirá, por ejemplo, para albergar varios OptionButton y pretender que sean
independientes de otros controles OptionButton que se encuentren fuera del control Shape.
Este control no tiene Procedimientos. En realidad, solamente sirve para mostrar un determinado
gráfico, envolver gráficamente a otros controles, pero no tiene ninguna aplicación en cuanto a
programa. Es un “adorno” para sus aplicaciones.
PROPIEDADES
Backcolor (*)
BackStyle
BorderColor
Establece el color del borde.
BorderStyle
Establece el tipo de borde. Puede ser : Transparent, (No se ve el borde), Solid, (Borde de línea
continua),Dash, (línea a rayas), Dot, (línea a puntos), Dash-Dot, (línea de raya - punto), dash-Dot-
Dot, (línea de raya - punto - punto), InsideSolid, (raya continua)
BorderWidth
Establece el ancho de la línea.
Shape
Establece la forma del control. Puede ser : Rectangular, cuadrado, redondo, ovalado, cuadrado
con esquinas redondeadas y rectangular con esquinas redondeadas.
PROCEDIMIENTOS No tiene.
CONTROL LINE
Line, al igual que Shape, es un control gráfico que solamente sirve para poner una línea en un
formulario. Del mismo modo, no tiene procedimientos, por lo que no sirve para aportar código al
programa. Solo sirve para aportar una característica gráfica, es un adorno.
PROPIEDADES
BorderColor
Establece el color de la línea.
BorderStyle
Establece el tipo de línea : Puede ser : Transparent, (No se ve la línea), Solid, (Línea
continua),Dash, (línea a rayas), Dot, (línea a puntos), Dash-Dot, (línea de raya - punto), dash-Dot-
Dot, (línea de raya - punto - punto), InsideSolid, (raya continua)
BorderWidth
Establece el ancho de la línea.
PROCEDIMIENTOS No tiene.
AÑADIR CONTROLES A LA CAJA DE HERRAMIENTAS
Los controles descritos hasta ahora son parte de los que aparecen en la caja de herramientas mas
elemental de Visual Basic. Estos, otros que se estudiarán en el capítulo 4 (Controles para mostrar
imágenes), el control Data y el contenedor OLE que se estudiarán en la segunda parte del curso,
son los que están incluidos en la caja de herramientas mas elemental. La razón es que estos
controles vienen como lo más elemental de Visual Basic, como lo que es imprescindible para que
funcione una aplicación realizada en VB. La pregunta es ahora, ¿qué es lo más elemental de VB?
Son tres DLLs, Visual Basic For Aplications (MSVBVM60.DLL), Visual Basic Runtime
Objets And Procedures (MSVBVM60.DLL\3) y Visual Basic Objets And Procedures
(VB6.OLB). Una aplicación, por muy elemental que sea, necesita esos tres ficheros.
Pero posiblemente no haya ninguna aplicación práctica que se pueda realizar con esos
controles. Hay más. Lo que ocurre es que hay que introducirlos en la caja de
herramientas. Para ello, basta con desplegar el menú de Proyecto de la barra de
menú:
Eligiendo el elemento Componentes de este menú desplegado nos muestra todos los
componentes existentes en el disco, que podremos sacar a nuestra caja de
herramientas para poder utilizarlos. En la siguiente figura puede ver el cuadro con los
controles existentes en el PC del autor. Puede observarse que está seleccionado el
control Calendar, y en la parte de abajo puede verse la ubicación y nombre del fichero
Estos controles que adquiere con posterioridad a la instalación del Visual Basic hay que
registrarlos. No se asuste. No se trata de registrarlos ante el fabricante para poder utilizarlos. Se
trata de introducirlos en el registro de Windows. Con ello Windows conoce el CLSID de ese
control, su ubicación en el disco duro (los controles suelen estar en C:\Windows\System, pero
pueden estar en cualquir otra carpeta). Windows necesita registrarlos para poder encontrarlos.
Para registrar un control se utiliza el programa Regsvr32.exe. Para registrar un control basta con
ejecutar este programa, pasandole como parámetro el nombre y ubicación del control a registrar.
Esto se hace en Inicio | Ejecutar. Por ejemplo, para registrar el conjunto de controles
VB_GuiaEst.Ocx introduciríamos ese fichero Ocx en C:\Windows\System y a continuación
ejecutamos:
Visual Basic trata a las colecciones como un objeto más. Así, las colecciones tienen sus
propiedades. No vamos a entrar en demasiados detalles de momento, pero una de las
propiedades de todas las colecciones en Count, que es precisamente el número de elementos que
componen esa colección.
La numeración de los elementos de una colección siempre va del 0 al n-1, siendo n el número de
elementos de esa colección.
Vamos a ver una expresión que nos puede ayudar mucho. Sirve para saber a que tipo
de control pertenece un determinado elemento. Esa expresión es TypeOf y siempre se
debe usar con una sentencia condicional If y aplicarla solamente sobre una variable
tipo objeto. (No se preocupe al leer esto, es muy fácil) (No se puede utilizar con Select
Case)
Una variable tipo objeto es una variable que no contiene un dato numérico o string.
Contiene un objeto. Por ejemplo, un control.
For Each Pepe in Controls ‘ Para cada valor que tome Pepe haciedole recorrer
todos
‘ los elementos de la colección Controls
If TypeOf Pepe Is TextBox Then ' Si pepe es un TextBox ….
Pepe.Locked = True ' lo bloquea
End If
Next Pepe
Puede usar este código para bloquear todos los TextBox de un formulario. Se mete en un
procedimiento llamado Bloquear (p.e.) y cada vez que queramos bloquear todos los TextBox del
formulario basta con citar a este procedimiento. Un código similar sería
Dim I As Integer
For I = 0 To Controls.Count - 1
If TypeOf Controls(I) Is TextBox Then
Controls(I).Locked = True
End If
Next
Es el texto del control o lo que figura en la barra de menú del formulario. Puede cambiarse en
tiempo de ejecución.
0 Manual
1 Automático
Enabled Activado
Propiedad Booleana. Si está en True, el formulario o control está activado y se puede interactuar
con él. Si está en False, se desactiva, impidiendo de esta forma, que se pueda trabajar con él.
Puede variarse en tiempo de ejecución. Cuando un control está deshabilitado (Enabled = False), el
control no tiene efecto, y su apariencia varía, presentando un tono pálido tanto en su cuerpo como
en su título.
Establece el modo de rellenar controles Shape, o figuras (círculos o cuadrados) creados con los
métodos gráficos Circle y Line.
Valores: 0 - Continuo
1 - Transparente
2 - Línea Horizontal
3 - Línea Vertical
4 - Diagonal hacia arriba
5 - Diagonal hacia abajo
6 - Cruzado
7 - Diagonal cruzada
Font Fuente
Establece el tamaño de la letra que se usará en ese formulario o control (U otro objeto VB, p.e. el
Printer). Esta propiedad puede variarse en tiempo de ejecución. El tamaño debe expresarse en
puntos. Máximo, 2160 puntos.
Permiten, en tiempo de ejecución, cambiar un texto a negrita, cursiva, tachado y subrayado. Son
propiedades Booleanas True / False
Height Altura
Establece un número de contexto asociado para este formulario. Este número se aplica para
determinar la ayuda interactiva asociada a este formulario o control. Vea mas adelante, el tema
Ayuda de Windows.
En el caso de que se tengan varios controles que realicen una función similar (Las teclas
numéricas de una calculadora, p.e.) puede hacerse un array con estos controles. Todos tendrán el
mismo nombre, y se diferencian por un índice. La propiedad Index de ese control toma el número
de ese índice.
Indica la posición del control, concretamente de la parte izquierda del mismo. Normalmente esta
propiedad no se introduce numéricamente, sino que la toma automáticamente de la posición que
se le de al control en tiempo de diseño. Puede cambiarse en tiempo de ejecución.
Establece un icono personalizado para el puntero del ratón cuando esté encima del Formulario o
control. Este icono puede ser un Bitmap de los existentes en el directorio Icons de Visual Basic o
cualquiera que tengamos. Si se pone 99 como valor de la propiedad MousePointer (siguiente),
cada vez que el puntero del ratón pase por este Formulario o control, cambiará su forma y
adoptará la del icono elegido.
Determina la forma del puntero del ratón cuando se coloca encima del formulario o control. Puede
elegirse uno de los punteros preestablecidos (15 en total) o el personalizado visto en la propiedad
anterior. Para elegir ese icono personalizado, debemos poner en esta propiedad el valor 99.
Cuando disponemos de varios controles en un mismo formulario, solamente uno de ellos tiene el
foco. Esta expresión de tener el foco significa que ese control está remarcado y en esa condición,
si pulsamos la tecla ENTER haría el mismo efecto que hacer click con el ratón en ese control, o,
en el caso de un TextBox, las letras pulsadas en el teclado van a ese TextBox.
Podemos variar el foco de un control a otro mediante la tecla TAB (TABulador).Esto es necesario,
ya que existen ordenadores que no disponen de ratón (típico de algunos portátiles). En estos
casos, para elegir uno u otro control debemos pulsar repetidas veces la tecla TABulador. El foco
irá cambiando de uno a otro control (pueden ser controles de distinto tipo) cada vez que pulsemos
la tecla TABulador. Esta propiedad TabIndex marca el orden que seguirá el foco a través de cada
control.
Propiedad Booleana. Cuando esta propiedad está a False, el botón no tomará el foco cuando se
pulse la tecla del Tabulador. Sin embargo sigue manteniendo el índice de la propiedad TabIndex
descrita anteriormente. Puede cambiarse en tiempo de ejecución. Esto nos permite descartar
algún botón de tomar el foco, cuando por facilidad para el usuario, sea conveniente en
determinados puntos del programa.
Esta propiedad no la usa directamente Visual-Basic. Sirve para asociar al formulario información
adicional para fines externos a la programación. Pero también le puede servir para almacenar en
ella una variable para que la use un código ajeno al formulario. El autor de esta Guía del
Estudiante tiene por costumbre utilizar la propiedad Tag del formulario inicial para guardar el
parámetro que se le pasa a algunos programas para acceder a ellos con unos determinados
privilegios. Resumiendo, está ahí para lo que el programador quiere.
Indica la coordenada de la parte superior del control. Puede variarse durante el tiempo de
ejecución. Esta propiedad, juntamente con Left definen la esquina superior izquierda del botón de
comando. Normalmente esta propiedad no se introduce numéricamente, sino que la toma
automáticamente de la posición que se le den al botón en tiempo de diseño. Puede cambiarse,
cambiando el valor a esta propiedad, en tiempo de ejecución.
Visible
Propiedad Booleana. Asignándole el valor True al control o formulario, será visible, y asignándole
el valor False, no se verá. Este valor puede cambiarse durante el tiempo de ejecución para
ocultar y hacer visible el formulario o control correspondiente.
Devuelve o establece un número de contexto asociado a un objeto. Se utiliza para dotar a las
aplicaciones de Ayuda interactiva con el menú emergente ¿Qué es esto? de la Ayuda de W 95.
Width Ancho
Define la anchura del formulario o control. Normalmente no se introduce como valor numérico sino
que lo toma automáticamente del tamaño que tenga el formulario o control durante el tiempo de
diseño. Juntamente con Height define el tamaño del objeto. Puede cambiarse durante el tiempo
Lo tienen casi todos los controles y el formulario. Es el evento habitual para introducir el código
que queremos que realice el programa al hacer click sobre un determinado control. No es el único
evento donde podemos hacerlo, pues también tenemos otros muy parecidos (MouseDown,
MouseUp), pero que funcionan de distinta forma. El evento Click en el formulario se efectúa cada
vez que pulsamos uno de los botones del ratón. En los controles, sólo con el botón izquierdo.
Si un control tiene el foco, se ejecutará su evento Click al pulsar ENTER o la barra espaciadora.
Evento KeyDown Pulsar una tecla (Ocurre cuando el control tiene el foco)
Se produce sobre el control que tiene el foco al pulsar una tecla, justo en el instante que llega a su
posición inferior. Pasa como parámetros el KeyCode As Integer y el Shift As Integer. El KeyCode
es el código de la tecla (no confundir con Keyascii, que es el código de la letra. Hay teclas que no
tienen Keyascii y sí tienen KeyCode F1, F2, ...Insert, ) Shift es la posición de la tecla Mayúsculas
(1=pulsada, 0=levantada)
Evento KeyPress Pulsar una tecla (Ocurre cuando el control tiene el foco)
Este evento se produce después del KeyDown, y pasa como parámetro el KeyAscii As Integer, que
es el código Ascii de la letra cuya tecla se ha pulsado.
Evento KeyUp Levantar la tecla pulsada (Ocurre cuando el control tiene el foco)
Ocurre al levantar la tecla, después del KeyPress. Pasa como parámetros los mismos que
KeyDown, KeyCode As Integer, Shift As Integer
Son eventos relacionados con el DDE (Intercambio Dinámico de Datos). Ocurren respectivamente
cuando se cierra el enlace DDE, cuando ocurre un error en el enlace, cuando han cambiado los
datos en origen y en destino se ha establecido la propiedad LinkMode a Notify, y cuando se inicia
una conversación DDE. Vea el capítulo dedicado al DDE para mas detalles.
LostFocus
Ocurre cuando el control pierde el foco. Este evento es muy importante, por ejemplo
en un Text Box, para dar el formato adecuado al texto contenido en ese Text Box, o
para comprobar que es correcto, etc.
Se ejecuta en el instante de apretar el botón de mouse, cuando está el puntero encima del
formulario o control correspondiente. Pasa como parámetros el botón pulsado (1= izquierdo, 2 =
derecho, 3 = centro), la tecla mayúsculas (Shift=1 significa pulsada, =0 no pulsada) y las
coordenadas X e Y del puntero del ratón.
Se ejecuta cuando pasa por encima del formulario o0 control el puntero del ratón
Existen mas eventos. No se van a mencionar aquí todos, pues se irán viendo según avance el
curso.
Y no se preocupe si este capitulo le ha resultado muy pesado. Les pasa a todos. El próximo va a
ser mas divertido.