Sincronizar dos Rejillas


([N4] cfidalgo) #1

Tendo una tabla maestra y otra submaestra. He creado un formulario con dos objetos cada uno de ellos es una busqueda y salida de rejilla. En la primera rejilla lanzo un evento (Item: cambio de seleccion) en el que cargo en una variable el id de la tabla, con esta variable realizado la busqueda en la segunda rejilla. Pero no consigo sincronizar estas dos rejillas.
Gracias.
Cesar Fidalgo.


([N1] wikan) #2

Para nada soy experto, pero creo que lo harías con eventos y los comandos de interfaz.
En tal caso, creo una conexión a evento y dentro del evento, con los comandos de interfaz ejecuta
Interfaz: Recalcular control (Rejilla submaestra)
Yo lo tengo echo con dos calendarios y una rejilla, no debe ser distinto.


([N4] jarboleya1) #3

Hola César,
Tras modificar la variable añade una línea de proceso con la instrucción "Interfaz: Recalcula control" sobre la 2ª rejilla. Eso disparará de nuevo la segunda búsqueda y ... la debeberías ver refrescada.
Saludos.


([N4] cfidalgo) #4

Sigue sin funcionar. Como he explicado tengo un formulario con dos controles.
1.- control 1: (obeto 1:Busqueda-1) (Obejeto 2: ReJilla-1) -----------Tabla 1
2.-control 2: (obejto 1:Busqueda-2) (objeto 2: ReJilla-2) -----------Tabla 2 (submaestra tabla 1)
En la rejilla 1 Lanzo un evento: (item cambio seleccionado) en el que en una variable cargo el ID de la TABLA-1
Variable que una es la busqueda-2
En el Formulario Lanzo un evento: (inicializado) Interfaz recalcula control.
Y no consigo que funcione. ¿Que se me olvida?
Muchas Gracias.
Cesar Fidalgo.


([N1] wikan) #5

Como lo tienes no lo consigues por que el evento que usas para intentar refrescar es Iniciado, y el formulario ya lo está.
En el mismo evento donde guardas la variable, ejecuta recalcular el otro control.


([N4] jarboleya1) #6

Gracias manugc,
Además de los que te comenta manug que es correcto, en el evento donde cambias la variable debes lanzar el refresco. Es decir, cuando cambia el item seleccionado y cambias el valor de la variable debes lanzar el refresco, en el mismo momento.
La variable con la que resuelves la búsqueda-2 y que modificas en el evento (item cambio seleccionado ¿Es una variable global en memoria?
Saludos.


([N4] cfidalgo) #7

Donde lanzo el evento de cargar la variable es en la rejilla-1 y hay no puedo lanzar interfaz:recalcular control ___ rejilla 2
si, es una variable global en memoria.
Gracias.


([N1] wikan) #8

Es un evento propio de la rejilla? En tal caso, supongo que tienes razón por que es algo propio de la rejilla
Pero si creas un evento en el formulario y se lo asignas a la rejilla??


([N4] fgutierrez.velneo) #9

Creo que debes ver ejemplos como vTPV y vBugMan. En ambos tienes formularios con eventos para la sincronización.

Tal como lo planteas, entiendo que estás creando los eventos como subobjeto de las rejillas. Para lo que quieres hacer, puedes ver en ambos ejemplos, que los eventos están en el formulario, desde el que tienes acceso a ambos controles objeto y puedes ver cuando se produce un cambio de item seleccionado y forzar el refresco del otro control.

En vTPV tienes ejemplos de ese tipo, y en vBugMan alguno más complejo en el que usa señales como drop finalizado para forzar los refrescos. Basta que busques en el inspector de objetos los formularios con evento.s

Espero haberte ayudado.

Un saludo.