Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Mostrar relación N:N en grid diferenciando los grupos (https://www.clubdelphi.com/foros/showthread.php?t=45413)

kuan-yiu 02-07-2007 19:33:01

Mostrar relación N:N en grid diferenciando los grupos
 
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.


La franja horaria es GMT +2. Ahora son las 14:35:15.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi