# Capturar señal desde rejilla insertada en formulario

**URL:** <https://foros.velneo.com/t/capturar-senal-desde-rejilla-insertada-en-formulario/8760>\
**Category:** Velneo\
**Created:** [12 Marzo, 2016 13:48 UTC](https://foros.velneo.com/t/capturar-senal-desde-rejilla-insertada-en-formulario/8760 "2016-03-12T13:48:04Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![alberto\_nudman](https://avatars.discourse-cdn.com/v4/letter/a/e68b1a/32.png) [@alberto\_nudman](https://foros.velneo.com/u/alberto_nudman)\
**Post date:** [12 Marzo, 2016 13:48 UTC](https://foros.velneo.com/t/capturar-senal-desde-rejilla-insertada-en-formulario/8760/1 "2016-03-12T13:48:04Z")

</div>

Amigos,

Tengo un formulario con dos rejillas insertadas mediante sendas vistas de datos.  
Quiero que al realizar una acción, se dispare un proceso que inserte un dato en la segunda.

Lo lógico sería hacer esto mediante un botón dentro del formulario, para que un manejador de evento lea el dato de la primera rejilla, haga sus cosas, e inserte el resultado en la segunda. Sin embargo, por motivos estéticos, me complica poner un botón en el formulario, y me gustaría que esto sucediera al seleccionar una acción del menú de la primera rejilla.

En lo que estoy topando es que si pongo un conector de evento en el formulario, de tipo “Señal disparada”, asociado a la vista de datos, no recoge el evento, y por tanto, nada sucede.

¿Hay alguna forma que una rejilla en un formulario le “avise” a su formulario padre que hubo un evento?

Muchas gracias

---

<div class="post-metadata">

**Author:** ![melens69](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/melens69/32/3881_2.png) [@melens69](https://foros.velneo.com/u/melens69)\
**Post date:** [12 Marzo, 2016 19:48 UTC](https://foros.velneo.com/t/capturar-senal-desde-rejilla-insertada-en-formulario/8760/2 "2016-03-12T19:48:15Z")

</div>

Buenas, no soy muy experimentado en velneo, pero creo recordar haber hecho algo parecido anteriormente.

Prueba a crear una conexión de evento sobre la primera vista de datos (señal: item simple-click). Como la señal la lanzas del mismo formulario que tiene las dos vistas de datos, creo que no tendras problemas al pasarle el dato a la segunda vista de datos.

En el manejador de eventos debes de usar la instrucción "Interfaz: procesar (y que el control sea la primera vista de datos).  
En la misma instrucción te pregunta qué fichas quieres procesar, si las seleccionadas o todas. Así podrás obtener el valor de la rejilla incrustada.

Saludos.

---

<div class="post-metadata">

**Author:** ![pacosatu](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/pacosatu/32/5131_2.png) [@pacosatu](https://foros.velneo.com/u/pacosatu)\
**Post date:** [14 Marzo, 2016 23:17 UTC](https://foros.velneo.com/t/capturar-senal-desde-rejilla-insertada-en-formulario/8760/3 "2016-03-14T23:17:08Z")

</div>

Hola Spicer.

Planteas una cuestión interesante, que en otros entornos de programación sería algo trivial, pero en Velneo no está bien resuelto.

- Las señales emitidas desde una Acción de la Rejilla solo pueden ser capturadas por la propia Rejilla.
- Desde una Rejilla (Vista de Datos) no se puede ejecutar un Manejador de evento del formulario contenedor y mucho menos un Manejador de otra Vista de Datos.

Para tu caso concreto, te cuento lo que yo hago, que como siempre es la típica chapucilla a la que recurrimos con javascript:

- Ejecuta la Acción del botón de la Rejilla que Dispara la señal
- Captura el evento Dispara señal desde la Rejilla asociando un Manejador de evento
- Desde el Manejador de evento de la Rejilla ejecuta un Manejador Javascript que: obtenga la referencia al formulario contenedor parentDataView() y ejecuta la función startTimer() → parentDataView().startTimer(100).
- En el evento Timer del formulario contenedor ya se puede colocar el código nativo Velneo que queramos:

theRoot.dataView().stopTimer() ← Este código javascript es necesario para detener el Timer  
Interfaz: Procesar (Lista1, todas) ← Ya podemos procesar la Rejilla desde el formulario mediante una señal de dicha Rejilla  
…

Pruébalo  
Saludos  
Paco Satué

---

<div class="post-metadata">

**Author:** ![alberto\_nudman](https://avatars.discourse-cdn.com/v4/letter/a/e68b1a/32.png) [@alberto\_nudman](https://foros.velneo.com/u/alberto_nudman)\
**Post date:** [16 Marzo, 2016 02:08 UTC](https://foros.velneo.com/t/capturar-senal-desde-rejilla-insertada-en-formulario/8760/4 "2016-03-16T02:08:27Z")

</div>

Estimado Paco,

Efectivamente, creo que es una real tontera, que un form contenedor no pueda ‘reconocer’ las señales emitidas desde sus subobjetos. Sin embargo… ¡Qué buena chapucilla! de verdad, mil gracias, jamás se me hubiera ocurrido. Lo probaré apenas tenga minuto.

Una pregunta… si entendí bien, en el manejador de evento vJavaScript de la rejilla, debo poner sólo dos líneas, que serían  
parentDataView().startTimer(100)  
theRoot.dataView().stopTimer()

…¿estoy bien?

Mil gracias, de nuevo. Debieran investirte como Presidente Honorario, o algo por el estilo. Yo al menos apoyo la candidatura.

---

<div class="post-metadata">

**Author:** ![pacosatu](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/pacosatu/32/5131_2.png) [@pacosatu](https://foros.velneo.com/u/pacosatu)\
**Post date:** [16 Marzo, 2016 08:08 UTC](https://foros.velneo.com/t/capturar-senal-desde-rejilla-insertada-en-formulario/8760/5 "2016-03-16T08:08:00Z")

</div>

Hola Spicer.

Gracias por la propuesta de investidura, solo pretendo animar un poco el foro.

En cuanto al código, en la Rejilla solo pones en marcha el Timer del formulario con parentDataView().startTimer(100). En el formulario es donde lógicamente detienes el Timer en la primera línea del manejador con theRoot.dataView().stopTimer(), por supuesto llamando a otro Manejador javascript.

¿Si tienes varios controles, cómo identificas la Rejilla que ha emitido la Señal al estilo de EVENT\_SENDER\_ID?  
Puedes fijar una variable local del formulario con el Nombre de la Rejilla con parentDataView().root().setVar(“EVENT\_CONTROL\_ID”, “Lista1”)

Saludos  
Paco Satué

---

<div class="post-metadata">

**Author:** ![tic-software](https://avatars.discourse-cdn.com/v4/letter/t/c4cdca/32.png) [@tic-software](https://foros.velneo.com/u/tic-software)\
**Post date:** [16 Marzo, 2016 08:29 UTC](https://foros.velneo.com/t/capturar-senal-desde-rejilla-insertada-en-formulario/8760/6 "2016-03-16T08:29:39Z")

</div>

Tienes otra posibilidad parecida spicer, mas “sucia” pero que funcionaría.

Tienes un manejador en el form llamado PROCESO que es el que quieres llamar desde la rejilla.

Te creas un botón invisible con ejecutar manejador PROCESO y lo llamas BTN\_PROCESO.

Desde el manejador js de la rejilla haces:

theRoot.dataView().parentDataView().control(“BTN\_PROCESO”).click();

Ten en cuenta una cosa, si la rejilla está en un alternador de vista, parentDataView() hará referencia al alternador y no al form superior, en este caso deberás usar parentDataView().parentDataView() para acceder al formulario superior.

La forma que comenta Paco se basa en el mism concepto pero es más limpia, ya que no hay que poner un botón que no viene a cuento

---

<div class="post-metadata">

**Author:** ![alberto\_nudman](https://avatars.discourse-cdn.com/v4/letter/a/e68b1a/32.png) [@alberto\_nudman](https://foros.velneo.com/u/alberto_nudman)\
**Post date:** [17 Marzo, 2016 14:01 UTC](https://foros.velneo.com/t/capturar-senal-desde-rejilla-insertada-en-formulario/8760/7 "2016-03-17T14:01:10Z")

</div>

Estimados Paco e Inforitc,

Muchas gracias por vuestra inestimable ayuda, estoy seguro que con estos tips me las arrreglo bien

Saludos,
