FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Otra vez color de fila de un DBGRID?
Tengo que decirlo así suene molesto:
Ya estoy 3 horas buscando la forma de pintar la fila de un un dbgrid y claro he encontrado muchos foros, trucos y tips, pero todos con la misma respuesta: pintar de acuerdo a cantidad>0, poblation=1500, precio<0, Condicion="SI". Aclaro esto porque mi pregunta tiene que ver especificamente con saber "cual es la condición para conocer la fila en que estoy posicionado" y cual sería el codigo que debo aplicar en mi oncolumncell? En definitiva que mi grid se vea como si tuviera la propiedad Rowselect=True, pero claro con los datos totalmente editables (poder moverme con otro color de cursor entre columnas). Ojalá me hayan entendido. Muchas gracias. |
#2
|
||||
|
||||
He de confesar que ya había yo intentado algo similar sin mayor éxito. El problema está en que el dibujado de celdas está basado en columnas de manera que el evento OnDrawColumnCell no manda información acerca de la fila a la que pertenece la celda que se va a dibujar.
Al ver este mensaje volví a buscar y en los foros de Borland encontré una respuesta para C++ cuya traducción a Delphi pongo aquí:
Para que esto funcione debe activarse la opción dgMultiSelect del DBGrid. En principio, parece funcionar bien, pero tiene un problema: si comenzamos a desplazar el grid mediante la flecha inferior de la barra de desplazamiento vertical, las nuevas líneas aparecen todas con el color verde. Sin embargo, basándome en este código, lo he adaptado para funcionar sin la opción dgMultiSelect:
Cualquiera de los dos códigos mantienen el color aún cuando el grid no tenga el foco, como si tuviera activada la opción dgAlwaysShowSelection; y el segundo código tiene el problema de que al perder el foco, el color rojo (el de la celda seleccionada) se pierde, aunque es un problema menor comparado con el otro. De cualquier forma, el autor original menciona que si se desea ocultar la selección cuando el grid pierde el foco bastaría con borrar la lista SelectedRows en el evento OnExit del grid y englobar todo el código de OnDrawColumnCell en el condicional:
No pongo aquí la referencia original porque la busqué vía tamaracka y en este servicio las búsquedas caducan al poco tiempo de manera que los enlaces a ellas no funcionan. Pero puedes encontrarla buscando "paint selected row". Escoges la vista por hilo (thread). Es de losprimeros hilos, se llama "TDBGrid custom Drawing" y el autor del código es Ingvar Anderberg. // Saludos |
#3
|
||||
|
||||
Hola.
Tenía por ahí este código que podría servir: Saludos,
__________________
Lo importante no es saber, sino tener el e-mail del que sabe. |
#4
|
||||
|
||||
Me quedo con el código de JavierB. Sencillo y eficaz.
// Saludos |
#5
|
|||
|
|||
okey
que haríamos sin ustedes maestros !
Muchas gracias y hasta la proxima |
#6
|
|||
|
|||
¿hay forma de que ese procedimiento funciona al hacer SCROLL con la ruedita del mouse?? Ya que solo marca unicamente la celda activa y no el resto de la fila?
|
#8
|
|||
|
|||
buenisimo
Buenisimo!
Gracias ahora funciona todo de maravillas! |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Fila del DbGrid | Rabata | Varios | 3 | 08-11-2004 22:18:13 |
problema cambiar formato de fila en dbGrid | VRO | OOP | 4 | 01-10-2004 17:38:52 |
como cambiar una fila seleccionada por otra en un DBgrid ? | TURING | Varios | 1 | 04-08-2004 04:52:01 |
Leer fila en la que estoy situado en un DBgrid | RyAr | Conexión con bases de datos | 10 | 09-07-2004 09:54:45 |
Seleccionar una fila en un DBGRID | erickperez6 | Conexión con bases de datos | 1 | 02-05-2004 16:49:34 |
|