Captura de eventos de entrada del usuario
Puede capturar eventos de entrada del usuario en la aplicación. Para ello, puede implementar un bloque de función que se ejecute cuando se produzcan eventos de usuario.
Aviso
 Proyecto de muestra para capturar cambios de variables mediante la entrada del usuario
Proyecto de muestra para capturar cambios de variables mediante la entrada del usuario
El proyecto de ejemplo registra los cambios en los valores de las variables activados por la entrada del usuario dentro de la visualización. En este proyecto, también encontrará la implementación del método. ValueChanged.
Capturando la escritura de variables
Cuando el usuario completa la entrada de un valor (en un campo de entrada), se cierra un evento de control de edición. Puede capturar este evento en la aplicación de la siguiente manera.
- Crea un bloque de funciones que implementa la interfaz - VisuElems.IEditBoxInputHandlerde la biblioteca- VisuElemBase.
- Pasar la instancia al administrador de eventos global - VisuElems.Visu_Globals.g_VisuEventManagerllamando al método- SetEditBoxEventHandler.
Una visualización tiene dos campos de entrada para iInput_A y rInput_B y un elemento de salida de texto.
Los campos de entrada son rectángulos en los que se le pide al usuario que haga clic para ingresar texto.
El elemento de salida de texto es un rectángulo donde se guarda el contenido de la variable de texto. PLC_PRG.stInfo Se imprimen. La variable de texto contiene la última entrada del usuario en uno de los campos de entrada y la información adicional añadida.

| Propiedades del rectángulo  | |
| 
 | |
| 
 | |
| Propiedades del rectángulo  | |
| 
 | |
| 
 | |
| Propiedades del rectángulo para la salida de texto | |
| 
 | |
| 
 | |
Implementación de PLC_PRG
PROGRAM PLC_PRG
VAR_INPUT
    iInput_A:INT;  (* Used in the visualization as user input variable*)
    rInput_B:REAL; (* Used in the visualization as user input variable*)
    stInfo : STRING;  (* Informs about the user input via the edit control field;
                        String gets composed by method 'VariableWritten;
                        Result is displayed in the lower rectangle of the visualization *)
END_VAR
VAR
    inst : POU;
    bFirst : BOOL := TRUE;
END_VAR
IF bFirst THEN
    bFirst := FALSE;
    VisuElems.Visu_Globals.g_VisuEventManager.SetEditBoxEventHandler(inst);
    (* Call of method VariableWritten *)
END_IF                      Implementación de POU
FUNCTION_BLOCK POU IMPLEMENTS VisuElems.IEditBoxInputHandler (* no further declarations, no implementation code *)
Método VariableWritten asignado a POU
METHOD VariableWritten : BOOL
(* provides some information always when an edit control field is closed in the visualization, that is a variable gets written by user input in one of the upper rectangles *)
VAR_INPUT
    pVar : POINTER TO BYTE;
    varType : VisuElems.Visu_Types;
    iMaxSize : INT;
    pClient : POINTER TO VisuElems.VisuStructClientData;
END_VAR
// String stInfo, which will be displayed in the lower rectangle, is composed here
PLC_PRG.stInfo := 'Variable written; type: ';
PLC_PRG.stInfo := CONCAT(PLC_PRG.stInfo, INT_TO_STRING(varType));
PLC_PRG.stInfo := CONCAT(PLC_PRG.stInfo, ', adr: ');
PLC_PRG.stInfo := CONCAT(PLC_PRG.stInfo, DWORD_TO_STRING(pVar));
PLC_PRG.stInfo := CONCAT(PLC_PRG.stInfo, ', by: ');
PLC_PRG.stInfo := CONCAT(PLC_PRG.stInfo, SEL(pClient^.globaldata.clienttype = VisuElems.Visu_ClientType.Targetvisualization,'other visu', 'targetvisu'));                        Captura de eventos del teclado
Cuando el usuario presiona y suelta la tecla, se genera un evento de teclado en la visualización. Puede capturar este evento en la aplicación de la siguiente manera.
- Crea un bloque de funciones que implementa la interfaz - VisuElems.IKeyEventHandlerde la biblioteca- VisuElemBase.
- Pasar la instancia al administrador de eventos global - VisuElems.Visu_Globals.g_VisuEventManagerllamando al método- SetKeyEventHandler.
Una visualización tiene un elemento de salida de texto. Este elemento es un rectángulo donde se almacena el contenido de la variable de texto. PLC_PRG.stInfo Se imprimen. La variable de texto contiene información sobre la última tecla pulsada por el usuario.
| Propiedades del rectángulo para la salida de texto | |
| 
 | |
| 
 | |
Implementación del programa PLC_PRG
PROGRAM PLC_PRG
VAR_INPUT
    stInfo : STRING;
END_VAR
VAR
    inst : POU;
    bFirst : BOOL := TRUE;
END_VAR
IF bFirst THEN
    bFirst := FALSE;
    VisuElems.Visu_Globals.g_VisuEventManager.SetKeyEventHandler(inst);
END_IF                        Implementación del bloque de funciones POU
FUNCTION_BLOCK POU IMPLEMENTS VisuElems.IKeyEventHandler
(* no further declarations, no implementation code *)
                        Implementación del método VariableWritten del bloque de función POU
/// This method will be called after a key event is released.
/// RETURN:
/// TRUE - When the handler has handled this event and it should not be handled by someone else
/// FALSE - When the event is not handled by this handler
METHOD HandleKeyEvent : BOOL
VAR_INPUT
    /// Event type. The value is true if a key-up event was released.
bKeyUpEvent : BOOL;
    /// Key code
dwKey : DWORD;
    /// Modifier. Possible values:
    /// VISU_KEYMOD_SHIFT : DWORD := 1;
    /// VISU_KEYMOD_ALT : DWORD := 2;
    /// VISU_KEYMOD_CTRL : DWORD := 4;
dwModifiers : DWORD;
    /// Pointer to the client structure were the event was released
    pClient : POINTER TO VisuStructClientData;
END_VAR
VAR
END_VAR
PLC_PRG.stInfo := 'KeyEvent up: ';
PLC_PRG.stInfo := CONCAT(PLC_PRG.stInfo, BOOL_TO_STRING(bKeyUpEvent));
PLC_PRG.stInfo := CONCAT(PLC_PRG.stInfo, ', key: ');
PLC_PRG.stInfo := CONCAT(PLC_PRG.stInfo, DWORD_TO_STRING(dwKey));
PLC_PRG.stInfo := CONCAT(PLC_PRG.stInfo, ', modifier: ');
PLC_PRG.stInfo := CONCAT(PLC_PRG.stInfo, DWORD_TO_STRING(dwModifiers));
PLC_PRG.stInfo := CONCAT(PLC_PRG.stInfo, ', by: ');
PLC_PRG.stInfo := CONCAT(PLC_PRG.stInfo, SEL(pClient^.globaldata.clienttype =
    VisuElems.Visu_ClientType.Targetvisualization,'other visu', 'targetvisu'));
                        Registro de cambios de valores variables provocados por eventos de entrada
Todos los elementos de visualización que cambian el valor de una variable mediante la entrada del usuario llaman a la interfaz IValueChangedListener Con esta interfaz, los cambios de valor se pueden registrar y luego procesar mediante programación.
Aviso
 Proyecto de muestra para capturar cambios de variables mediante la entrada del usuario
Proyecto de muestra para capturar cambios de variables mediante la entrada del usuario
El proyecto de ejemplo registra los cambios en los valores de las variables activados por la entrada del usuario dentro de la visualización. En este proyecto, también encontrará la implementación del método. ValueChanged.
- Implementar un bloque de función (ejemplo: - POU) que implementa la interfaz- IValueChangedListener.- FUNCTION_BLOCK POU IMPLEMENTS VisuElems.IValueChangedListener- En el árbol de dispositivos, el Valor modificado El método se inserta debajo del bloque de función. 
- En un programa (ejemplo: PLC_PRG), implementa el código IEC que registra la interfaz. - VisuElems.g_itfValueChangedListenerManager.AddValueChangedListener(itfValueChangedListener)- PLC_PRG Obtiene todos los cambios de valor por medio de Valor modificado método. - Ahora puede registrar y procesar los cambios de valor. 
Captura de entradas en elementos con opciones de entrada
Cuando un usuario hace clic en un elemento que reacciona a la entrada (por ejemplo, un rectángulo con una configuración de entrada), se genera un evento. Puede capturar este evento en la aplicación de la siguiente manera.
- Crea un bloque de funciones que implementa la interfaz - VisuElems.IInputOnElementEventHandlerde la biblioteca- VisuElemBase.
- Pasar la instancia al administrador de eventos global - VisuElems.Visu_Globals.g_VisuEventManagerllamando al método- SetInputOnElementEventHandler.
Una visualización tiene un rectángulo que reacciona a la entrada. Por ejemplo, la alternancia de una variable se ha configurado con OnMouseDown Cuando se hace clic en el elemento con el mouse o mediante una entrada táctil, se produce un evento HandleInputOnElementEvent se eleva.
Implementación de la función VisuInit
FUNCTION VisuInit : BOOL // Set the input on element event handler VisuElems.VisuElemBase.g_VisuEventManager.SetInputOnElementEventHandler(PLC_PRG.evInputOnElementEventHandler);
Implementación del bloque de funciones POU
FUNCTION_BLOCK POU IMPLEMENTS VisuElems.VisuElemBase.IInputOnElementEventHandler (* no further declarations, no implementation code *)
Implementación del método HandleInputOnElementEvent del bloque de función POU
(* This method will be called when an input on a visualization element was executed.
RETURN:
TRUE - When the handler has handled this event and it should not be handled by someone else
FALSE - When the event is not handled by this handler*)
METHOD HandleInputOnElementEvent : BOOL
    VAR_INPUT
    event    : VisuElems.VisuStructInputOnElementEvent;
END_VAR
IF event.eType = VisuElems.VisuEnumInputOnElementType.MouseDown THEN
    SysProcessExecuteCommand('python D:\Beep.py', 0);
END_IF                      (* Content Beep.py: import winsound freq=500 duration=200 winsound.Beep(freq,duration) *)