PDA

Ver la Versión Completa : Mostrar relación N:N en grid diferenciando los grupos


kuan-yiu
02-07-2007, 19:33:01
He tardado un montón en escribir este mensaje porque no sabía qué título ponerle, espero que este sea comprensible.
Gracias de antemano a todos.

Tengo una tabla que guarda una relación "N a N" (relaciona facturas externas con facturas internas), esta tiene un índice por el campo "cod_grupo" que puede ser el mismo para un número variable de tuplas, según como sea cada relación concreta.
"cod_grupo" es un contador que se crea por concatenación con un identificador de zona de la siguiente forma: <contador numérico>+<promocion>
Por ahora todo bien.

La cuestión es que tengo que mostrar varios de estos grupos al mismo tiempo en un mismo DBGrid y visualmente es un problema diferenciar qué líneas pertenecen a un grupo y cuales a otro.
Había pensado en traducir de algún modo ese "cod_grupo" en algo más visible: un color de celda... Pero no sé cómo hacerlo de forma que no me coincidan tonos similares al coincidir dos "cod_grupo" consecutivos. ¿Funciones Hash para traducir el código? ¿Reparto alternativo de colores según la posición par o impar del grupo en el grid?

PD: Creo que se me escapa la solución fácil, esto no puede ser tan complicado.

Monchi
02-07-2007, 22:11:33
Yo uso los componentes DeVExpress, que entre tantas cosas permiten mostrar como vos decis, con sub grillas dentro de otra grilla, estan muy buenos:
http://www.devexpress.com/Products/VCL/ExQuantumGrid/

kuan-yiu
03-07-2007, 09:06:57
No necesito algo tan complejo como un sub-grid, además ya uso un DBGrid y no puedo cambiarlo por otro tipo de componente, el formulario no es mío, simplemente me ha tocado a mí hacerle la modificación.

Lepe
03-07-2007, 09:49:09
Lo más fácil, es utilizar 2 colores de forma alternada. Por ejemplo blanco y crema para el fondo. Si quieres resaltar los grupos, blanco y gris. Por supuesto, agrupados por el cod_grupo.

En el evento OnDrawCell, necesitarás una variable que tenga el cod_grupo que se está pintando, si desde el Dataset, es un cod_grupo nuevo, cambias el color, de lo contrario, mantienes el mismo. (Supongo que los datos estarán ordenados por este campo, para ver los registros del mismo cod_grupo agrupados).

Saludos

kuan-yiu
03-07-2007, 10:26:12
Sí, estan ordenados por cod_grupo y lo que estoy intentando es pintarlos de diferentes colores, pero al intentar pintarlo alternos me salen cosas raras, debo estar haciendo algo mal.
Lo volveré a revisar.