Conexión de evento
Última actualización
Última actualización
El subobjeto conexión de evento permite conectar un manejador de evento, etc.
Para crear una conexión de evento hemos de pulsar el botón en el panel de subobjetos de Velneo vDevelop.
Sus propiedades son:
Etiqueta alfanumérica que identifica al objeto. Este identificador será el que se usa para referenciarlo en los inspectores y en las propiedades de otros objetos.
Etiqueta alfanumérica que servirá como descriptor de la conexión de evento. Es el texto que se presentará al usuario final de la aplicación para referenciar la conexión de evento. Podemos definir una etiqueta por cada idioma presente en el proyecto.
Podemos definir el estilo privado que limita el acceso del usuario final al objeto desde puntos donde no se haya programado el acceso al mismo.
Esta propiedad nos permite documentar el uso de la conexión de evento.
Este parámetro desplegará la lista con todos los objetos/controles accesibles desde el origen actual. Si algún sub-objeto contiene a su vez otros controles, junto a su identificador aparecerá un nodo que podremos desplegar para acceder a los mismos.
Podremos seleccionar por tanto, tanto el propio objeto como cualquier objeto/subobjeto accesible desde el objeto actual. Por tanto, no solamente podremos atrapar señales disparadas dentro del propio objeto sino desde cualquier subobjeto contenido en el mismo o incluso del marco principal del proyecto, excepto la señal acción disparada, que solamente puede ser atrapada desde el propio objeto que la emite.
Esta propiedad nos permite seleccionar qué suceso es el que desencadena el disparo del manejador de evento. Según el tipo de objeto o subobjeto estarán serán funcionales unas señales u otras. Las señales disponibles y los objetos o subobjetos en los que son funcionales:
El manejador de evento será disparado cuando el objeto o sub-objeto asociado a la conexión de evento gane el foco.
El manejador de evento será disparado cuando el objeto o sub-objeto asociado a la conexión de evento pierda el foco. En rejillas editables, debemos tener en cuenta lo siguiente: Para que se inicie la edición de una celda tiene que ganar foco, por lo que la rejilla pierde foco. Así que se disparará la señal de pérdida de foco cada vez que iniciemos la edición en cada celda individual.
No se deben mostrar mensajes o formularios en los manejadores de evento disparados con esta señal de pérdida foco, porque eso produce efectos secundarios ya que a su vez estamos generando nuevas pérdidas de foco.
En las rejillas editables los eventos de ganancia y de pérdida de foco tienen un comportamiento particular: la señal de ganancia de foco se emite cuando se entra en la edición de cada columna y la de pérdida de foco cuando pierde el foco la rejilla. Gracias a que el de pérdida de foco no se produce en cada entrada en edición, podemos controlar la ejecución del manejador de evento asociado a la ganancia de foco para que solo se realice la primera vez que gana foco, utilizando una variable local booleana que se pondrá a 1 cuando se ejecuta el evento de ganancia de foco y a 0 cuando se ejecute la pérdida de foco de la rejilla.
El manejador de evento será disparado cuando el control asociado a la conexión de evento deje de estar visible.
El manejador de evento será disparado cuando el control asociado a la conexión de evento se haga visible.
Nota |
No se deben usar comandos que generen interfaz en manejadores de evento disparados con esta señal. |
El manejador de evento será disparado cuando, estando el foco en el objeto o sub-objeto asociado a la conexión de evento , se pulse una tecla.
El manejador de evento será disparado cuando, estando el foco en el objeto o sub-objeto asociado a la conexión de evento , se suelte una tecla pulsada previamente.
El manejador de evento será disparado cuando se haga doble clic con el botón del ratón sobre el objeto o sub-objeto asociado a la conexión de evento.
El manejador de evento será disparado cuando se pulse un botón del ratón sobre el objeto o sub-objeto asociado a la conexión de evento.
El manejador de evento será disparado cuando se suelte un botón del ratón (pulsado previamente) sobre el objeto o sub-objeto asociado a la conexión de evento .
El manejador de evento será disparado cuando se mueva el ratón sobre el objeto o sub-objeto asociado a la conexión de evento, dependiendo del objeto o sub-objeto esta señal solamente se disparará manteniendo pulsado un botón del ratón.
El manejador de evento será disparado cuando cambie el valor del sub-objeto editado en un control de un formulario, o en una columna editable de una rejilla editable. Esta señal solamente se dispara cuando es el usuario quien cambia el contenido del control escribiendo directamente sobre el mismo, pero no cuando modificamos el mismo de forma externa (desde otro manejador de evento, con una acción de tipo ficha: localizar maestro, etc.).
El manejador de evento será disparado cuando se mueva la ventana donde el objeto o sub-objeto asociado a la conexión de evento se encuentre contenido.
El manejador de evento será disparado cuando se modifique el tamaño de la ventana donde el objeto o sub-objeto asociado a la conexión de evento se encuentre contenido.
Conexión de evento específico para objetos o subcontroles de listas (rejillas, casilleros, etc.) y formularios. El manejador de evento se disparará cuando cambie el elemento seleccionado en el objeto de lista asociado a a la conexión de evento.
En objetos de lista, el origen del evento será la ficha de origen. En el caso de que queramos acceder a la ficha de destino en el manejador de evento usaremos el comando de instrucción Leer ficha seleccionada.
En formularios, la señal se disparará después de la inicialización de la ficha y en el cambio de ficha mostrada. Éste último caso es útil en visualizaciones sincronizadas (multivista, etc.) en las que cambia la ficha y permanece el formulario construido inicialmente.
Conexión de evento específico para formularios con origen. Esta señal sería previa a la ítem: cambio de seleccionado y permitirá al programador realizar acciones sobre el registro antes de que sea sustituido en el objeto por otro. Por ejemplo, detectar si ha habido cambios en el registro y guardarlos o preguntar al usuario por la acción a realizar.
Se dispara cuando el objeto ha sido inicializado. Esta señal solamente puede ser atrapada desde el propio objeto, no puede ser atrapada desde otros objetos. Esta señal es disparada después de construirse el objeto.
Se dispara antes de inicializarse el objeto. Con esta señal, podremos disparar manejadores de evento que realicen operaciones antes de que el objeto sea presentado al usuario. Esta señal solamente puede ser atrapada desde el propio objeto, no puede ser atrapada desde otros objetos. Dado que la señal se dispara antes de crearse el objeto, no podremos usar en el manejador de evento que se dispare instrucciones que afecten a la interfaz, ya que no se ha construido todavía.
Esta señal es específica para el marco principal del proyecto. Se disparará cuando el marco de la aplicación sea cerrado por cualquier método o acción del usuario, tanto a través del teclado como usando el ratón.
Esta señal es específica para el marco principal del proyecto. El manejador de evento será disparado cuando se cierre una vista y antes de que ésta sea cerrada.
Esta señal es específica para el marco principal del proyecto. El manejador de evento será disparado cuando se active una vista dentro del marco.
Esta señal es específica para el marco principal del proyecto. El manejador de evento será disparado cuando se añada una nueva una vista dentro del marco.
Esta señal es específica para el marco principal del proyecto. El manejador de evento será disparado cuando se cierra una nueva una vista dentro del marco, después de ser cerrada.
El manejador de evento asociado a la conexión de evento se disparará de forma periódica, según un tiempo que deberá ser configurado en el objeto asociado a la conexión de evento. Debemos tener en cuenta que los timers disparan eventos que fuerzan el refresco de los controles, así que, si coincide que estamos escribiendo en un control de edición de un texto y cuando pulsamos la barra espaciadora para incluir un espacio en blanco se dispara el timer, como éste refresca los controles, al refrescarlo eliminará ese espacio en blanco no significativo.
El manejador de evento asociado a la conexión de evento se disparará cuando el botón que hayamos especificado en la conexión de evento sea pulsado.
El manejador de evento asociado a la conexión de evento se disparará cuando se lance una acción concreta. Esta señal solamente puede ser atrapada si se lanza en el contexto del objeto, no puede ser atrapada desde otros objetos. Por ejemplo, en un formulario podremos atrapar las acciones que se disparen desde botones del formulario, o desde menús incluidos en botones del mismo, etc. En una rejilla, podremos atrapar las acciones que se disparen desde la toolbar asociada a la misma.
El manejador de evento asociado a la conexión de evento se disparará cuando se active un elemento del objeto o sub-objeto asociado a la conexión de evento.
El manejador de evento asociado a la conexión de evento se disparará cuando se haga un clic sobre un elemento del objeto o sub-objeto asociado a la conexión de evento.
El manejador de evento asociado a la conexión de evento se disparará cuando se haga doble clic sobre un elemento del objeto o sub-objeto asociado a la conexión de evento.
Señal específica para objetos que tenga activada la funcionalidad de drag & drop. Disparará el manejador de evento asociado a la conexión de evento cuando haya finalizado el drop.
Solamente funcional en rejillas editables. El manejador de evento asociado a la conexión se disparará cuando se inicie la edición de un registro en la rejilla.
Solamente funcional en rejillas editables. El manejador de evento asociado a la conexión se disparará con posterioridad a la aceptación de la edición de un registro en la rejilla.
Solamente funcional en rejillas editables. El manejador de evento asociado a la conexión se disparará con posterioridad a la cancelación de la edición de un registro en la rejilla.
Solamente funcional en rejillas editables. El manejador de evento asociado a la conexión se disparará cuando antes de finalizar la edición (guardando cambios) de un registro en la rejilla. Usaremos esta señal si queremos, por ejemplo, hacer algún tipo de comprobación previa al alta/modificación de la ficha.
Solamente funcional en rejillas editables. El manejador de evento asociado a la conexión se disparará cuando antes de hacerse efectiva la cancelación de la edición de un registro en la rejilla. Usaremos esta señal si queremos, por ejemplo, hacer algún tipo de comprobación previa a la cancelación del alta/modificación de la ficha.
En el manejador de evento que se dispara en señales pre-aceptada, pre-cancelada, debemos evitar mostrar mensajes puesto que generará problemas con el foco cuando estamos en edición (por ejemplo si usamos un comando set retorno = NO).
Es en estas señales de edición pre-aceptada y pre-cancelada donde podremos utilizar el comando de instrucción set retorno proceso = NO, ya que en este punto la edición sigue activa.
Solamente váida para el control visor html. El manejador de evento asociado a la conexión se disparará cuando cambie el contenido de un control editable dentro de la página web que se está mostrando en el visor html.
Solamente funcional en el control visor html. El manejador de evento asociado a la conexión se disparará cuando pulsamos un enlace.
Para que un control HTML lance esa señal, será necesario ejecutaren el evento inicializado del formulario donde se incluya un manejador de evento JavaScript con un código similar al siguiente:
// Atrapamos todos los clics en enlaces del control visor html
menu = theRoot.dataView().control( “ID_CONTROL” );
menu.setLinkDelegationPolicy( VCWebView.DelegateAllLinks );
Con la funcion setLinkDelegationPolicy le decimos al navegador cómo queremos que gestione los link pulsados:
DontDelegateLinks: en este modo el navegador gestiona todos los enlaces.
DelegateExternalLinks: en este modo el navegador gestiona los enlaces internos (del sistema de ficheros local) y emite la señal LinkClicked(url) para los externos.
DelegateAllLinks: en este modo emite la señal LinkClicked(url) para todos los enlaces.
El modo por defecto es DontDelegateLinks. Si el navegador gestiona un enlace emite la señal LoadStarted y, si no, emite la señal LinkClicked(url), en cuyo caso hay que cargar la página en el manejador del evento o realizar la acciones que consideremos oportunas.
El valor del enlace activado (url) se puede leer en el valor 1 de la variables local especial tipo array EVENT_PARAMS.
Solamente funcional en el control visor html. El manejador de evento asociado a la conexión se disparará cuando comience la carga de una página.
Solamente funcional en el control visor html. El manejador de evento asociado a la conexión se disparará durante la carga de la página.
Solamente funcional en el control visor html. El manejador de evento asociado a la conexión se disparará al finalizar la página.
Solamente funcional en el control visor html. El manejador de evento asociado a la conexión se disparará cuando cambie la URL que se está mostrando.
NOTA: No todas las señales estarán disponibles para todos los objetos o subobjetos. Cuando programemos una conexión de evento las señales disponibles variarán en función del objeto o subobjeto que asociemos a la misma.
Las señales pueden ser leídas en los manejadores de eventos para ampliar información sobre su uso.
1) Debemos ser conscientes de que, cuando se ejecuta un manejador de evento, no se dispararán otras señales y sus manejadores de evento, ya que podría dar lugar a recursividad o ejecuciones en cascada no deseadas.
Lo veremos más claro con un ejemplo:
Hemos programado un manejador de evento que se dispara con la señal “gana foco” asociada a un control de un formulario, y programamos otro manejador de evento que lleva el foco a dicho control con el comando interfaz: establecer foco.
Según lo dicho antes, al ejecutar el manejador de evento que establece foco en el control, no se disparará la señal de ganancia de foco, por lo tanto, si queremos que se ejecute el manejador de evento asociado a la misma, lo único que tendremos que hacer es, en el manejador de evento que establece el foco, disparar el otro manejador de evento con el comando Interfaz: Ejecutar evento.
2) Si tenemos programadas varias conexiones de evento asociadas a un mismo control y con la misma señal, solamente se disparará la primera de ellas.
Por ejemplo, si hemos programado varias conexiones de evento del tipo “gana foco” sobre el mismo control, sólo se lanza la primera de ellas y no el resto.
Lo que se podría hacer es declarar una única señal del tipo “gana foco” que dispare un manejador de evento que lance todos los manejadores que se quieran ejecutar al ganar foco el control.
A continuación mostramos una lista de las señales que son funcionales en los distintos objetos y sub-objetos de aplicación de Velneo.
Acción disparada On hide On show Post-inicializado Pre-inicialización Timer Ventana movida Ventana redimensionada Ítem: activado Ítem: cambio de seleccionado Ítem: doble clic Ítem: simple clic
Acción disparada Drop finalizado Gana foco On hide On show Pierde foco Post-inicializado Pre-Inicialización Tecla pulsada Tecla soltada Ventana movida Ventana redimensionada Ítem: activado Ítem: cambio de seleccionado Ítem: doble-click Ítem: simple-click
Acción disparada On hide On show Post-inicializado Pre-Inicialización Ventana movida Ventana redimensionada Ítem: cambio de seleccionado
Acción disparada Drop finalizado Gana foco On hide On show Pierde foco Post-inicializado Pre-Inicialización Tecla pulsada Tecla soltada Timer Ventana movida Ventana redimensionada Ítem: activado Ítem: cambio de seleccionado Ítem: doble-click Ítem: simple-click
Acción disparada Drop finalizado Gana foco On hide On show Pierde foco Post-inicializado Pre-Inicialización Tecla pulsada Tecla soltada Timer Ventana movida Ventana redimensionada Ítem: activado Ítem: cambio de seleccionado
Acción disparada On hide On show Post-inicialización Pre-Inicialización Timer Item: Cambio de seleccionado (para formularios con origen) Item: Pre-cambio de seleccionado (para formularios con origen)
Barra de progreso
On hide On show Ratón: botón doble-click Ratón: botón pulsado Ratón: botón soltado Ratón: movimiento Ventana movida Ventana redimensionada
Botón
Botón pulsado Gana foco On hide On show Pierde foco Ratón: botón doble-click Ratón: botón pulsado Ratón: botón soltado Ratón: movimiento Tecla pulsada Tecla soltada Ventana movida Ventana redimensionada
Botón de check
Gana foco On hide On show Pierde foco Ratón: botón doble-click Ratón: botón pulsado Ratón: botón soltado Ratón: movimiento Tecla pulsada Tecla soltada valueChanged Ventana movida Ventana redimensionada
Botón de radio
Gana foco On hide On show Pierde foco Ratón: botón doble-click Ratón: botón pulsado Ratón: botón soltado Ratón: movimiento Tecla pulsada Tecla soltada valueChanged Ventana movida Ventana redimensionada
Caja de formularios
On hide On show Ventana movida Ventana redimensionada Item: Cambio de seleccionado
Caja de grupo
On hide On show Ratón: botón doble-click Ratón: botón pulsado Ratón: botón soltado Ratón: movimiento Ventana movida Ventana redimensionada
Caja de texto y caja de texto enriquecido
Gana foco On hide On show Pierde foco Tecla pulsada Tecla soltada Value changed Ventana movida Ventana redimensionada
Calendario
Gana foco On hide On show Pierde foco Ratón: botón doble-click Ratón: botón pulsado Ratón: botón soltado Ratón: movimiento Tecla pulsada Tecla soltada valueChanged Ventana movida Ventana redimensionada
ComboBox
Gana foco On hide On show Pierde foco Tecla pulsada Tecla soltada Ventana movida Ventana redimensionada Ítem: activado Ítem: cambio de seleccionado
Controles SVG
Gana foco On hide On show Pierde foco Tecla pulsada Tecla soltada Ratón: botón doble-click Ratón: botón pulsado Ratón: botón soltado Ratón: movimiento Tecla pulsada Tecla soltada valueChanged (solamente para botones SVG tipo Toggle y Slide) Ventana movida Ventana redimensionada
Data Catcher Edit
Gana foco On hide On show Pierde foco Ratón: botón doble-click Ratón: botón pulsado Ratón: botón soltado Ratón: movimiento Tecla pulsada Tecla soltada valueChanged Ventana movida Ventana redimensionada
Deslizador
Gana foco On hide On show Pierde foco Ratón: botón doble-click Ratón: botón pulsado Ratón: botón soltado Ratón: movimiento Tecla pulsada Tecla soltada valueChanged Ventana movida Ventana redimensionada
Dial
Gana foco On hide On show Pierde foco Ratón: botón doble-click Ratón: botón pulsado Ratón: botón soltado Ratón: movimiento Tecla pulsada Tecla soltada valueChanged Ventana movida Ventana redimensionada
Dibujo
On hide On show Ratón: botón doble-click Ratón: botón pulsado Ratón: botón soltado Ratón: movimiento Ventana movida Ventana redimensionada
Edición alfabética, hora, fecha, fecha-hora, numérica, senda fichero senda directorio y fórmula
Gana foco On hide On show Pierde foco Ratón: botón doble-click Ratón: botón pulsado Ratón: botón soltado Ratón: movimiento Tecla pulsada Tecla soltada valueChanged Ventana movida Ventana redimensionada
Imagen SVG
On hide On show Ratón: botón doble-click Ratón: botón pulsado Ratón: botón soltado Ratón: movimiento Ventana movida Ventana redimensionada
Layout, espaciador fijo, spaciador expandible y e
Ninguna
ListBox
Ítem: cambio de seleccionado
Manómetro
On hide On show Ratón: botón doble-click Ratón: botón pulsado Ratón: botón soltado Ratón: movimiento Ventana movida Ventana redimensionada
Menú arbolado
On hide On show Ratón: botón doble-click Ratón: botón pulsado Ratón: botón soltado Ratón: movimiento Ventana movida Ventana redimensionada
Nombre de campo
On hide On show Ratón: botón doble-click Ratón: botón pulsado Ratón: botón soltado Ratón: movimiento Ventana movida Ventana redimensionada
Objeto dibujo
Gana foco On hide On show Pierde foco Ratón: botón doble-click Ratón: botón pulsado Ratón: botón soltado Ratón: movimiento Tecla pulsada Tecla soltada Value changed Ventana movida Ventana redimensionada
Pila de formularios
On hide On show Ventana movida Ventana redimensionada Item: Cambio de seleccionado
Reloj
On hide On show Ratón: botón doble-click Ratón: botón pulsado Ratón: botón soltado Ratón: movimiento Ventana movida Ventana redimensionada
Rueda
Gana foco On hide On show Pierde foco Ratón: botón doble-click Ratón: botón pulsado Ratón: botón soltado Ratón: movimiento Tecla pulsada Tecla soltada valueChanged Ventana movida Ventana redimensionada
Separador formularios
On hide On show Ventana movida Ventana redimensionada Item: Cambio de seleccionado
Splitter
On hide On show Ventana movida Ventana redimensionada
Termómetro
On hide On show Ratón: botón doble-click Ratón: botón pulsado Ratón: botón soltado Ratón: movimiento Ventana movida Ventana redimensionada
Texto estático
On hide On show Ratón: botón doble-click Ratón: botón pulsado Ratón: botón soltado Ratón: movimiento Ventana movida Ventana redimensionada
Visor HTML
Contents changed Gana foco Link clicked Load finished Load progress Load started On hide On show Pierde foco Tecla pulsada Tecla soltada Ratón: botón doble-click Ratón: botón pulsado Ratón: botón soltado Ratón: movimiento Tecla pulsada Tecla soltada Url changed Ventana movida Ventana redimensionada
Vista de datos
Las señales disponibles serán las que tenga disponibles el objeto usado.
Acción disparada Gana foco On hide On show Pierde foco Post-inicializado Pre-inicialización Tecla pulsada Tecla soltada Timer Ventana movida Ventana redimensionada
Gana foco On hide On show Pierde foco Ratón: botón doble-click (se dispara solamente cuando realizamos la acción en el margen blanco del gráfico y no sobre los elementos que lo componen). Ratón: botón pulsado (se dispara solamente cuando realizamos la acción en el margen blanco del gráfico y no sobre los elementos que lo componen). Ventana movida Ventana redimensionada
Las señales de los informes solamente serán funcionales cuando estos generen interfaz, es decir, en su presentación preliminar. Acción disparada On hide On show Post-inicializado Pre-inicialización Ventana movida Ventana redimensionada.
Acción disparada Drop finalizado Gana foco On hide On show Pierde foco Post-inicializado Pre-Inicialización Tecla pulsada Tecla soltada Timer Ventana movida Ventana redimensionada Ítem: activado Ítem: cambio de seleccionado Ítem: doble-click Ítem: simple-click
Acción disparada Gana foco On hide On show Pierde foco Post-inicializado Pre-inicialización Tecla pulsada Tecla soltada Timer Ventana movida Ventana redimensionada Ítem: activado Ítem: cambio de seleccionado
On close Post-inicializado Pre-Inicialización Pre-vista cerrada Vista activada Vista añadida Vista cerrada
Acción disparada On hide On show Post-inicializado Pre-inicialización Ventana movida Ventana redimensionada Ítem: activado Ítem: cambio de seleccionado Ítem: doble click Ítem: simple click
Acción disparada Drop finalizado Edición aceptada Edición cancelada Edición iniciada Gana foco (y a nivel de columna, en columnas editables de rejillas editables). On hide On show Pierde foco Post-inicializado Pre-edición aceptada Pre-edición cancelada Pre-inicialización Tecla pulsada (Hay dos excepciones: No se disparará con las teclas Insert ni Supr. Esto es debido a que Se procesan internamente no emitiendo la señal de tecla pulsada para garantizar el correcto funcionamiento del control.) Tecla soltada Timer Ventana movida Ventana redimensionada Ítem: activado Ítem: cambio de seleccionado Ítem: doble-click Ítem: simple-click
Gana foco On hide On show Pierde foco Ratón: botón doble-click Ratón: botón pulsado Ratón: movimiento Tecla pulsada Tecla soltada Ventana movida Value changed
Acción disparada Gana foco On hide On show Pierde foco Post-inicializado Pre-inicialización Tecla pulsada Tecla soltada Ventana movida Ventana redimensionada Ítem: cambio de seleccionado Ítem: doble click Ítem: simple click
Acción disparada Drop finalizado Gana foco On hide On show Pierde foco Post-inicializado Pre-Inicialización Ratón: botón doble-click Ratón: botón pulsado Ratón: botón soltado Ratón: movimiento Tecla pulsada Tecla soltada Timer Ventana movida Ventana redimensionada Ítem: cambio de seleccionado Ítem: activado Ítem: simple-click Ítem: doble-click