Compartir a través de


Seguimiento de secuencias de eventos

El modelo de eventos de Visual FoxPro es amplio y le concede bastante control sobre los componentes de la aplicación en respuesta a una amplia variedad de acciones de usuario. Algunas de las secuencias de eventos son fijas como, por ejemplo, la creación o destrucción de un formulario. Algunos eventos ocurren de forma independiente, pero la mayor parte ocurre con otros eventos basados en la interacción con el usuario.

Establecer el seguimiento de eventos

La mejor manera de ver las secuencias de eventos de Visual FoxPro es establecer el seguimiento de eventos en el depurador. El seguimiento de eventos le permite ver cuándo tiene lugar cada evento asociado a sus propios formularios y controles en relación a otros eventos, de forma que puede determinar el lugar más eficiente para incluir el código.

Para establecer el seguimiento de eventos

  1. En el menú Herramientas de la ventana Depurador, elija Seguimiento de eventos.
  2. En el cuadro de diálogo Seguimiento de eventos, seleccione Activar el seguimiento de eventos.

Los eventos de la lista Eventos para seguir se escriben en la ventana Resultados del depurador o en un archivo cuando tengan lugar.

Nota   En este ejemplo, los eventos MouseMove y Paint se han eliminado de la lista Eventos para seguir, porque estos eventos se producen con tanta frecuencia que dificultan la visión de las secuencias de los demás eventos.

Observar cómo ocurren los eventos

A veces una acción de un usuario desencadena un único evento, como mover el puntero del mouse sobre un control, por ejemplo. Sin embargo, con frecuencia una acción del usuario desencadena múltiples eventos.

En esta sección se describe el orden en que ocurren los eventos como respuesta a la interacción del usuario, utilizando el siguiente formulario como ejemplo.

Formulario de ejemplo para ilustrar las secuencias de eventos

En esta situación de ejemplo, el usuario realiza las siguientes acciones en el formulario:

  1. Ejecuta el formulario.
  2. Escribe texto en Text1.
  3. Selecciona el campo y lo copia al Portapapeles.
  4. Va a Text2.
  5. Pega el texto en Text2.
  6. Cierra el formulario haciendo clic en Command2.

Estas acciones desencadenan uno o más eventos del sistema para cada objeto. En las tablas siguientes se describen los eventos desencadenados como respuesta a cada acción del usuario.

Acción 1

El usuario ejecuta el formulario escribiendo el siguiente comando en la ventana Comandos:

DO FORM form1 NAME frmObject

Visual FoxPro carga el formulario, inicializa cada objeto y después inicializa el formulario; el formulario se activa y el primer campo recibe el enfoque de entrada.

Objeto Evento
DataEnvironment BeforeOpenTables
Form1 Load
DataEnvironment Init
Text1 Init
Text2 Init
Command1 Init
Command2 Init
Form1 Init
Form1 Activate
Form1 GotFocus
Text1 When
Text1 GotFocus

Acción 2

El usuario escribe Test en Text1. Cada pulsación de teclas genera dos eventos. El evento KeyPress recibe 2 parámetros: la tecla presionada y el estado de las teclas MAYÚS, ALT y CTRL.

Objeto Evento
Text1 KeyPress(84, 1) "T"
Text1 InteractiveChange
Text1 KeyPress(101, 0) "e"
Text1 InteractiveChange
Text1 KeyPress(115,0) "s"
Text1 InteractiveChange
Text1 KeyPress(116,0) "t"
Text1 InteractiveChange

Acción 3

El usuario hace doble clic en Text1 para seleccionar el texto y presiona CTRL+C para copiar el texto al Portapapeles. Los eventos Mouse y un evento Click acompañan al evento DblClick. Los eventos MouseMove y MouseDown reciben cuatro parámetros: un número que indica el botón que se ha presionado, el estado de MAYÚS y las ubicaciones X e Y. Las ubicaciones X e Y son relativas al formulario y reflejan el modo de escala (por ejemplo, píxeles) del formulario. Sólo se presenta un evento MouseMove para cada control. En realidad, este evento se activaría probablemente media docena de veces o más.

Objeto Evento
Form1 MouseMove(0, 0, 100, 35)
Text1 MouseMove(0,0,44,22)
Text1 MouseDown(1, 0, 44, 22)
Text1 MouseUp(1, 0, 44, 22)
Text1 Click
Text1 MouseDown(1, 0, 44, 22)
Text1 MouseUp(1, 0, 44, 22)
Text1 DblClick

Acción 4

El usuario presiona TAB para pasar a Text2.

Objeto Evento
Text1 KeyPress(9, 0)
Text1 Valid
Text1 LostFocus
Text2 When
Text2 GotFocus

Acción 5

El usuario pega en Text2 el texto copiado al presionar CTRL+V.

Objeto Evento
Text2 InteractiveChange

Acción 6

El usuario hace clic en Command2, que cierra el formulario.

Objeto Evento
Form1 MouseMove
Command2 MouseMove
Text2 Valid
Command2 When
Text2 LostFocus
Command2 GotFocus
Command2 MouseDown(1, 0, 143, 128)
Command2 MouseUp(1, 0, 143, 128)
Command2 Click
Command2 Valid
Command2 When

Cuando se cierra el formulario y se libera el objeto se producen estos eventos adicionales, en orden inverso a los eventos de la Acción 1.

Objeto Evento
Form1 Destroy
Command2 Destroy
Command1 Destroy
Text2 Destroy
Text1 Destroy
Form1 Unload
DataEnvironment AfterCloseTables
DataEnvironment Destroy

La secuencia de eventos de Visual FoxPro

La tabla siguiente muestra la secuencia de activación general de los eventos de Visual FoxPro. Se supone que la propiedad AutoOpenTables del entorno de datos está establecida en el valor verdadero (.T.). Otros eventos pueden tener lugar en base a interacciones de usuario y a respuesta del sistema.

Objeto Eventos
Entorno de datos BeforeOpenTables
Conjunto de formularios Load
Formulario Load
Cursor o cursores del entorno de datos Init
Entorno de datos Init
Objetos 1 Init
Formulario Init
Conjunto de formularios Init
Conjunto de formularios Activate
Formulario Activate
Object1 2 When
Formulario GotFocus
Object1 GotFocus
Object1 Message
Object1 Valid 3
Object1 LostFocus
Object2 3 When
Object2 GotFocus
Object2 Message
Object2 Valid 4
Object2 LostFocus
Formulario QueryUnload
Formulario Destroy
Objeto 5 Destroy
Formulario Unload
Conjunto de formularios Unload
Entorno de datos AfterCloseTables
Entorno de datos Destroy
Cursor o cursores del entorno de datos Destroy

1 Para cada objeto, desde el objeto más interno hasta el contenedor más externo
2 Primer objeto según el orden de tabulación
3 Siguiente objeto que va a recibir el enfoque
4 Cuando el objeto pierde el enfoque
5 Para cada objeto, desde el contenedor más externo hasta el objeto más interno

Vea también

Eventos de Visual FoxPro | Asignar código a eventos | Depurador | Comandos | Evento KeyPress | Evento Click | Evento DblClick | MouseMove | MouseDown | Propiedad AutoOpenTables | Descripción del modelo de eventos