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
- En el menú Herramientas de la ventana Depurador, elija Seguimiento de eventos.
- 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:
- Ejecuta el formulario.
- Escribe texto en Text1.
- Selecciona el campo y lo copia al Portapapeles.
- Va a Text2.
- Pega el texto en Text2.
- 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