TEMA 8: Eventos
Cada objeto puede asociarse con un conjunto de procedimientos que se ejecutan cuando ocurra un evento. Un procedimiento es un conjunto de instrucciones en Visual Basic, las instrucciones del procedimiento se lleva a cabo cuando se ejecuta dicho procedimiento (todo procedimiento asociado a un objeto esta ligado a un evento particular o acción y se denomina procedimiento para eventos). Los eventos ocurren sólo durante la ejecución y a cada objeto se le pueden asociar varios eventos. Los procedimientos por omisión no hacen nada, consisten simplemente en la declaración del procedimiento. Ejemplo:
Private Sub Form_Load()
End Sub
A continuación se muestran algunos eventos que iremos utilizando en este curso.
Nota: es importante comprobar está página, porque se actualizará constantemente a medida que avancemos en el curso, incluyendo más eventos.
--------------------------------------------------------------------------
--------------------------------------------------------------------------
- Activate: se produce cuando un Formulario se activa.
- Desactivate: se produce cuando un Formulario se desactiva.
Los eventos Activate y Desactivate sólo se producen cuando el foco pasa de uno a otro Formulario dentro de la aplicación. Si el foco se pasa a las ventanas de otras aplicaciones los eventos no se producen. Se utilizan los métodos Show y SetFocus.
El evento Activate ocurre antes que el evento GotFocus y el evento LostFocus ocurre antes que el evento Desactivate.
- Change: indica que el contenido de un objeto ha cambiado. Cómo y cuando ha ocurrido este evento varía con el objeto:
--------------------------------------------------------------------------
- Label: ocurre cuando un vínculo DDE actualiza los datos o cuando usted cambia la configuración de la propiedad Caption mediante código.
- TextBox: ocurre cuando un vínculo DDE actualiza los datos, cuando el usuario cambia el texto o cuando usted cambia la configuración de la propiedad Text mediante código.
- PictureBox: ocurre cuando un vínculo DDE actualiza los datos o cuando usted cambia la configuración de la propiedad Picture mediante código.
- VScrollBar y HScrollBar: ocurre cuando el usuario desplaza las barras o cuando usted cambia la configuración de la propiedad Value mediante código. Cuando la modificación del valor se realiza mediante una operación de arrastre, el valor no es actualizado hasta que ha sido liberado el botón del ratón. Mirar el evento Scroll.
- ComboBox: cuando el usuario cambia el texto en el área de edición o se cambia la configuración de la propiedad Text mediante código. El evento ocurre cuando la propiedad Style está establecida en 0 o 1.
- DriveListBox: cambia la unidad seleccionada. Ocurre cuando el usuario selecciona una nueva unidad o cuando usted cambia la configuración de la propiedad Drive mediante código.
- DirListBox: cambia el directorio seleccionado. Ocurre cuando el usuario hace doble clic en un nuevo directorio o cuando cambia la configuración de la propiedad Path mediante código.
Nota: intercambio dinámico de datos (DDE). Un protocolo establecido para intercambiar datos a través de vínculos activos entre aplicaciones que corren bajo Microsoft Windows.
Click: un solo clic con el botón izquierdo del ratón.
Dblclick: doble clic.
--------------------------------------------------------------------------
El evento Click y Dblclick también se producen en las siguientes situaciones:
- Cuando el usuario hace clic sobre el control con el botón derecho del ratón, excepto en controles CommandButton, OptionButton y CheckBox.
- Cuando el usuario selecciona un elemento de un control de tipo ListBox, ya sea con el ratón o con teclado.
- Cuando el usuario pulsa la tecla [ESPACIO] mientras el foco se encuentra en un control CommandButton, OptionButton o CheckBox.
- Cuando el usuario pulsa la tecla [INTRO] en un Formulario con un CommandButton que tiene su propiedad Default a True.
- Cuando el usuario pulsa la tecla [ESCAPE] en un Formulario con un CommandButton que tiene su propiedad Cancel a True.
- Cuando el usuario pulsa la tecla de acceso de un control.
- Cuando se establece a través del código un valor True en la propiedad Value de un control CommandButton, OptionButton o CheckBox.
- GotFocus: cuando un objeto recibe el foco. El foco se llama al control que se encuentra activo. Suele utilizarse para suministrar información al usuario sobre el objeto que tiene el foco.
- LostFocus: pierde el objeto el foco. El foco se llama al control que se encuentra activo. Suele utilizarse para verificar los datos del objeto antes de que éste pierda el foco.
--------------------------------------------------------------------------
Visual Basic permite especificar qué objeto, Formulario o control, tendrá el foco, aunque no le corresponda según el orden natural. Para ello, se utiliza el método SetFocus.
- Initialize: es el primer evento que se produce en un Formulario. Se utiliza para inicializar datos empleados por el Formulario.
Ejemplo: Form1.Caption = "Ejemplo"
- Terminate: es el último evento que se produce en un Formulario. Se produce cuando todas las referencias a una instancia de un Formulario, se quitan de la memoria estableciendo a Nothing todas las variables que hacen referencia al objeto.
--------------------------------------------------------------------------
- KeyPress: se produce cuando un usuario pulsa una tecla en tiempo de ejecución. Este es detectado por el control o Formulario que tiene el foco, ejecutándose el procedimiento de evento correspondiente. Su sintaxis es:
Private Sub Objeto_KeyPress ([Index As Integer,] KeyAscii As Integer)
El parámetro KeyAscii devuelve un número entero que representa el código ASCII de la tecla pulsada. Este parámetro es pasado por referencia, de forma que es posible alterar su valor con el fin de pasar al objeto un carácter distinto. Si el valor es cambiado a 0, la pulsación es cancelada y el objeto no recibe ningún carácter. Ver siguiente tabla.
TABLA 12. TECLAS QUE PRODUCEN EL EVENTO KEYPRESS Tecla Valor de KeyAscii Caracteres imprimibles Código ANSI correspondiente. De [Ctrl+A] hasta [Ctrl+Z] 1-26 [Retroceso] 8 [Tab] 9 [Ctrl+Intro] 10 [Intro] 13 [Ctrl+Retroceso] 127 --------------------------------------------------------------------------
- Load: cuando un Formulario se carga en memoria se produce el evento Load. Este evento suele utilizarse para realizar operaciones de inicialización como, por ejemplo, inicializar variables, dar valores a las propiedades de determinados controles, cargar elementos en las listas, etc.
- Unload: se produce cuando un Formulario se descarga en memoria. Este evento dispone de un argumento, denominado Cancel que permite cancelar la descarga del Formulario. Para ello, bastará con asignarle un valor distinto de cero en cualquier instrucción del código. Si no se le asigna ningún valor, se mantendrá a cero, permitiendo la descarga del Formulario.
--------------------------------------------------------------------------
--------------------------------------------------------------------------
- MouseDown: se produce al pulsar el botón del ratón. Son detectados por el Formulario o control sobre el que se encuentra el puntero del ratón en ese momento. Su sintaxis es:
Private Sub Objeto_MouseDown ([Index As Integer,] _
Button As Integer, Shift As Integer, X As Single, Y As Single)
- MouseMove: se produce cuando el ratón se mueve. Son detectados por el Formulario o control sobre el que se encuentra el puntero del ratón en ese momento. Su sintaxis es:
Private Sub Objeto_MouseMove ([Index As Integer,] _
Button As Integer, Shift As Integer, X As Single, Y As Single)
- MouseUp: se produce al liberar el botón del ratón. Son detectados por el Formulario o control sobre el que se encuentra el puntero del ratón en ese momento. Su sintaxis es:
Private Sub Objeto_MouseUp ([Index As Integer,] _
Button As Integer, Shift As Integer, X As Single, Y As Single)El parámetro Button indica el botón del ratón que ha sido pulsado o liberado. Devuelve un entero cuyos bits 0, 1 y 2 se encuentran activos en función del botón.
Constante Valor Descripción vbLeftButton 1 Se ha pulsado el botón izquierdo. vbRighButton 2 Se ha pulsado el botón derecho. vbCenterButton 4 Se ha pulsado el botón central. Es posible que se pulsen dos o más de los botones a la vez. En este caso, el valor devuelto será la suma de los valores correspondientes a cada botón. Ej: si se pulsa el botón izquierdo y el derecho, el valor binario devuelto será 011, es decir 3 decimal o vbLeftButton + vbRighButton.
El parámetro Shift indica el estado de las teclas [SHIFT], [CONTROL] y [ALT] en el momento de producirse el evento. Devuelve un entero cuyos bits 0, 1 y 2 se encuentran activos en función de la tecla.
Constante Valor Descripción vbShiftMask 1 Está presionada la tecla [MAYUS]. vbCtrlMask 2 Está presionada la tecla [CTRL]. vbAltMask 4 Está presionada la tecla [ALT]. Si no se encuentra pulsada ninguna tecla el valor devuelto es 0 y si hay más de una tecla pulsada el valor devuelto es la suma de los valores correspondientes a cada tecla. Ej: si se encuentran pulsadas las teclas [MAYUS] y [ALT], el valor devuelto será 5, es decir, vbShiftMask + vbAltMask.
Los parámetros X e Y indican la posición del puntero del ratón en el momento de producirse el evento, referidas a la esquina superior izquierda del objeto. Sus valores vienen determinados por los valores actuales de las propiedades de escala del objeto.
- Resize: ocurre cuando cambia el estado de una ventana (por ejemplo, cuando se maximiza, minimiza o restaura un Formulario). Ejemplo: cambiar automáticamente el tamaño de un Cuadro de Imagen.
Private Sub Form_Resize()
Picture1.Move 0, 0, ScaleWidth, ScaleHeight
End Sub--------------------------------------------------------------------------
- Scroll: actualiza un valor durante la operación de arrastre de un control HScrollBar y VScrollBar. Este evento se produce cada vez que cambia el valor, se haya o no liberado el botón del ratón.
En los controles ListBox, ComboBox, DriveListBox, DirListBox y FileListBox ocurre cuando en la lista aparecen barras de desplazamiento y cambia la posición de esta, bien arrastrando o pulsando en las flechas.
--------------------------------------------------------------------------
- Timer: ocurre cuando un intervalo preestablecido para un control Timer se ha agotado. La frecuencia del intervalo se almacena en la propiedad Interval del control, que especifica la cantidad de tiempo en milisegundos. Utilice este procedimiento de evento para indicar a Visual Basic qué hacer cada vez que se agote el intervalo de tiempo de un control Timer.
--------------------------------------------------------------------------
Siempre que la propiedad Enabled del control Timer esté establecida a True y la propiedad Interval sea mayor que 0, el evento Timer espera durante el periodo especificado en la propiedad Interval.