Eventos de Visual FoxPro
El sistema desencadena automáticamente un código de evento como respuesta a alguna acción del usuario. Por ejemplo, el sistema procesa automáticamente el código escrito para el evento Click cuando el usuario hace clic en un control. El código de un evento también puede desencadenarse mediante eventos del sistema, como es el caso del evento Timer en un control de cronómetro.
Los eventos básicos
La tabla siguiente contiene una lista del principal conjunto de eventos de Visual FoxPro que se aplican a la mayoría de los controles.
Conjunto básico de eventos
Evento | Cuándo se desencadena el evento |
---|---|
Init | Al crear un objeto. |
Destroy | Al liberar de la memoria un objeto. |
Click | Cuando el usuario hace clic en el objeto con el botón principal del mouse. |
DblClick | Cuando el usuario hace doble clic en el objeto con el botón principal del mouse. |
RightClick | Cuando el usuario hace clic en el objeto con el botón secundario del mouse. |
GotFocus | Cuando el objeto recibe el enfoque, ya sea como resultado de una acción del usuario o al hacer clic, o porque se cambie el enfoque en el código mediante el método SetFocus. |
LostFocus | Cuando el objeto pierde el enfoque, ya sea como resultado de una acción del usuario, por ejemplo, presionar la tecla TAB hasta otro objeto o hacer clic sobre éste, o porque se cambie el enfoque en el código mediante el método SetFocus. |
KeyPress | Cuando el usuario presiona y suelta una tecla. |
MouseDown | Cuando el usuario presiona el botón del mouse mientras el puntero del mouse se encuentra sobre el objeto. |
MouseMove | Cuando el usuario mueve el mouse sobre el objeto. |
MouseUp | Cuando el usuario libera un botón del mouse mientras el puntero del mouse se encuentra sobre el objeto. |
Contenedores y eventos de objeto
A la hora de escribir código de eventos para los controles se deben tener en cuenta dos reglas básicas:
- Los contenedores no procesan los eventos asociados a los controles que contienen.
- Si no hay código de evento asociado a un control, Visual FoxPro comprobará si hay código asociado al evento en algún nivel superior de la jerarquía de clase para dicho control.
Cuando un usuario interactúa con un objeto de alguna forma, ya sea presionando la tecla TAB, haciendo clic en él, moviendo el puntero del mouse sobre él, etc., tienen lugar los eventos de objeto. Cada objeto recibe sus eventos de forma independiente. Por ejemplo, aunque un botón de comando se encuentre en un formulario, el evento Click del formulario no se desencadenará cuando un usuario haga clic en el botón de comando; sólo se desencadenará el evento Click del botón de comando.
Si no hay ningún código de evento Click asociado al botón de comando, cuando el usuario haga clic en el botón no ocurrirá nada, incluso cuando haya un código de evento Click asociado al formulario.
Esta regla también es aplicable a los controles Grid. La cuadrícula contiene columnas que a su vez contienen encabezados y controles. Cuando ocurren los eventos, sólo el objeto más interno implicado en el evento reconoce el evento. Los contenedores de mayor nivel no reconocen el evento.
No obstante, hay una excepción a esta regla. Si ha escrito código de evento para un grupo de botones de opción o para un grupo de botones de comando pero no hay código para el evento en un determinado botón del grupo, el código de evento del grupo se ejecutará cuando se produzca el evento del botón.
Nota Cuando se inicia una secuencia de eventos, como MouseDown y MouseUp, para un control, toda la secuencia de eventos pertenece al control. Por ejemplo, si presiona el botón primario del mouse en un botón de comando y arrastra el puntero del mouse desde el botón de comando, los eventos MouseMove del botón de comando seguirán produciéndose, aunque el puntero del mouse se esté moviendo fuera del formulario. Si suelta el botón primario del mouse sobre el formulario en lugar de hacerlo sobre el botón de comando, el evento MouseUp que ocurrirá será el asociado al botón de comando, no al formulario.
Clases y eventos de controles
Si un control de un formulario está basado en una clase definida por el usuario (que, a su vez, está basada en otra clase definida por el usuario), cuando se produzca un evento, Visual FoxPro comprobará el código de evento del control inmediato. Si hay código en ese procedimiento de evento, Visual FoxPro lo ejecutará. Si no existe código en el procedimiento de evento, Visual FoxPro comprobará un nivel superior en la jerarquía de clases. Si en algún lugar de la jerarquía de clases Visual FoxPro encuentra código para el evento, se ejecutará dicho código. Cualquier código que haya más allá dentro de la jerarquía no se ejecutará.
No obstante, puede incluir código en un procedimiento de evento y llamar explícitamente al código en clases en las cuales se base el control; para ello se utiliza la función DODEFAULT( ).
Vea también
Descripción del modelo de eventos | Seguimiento de secuencias de eventos | Asignar código a eventos | Método SetFocus