seleccionar registro de una rejilla


([N2] Centeno) #1

Hola a todos,

Tengo una rejilla incrustada en un formulario. En esta rejilla únicamente aparecen dos campos: “Nombre de la tarea” y “Descripción de la tarea”.
Desearía que un campo del citado formulario, donde esta incrustada la rejilla, contenga el valor “Nombre de la tarea” del registro que se seleccione en la rejilla.
Me podeis indicar el procedimiento ? Se trata de una manejador de evento y de una conexión de evento ? tengo que declarar una variable global ?

Muchas grácias.

Saludos


([N2] AyudaVelneo) #2

Hola Carlos:

Crea una variable local al formulario donde tengas incrustada la rejilla. La llamaremos por ejemplo “Registro_Seleccionado”.

Crea un manejador de evento al que llamaremos por ejemplo “Cambiar registro”.

Este manejador contendrá las siguientes instrucciones:

  • Interfaz:Procesar (nombre del control donde esté la rejilla"
  • Leer ficha seleccionada
  •     set("Registro_Seleccionado", #ID)
    

Sólo te faltará crear una conexión de evento con la señal “Cambio del seleccionado” asignársela al control donde tengas la rejilla y ejecutar el evento creado anteriormente.

Tienes un ejemplo en mi blog Filtrar los registros de una lista

Un saludo


([N2] Centeno) #3

Hola AyudaVelneo,

Antes de nada, muchas gracias por tu colaboración.

He seguido los pasos que indicas y el campo refleja el nombre del registro seleccionado en la rejilla (previamente, en el campo que ha de contener el valor seleccionado de la rejilla le he puesto, como contenido inicial, la variable local que he creado). Pero me ocurre lo siguiente, si en el formulario únicamente cumplimento el campo que contiene el valor de la variable local y acepto, me aparece el mensaje: “la ficha está vacia” y “rellene algún campo”. A pesar de que el campo contiene un valor que, por cierto, va cambiando a medida que me desplazo por la rejilla, es como si el formulario no lo reconociera.

Puedes darme alguna pista de lo que estoy haciendo mal ?

Nuevamente grácias.


([N2] AyudaVelneo) #4

Hola Carlos:

Es normal que el valor cambie al desplazarte por la rejilla. Ten en cuenta que en la conexión de evento has puesto la señal “Item: Cambio del seleccionado” por lo que cada vez que te muevas por la rejilla se ejecutará el manejador de evento asociado.

En cuanto al mensaje que te aparece… ¿el formulario es para un alta? ¿Como es el id?

Un saludo


([N3] pacosatu) #5

Hola Vila.

Yo en mi caso, usando una rejilla no editable, he tenido que capturar, además del “Item: cambio de seleccionado” el evento “Item: simple-click”. Con el primer evento funciona bien cuando se mueve el puntero de la rejilla con el teclado, pero usando el ratón el comportamiento no es el esperado. Lo solucioné capturando el segundo evento.
Además es necesario igualmente capturar el evento “Gana foco” de la Rejilla.

Saludos
Paco Satué


([N1] wikan) #6

Creo que item: Cambio seleccionado funciona bien si usas.
Interfaz, Procesar( TODOS )
Leer ficha seleccionada

Poniendo todos…no los seleccionados.


([N3] ereitmann) #7

El evento “item cambio de seleccionado” tiene algunos Bugs con la versión 7.14, en las rejillas normales (no así en los casilleros) en algunas circunstancias . ejemplo si estas posicionado en el ultimo registro de la rejilla y lo eliminas, o en el primero y lo eliminas, entonces el evento no se produce y el refresco de los demás procesos tampoco, esta en el bugman


([N3] pacosatu) #8

Hola.

Gracias Manuel.
Efectivamente, tienes razón, procesando TODOS funciona bien, y ya nos es necesario capturar “Item: simple-click”.

@ereitmann
No solamente existe ese bug. He llegado a la conclusión de que, de momento, es mejor no marear mucho la perdiz con las Rejillas.

Tampoco sería conveniente, de moemnto, diseñar un proceso que haga cambios en una tabla cuya selección de la ficha o lista dependa de eventos en los que esté implicada una rejilla, por los Bugs que estamos viendo.

Saludos
Paco Satué


([N2] Centeno) #9

Muchas gracuas por vuestra aportación. Consiedrando el problema que apuntaís del bug, creo que será mejor optar por otra solución.

Nuevamente gracias y saludos.