![]() |
¿Como sincronizar dos o mas Grids?
Sigo con el detalle que he venido comentando en posts anteriores, pero ya vamos saliendo, ahora estamos en la etapa de "emebellicimiento".
Sean n Forms del mismo tipo que muestran información anual de una sucursal seleccionada, estos forms son tipo MDIChild por lo que podemos tener abiertos los que deseemos. La funcionalidad que busco es que mediante un mensaje todos los grids de esas forms (del mismo tipo) queden sincronizados de manera que si movemos cualquier cosa en uno, los demás repliquen el mismo movimiento. De esta forma podemos tener 2 o 3 forms correspondientes a diferentes sucursales y poder compara la información más fácilmente. El enfoque tiene que ir sobre el grid y no sobre el dataset ya que en algunos casos no tienen las mismas filas aunque todos tienen las mismas columnas. Espero el aguacero de ideas. Saludos |
Bueno... habría que ver mas profundamente lo que estas tratando de hacer....:rolleyes:, sin embrago, en lo que he podido entender creo que debemos tomar en cuenta lo siguiente:
Saludos...:) |
Hola.
Según entiendo los campos que se visualizan en el DBGrid son comunes pero los datos que contienen pueden ser diferentes para cada sucursal. Pero al igual que Roberto no visualizo bién el sentido de hacer la actualización basándose en el DBGrid. Suponiendo que seleccionemos la línea 'n' y sincronicemos todos los DBGrids a ese número de línea, el efecto estaría logrado, mas los datos mostrados seguramente no tengan relación alguna. (Quizá este diciendo un desvarío ya que no alcanzo a entender claramente la situación) En cuanto a como hacer la sincronización puede ser mediante mensajes, como ya sugirió Roberto, o mediante eventos. Lo que no tengo en claro es en base a que factor debe ser echa. Un saludo. |
supongamos 3 grids en sus ventanas "apiladas" (tile), tome la que quiero usar como "maestra" y veo que tiene 5 filas, las demás tienen igual 5 o menos, pero los campos son exactamente las mismas.
El comportamiento a reproducir es que si movemos el scrollbar o bien la celda con el foco en nuestro grid maestro, esto se replique en los demás grids, obviamente los que tengan menos filas o solo una quedarían en el mismo lugar, la idea principal es que en todo momento todas las grids tengan seleccionado el mismo campo ya que su estructura es idéntica. |
Cita:
Hice este código que creo que en líneas generales hace lo que buscas. MDIForm:
MDIChild emisor (maestro): Es decir el MDIForm es el encargado de posicionar los DBGrids receptores cuando es disparado el evento TGridChangeEvent en el form que contiene el DBGrid 'maestro' (Form2 en el ejemplo). Espero te ayude o al menos te hacerque alguna idea... Un saludo. Edito: (El tercer y cuarto MDIChilds están en creación automática para simplificar el ejemplo) |
La franja horaria es GMT +2. Ahora son las 00:20:14. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi