Compartir a través de


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