ON EVENT CALL

4D - Documentation   Français   English   German   Español   4D v11 SQL, Comandos por temas   4D v11 SQL, Lista alfabética de comandos   4D v11 SQL, Constantes por temas   Regresar   Anterior   Siguiente

versión 3


ON EVENT CALL (metodoEvento{; nomProces})

ParámetroTipoDescripción
metodoEventoAlfaMétodo de evento a llamar, o
Cadena vacía para detener la interceptación
de eventos
nomProcesAlfaNombre del proceso

Descripción

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, usted 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-Opción-Control-Retroceso (en Macintosh) convierte el proceso de evento en un proceso normal. Esto significa que el método no será pasado automáticamente a todos los eventos que ocurran. 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.

La variable sistema MouseDown toma el valor 1 si el evento es un clic del ratón, y 0 si no.

La variable sistema KeyCode contiene el código del caracter digitado en el teclado o el código de una tecla de función. Consulte la sección Códigos ASCII (y sus subsecciones) y Function Key Codes. 4D ofrece constantes predefinidas para los principales Códigos ASCII y teclas de funciones. En la ventana del explorador, busque los temas de estas constantes.

La variable sistema Modifiers contiene el valor modificador, indica si alguna de las siguientes teclas han sido presionadas cuando el evento ocurrió:

PlataformaModificadores
WindowsMayús, Bloqueo de mayúsculas, Alt, Ctrl, Botón derecho del ratón
MacintoshMayús, Bloqueo de mayúsculas, Opción, Comando, Control

Notas

- La tecla Windows ALT es el equivalente a la tecla Macintosh Opción.

- La tecla Windows Ctrl es equivalente a la tecla Macintosh Comando.

- La tecla Macintosh Control no tiene equivalente en Windows. Sin embargo, un clic derecho en Windows es equivalente a un Control-Clic en Macintosh.

Las teclas modificadoras no generan un evento; también debe presionarse otra tecla o el botón del ratón. La variable Modifiers es una variable de tipo Entero largo de 4 bytes, que debe ser considerada como un array de 32 bits. 4D ofrece constantes predefinidas que expresan posiciones de bit o máscaras de bit para probar el bit correspondiente a cada tecla modificadora. Por jemplo, para detectar si la tecla Mayús fue presionada para el evento, puede escribir:

   If (Modifiers ?? Shift key bit ) ` Si la tecla Mayús fue presionada

o:

   If ((Modifiers & Shift key mask)#0)` Si la tecla Mayús fue presionada

Nota: Bajo Windows, el valor 128 se añade a la variable Modifiers si el botón (izquierda) del ratón es liberado en el momento del evento.

Las variables sistema MouseX y MouseY contienen las posiciones horizontal y vertical del clic del ratón, expresadas en el sistema de coordenadas locales de la ventana donde el clic se produjo. La esquina superior izquierda de la ventana es la posición 0,0. Estas variables son significativas sólo cuando hay un clic del ratón.

La variable sistema MouseProc contiene el número de referencia del proceso en el cual ocurrió el evento (clic del ratón).

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.

Ejemplo

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 ` NOT 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.

Ver también

FILTER EVENT, GET MOUSE, Method called on event, Shift down.


4D - Documentation   Français   English   German   Español   4D v11 SQL, Comandos por temas   4D v11 SQL, Lista alfabética de comandos   4D v11 SQL, Constantes por temas   Regresar   Anterior   Siguiente