Este es el sitio web histórico de la documentación de 4D. La documentación se está trasladando progresivamente a developer.4d.com |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20 R7
ON EVENT CALL
|
ON EVENT CALL ( metodoEvento {; nombreProceso} ) | ||||||||
Parámetro | Tipo | Descripción | ||||||
metodoEvento | Cadena |
![]() |
Método de evento a llamar, o Cadena vacía para detener la interceptación de eventos | |||||
nombreProceso | Cadena |
![]() |
Nombre del proceso | |||||
El comando ON EVENT CALL instala el método, cuyo nombre se pasa en metodoEvento, como método de gestión de eventos.
Consejo: este comando necesita un nivel de conocimiento avanzado en programación. Generalmente, no necesita utilizar ON EVENT CALL para trabajar con eventos. Cuando utiliza formularios, 4D administra los eventos y los envía a los objetos y formularios apropiados.
Consejo: comandos tales como GET MOUSE, Shift down, etc., para obtener información sobre eventos. Estos comandos pueden llamarse desde los métodos de objeto para obtener la información que necesita sobre un evento involucrado con un objeto. Utilizarlos le ahorra la escritura de un algoritmo basado en una estructura de tipo ON EVENT CALL.
El alcance de este comando es la sesión de trabajo actual. Por defecto, el método se ejecuta en un proceso local separado. Sólo puede tener un método de gestión de eventos a la vez. Para detener un método de gestión de eventos, llame nuevamente ON EVENT CALL y pase una cadena vacía en metodoEvento.
Como el método de gestión de eventos se ejecuta en un proceso separado, está activo constantemente, incluso si ningún método de 4D se está ejecutando. Después de la instalación, 4D llama al método de gestión de eventos cada vez que ocurre un evento. Un evento puede ser un clic con el ratón o presionar una tecla.
El parámetro opcional nomProces da nombre al proceso creado por el comando ON EVENT CALL. Si nomProces comienza por el símbolo pesos ($), comienza un proceso local, lo cual generalmente es lo que usted quiere. Si omite el parámetro nomProces, 4D crea por defecto un proceso local llamado $Event Manager.
Advertencia: sea muy cuidadoso con lo que escribe en un método de gestión de eventos. NO llame comandos que generen eventos, de lo contrario será extremadamente difícil salir de la ejecución del método de gestión de eventos. La combinación de teclas Ctrl+Mayús+Retroceso (en Windows) o Comando-Mayús-Control-Retroceso (en Mac) le permite matar el proceso en el Gestor de eventos. Podría utilizar esta técnica para recuperar un método de gestión de eventos incontrolable (por ejemplo, uno que tenga eventos que disparen bugs).
En el método de gestión de eventos, puede leer las siguientes variables sistema MouseDown, KeyCode, Modifiers, MouseX, MouseY y MouseProc. Note que estas variables son variables proceso. Su alcance es por lo tanto el proceso de gestión de eventos. Cópielas en las variables interproceso si quiere que sus valores estén disponibles en otro proceso.
Plataforma | Modificadores |
Windows | Mayús, Bloqueo de mayúsculas, Alt, Ctrl, |
Macintosh | Mayús, Bloqueo de mayúsculas, Alt u Opción, Comando, Control |
If(Modifiers?? Shift key bit) //Si la tecla Mayús fue presionada
If((Modifiers&Shift key mask)#0) //Si la tecla Mayús fue presionada
Modificador | Constante |
Mayúscula | Shift key bit / Shift key mask |
Bloqueo de mayúsculas | Caps lock key bit / Caps lock key mask |
Alt (también llamado Opción en OS X) | Option key bit / Option key mask |
Ctrl en Windows | Command key bit / Command key mask |
Ctrl en OS X | Control key bit / Control key mask |
Comando en OS X | Command key bit / Command key mask |
Clic derecho | Control key bit / Control key mask |
Importante: las variables sistema MouseDown, KeyCode, Modifiers, MouseX, MouseY y MouseProc sólo contienen valores significativos en un método de gestión de eventos instalado con ON EVENT CALL.
Este ejemplo cancela la impresión si el usuario presiona las teclas Ctrl+punto. Primero, el método de gestión de eventos se instala. Luego aparece un mensaje, anunciando que el usuario puede cancelar la impresión. Si la variable interproceso vbWeStop es igual a True en el método de gestión de eventos, una caja de diálogo de alerta aparece para mostrar al usuario el número de registros que han sido impresos. Luego el método de gestión de eventos se desinstala:
PAGE SETUP
If(OK=1)
◊vbWeStop:=False
ON EVENT CALL("GESTIÓN DE EVENTOS") ` Instala el método de gestión de eventos
ALL RECORDS([Personas])
MESSAGE("Para interrumpir la impresión presione Ctrl+Punto.")
$vlNbRegistros:=Records in selection([People])
For($vlRegistro;1;$vlNbRegistros)
If(◊vbWeStop)
ALERT("Printing cancelled at record "+String($vlRegistro)+" of "+String($vlNbRegistros))
$vlRegistro:=$vlNbRegistros+1
Else
Print form([Personas];"Informe especial")
End if
End for
PAGE BREAK
ON EVENT CALL("") ` Desinstala el método de gestión de eventos
End if
Si se ha presionado la combinación Ctrl+punto, el método de gestión de eventos da a vbWeStop el valor True:
` Método de proyecto GESTIÓN DE EVENTOS
If((Modifiers?? Command key bit)&(KeyCode=Period))
CONFIRM("¿Está seguro?")
If(OK=1)
◊vbWeStop:=True
FILTER EVENT ` NO olvide este llamado; de lo contrario 4D también obtendrá este evento
End if
End if
Note que este ejemplo utiliza ON EVENT CALL porque realiza un informe especial de impresión utilizando los comandos PAGE SETUP, Print form y PAGE BREAK en una estructura de tipo bucle For...End for.
Si imprime un informe utilizando PRINT SELECTION, NO necesita administrar los eventos que permiten al usuario interrumpir la impresión; PRINT SELECTION hace esto por usted.
Producto: 4D
Tema: Interrupciones
Número
190
Creado por: < 4D v6
Manual de lenguaje 4D ( 4D v20 R7)