FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Cambiar el color en una celda de un DBGrid
Saludos.
Bueno haber si me aclaro y alguien me aclara. Necesito cambiar de color una celda de un DBGrid que cumpla una condición, como por ejemplo toda aquella del campo SALDO que contenga un número menor que 0. Estoy dándole vueltas a este código, pero no se que falla. if Column.Field.Dataset.FieldbyName('SALDO').AsFloat < 0 then if (gdFocused in State) then DBGCaja.Columns[4].color := clRed else DBGCaja.canvas.brush.color := clRed; DBGCaja.DefaultDrawColumnCell(rect,DataCol,Column,State); El resultado de este código es que pinta de color rojo toda la linea completa o sea todos los campos ( fecha,concepto,ingreso,gasto,saldo) Y solo necesito que lo haga en el campo saldo. Espero haberme explicado. Gracias |
#2
|
||||
|
||||
Usa el evento OnDrawCell. Allí pon los condicionantes que quieras y usa la propiedad Canvas del DBGrid.
__________________
Saludos, Gabo A menos que se indique lo contrario, el código estará hecho en C++Builder. |
#3
|
|||
|
|||
En el ELSE deberías poner otro color ¿no?
__________________
Rafita. |
#4
|
||||
|
||||
Nada de nada.
Sigue sin funcionar. |
#5
|
||||
|
||||
He probado de todas formas y nada.
Bueno pues se quedará sin el colorcito. Gracias. |
#6
|
||||
|
||||
Este tema ya ha sido tratado en múltiples ocasiones en los foros.
Seguro que utilizando la búsqueda encontrarías muchas referencias. No obstante, para que veas que en Delphi 'siempre' se puede, te invito a utilizar el siguiente código :
Siendo Column.Index = al número de columna que quieras colorear. También podrías hacer referencia a dicha columna por el campo que se encuentra en ella. DataSet es el DataSet asociado a tu DBGrid. ... y nunca desesperes si algo no te funciona
__________________
Piensa siempre en positivo ! Última edición por gluglu fecha: 22-02-2008 a las 13:03:04. |
#7
|
||||
|
||||
Siempre pienso en positivo,
raramente desespero, he buscado en el foro, eso sí, seguramente no he buscado bien. Pero esto sigue sin funcionar, probablemente este haciendo algo mal, eso es seguro. Seguimos intentandolo. Gracias. |
#8
|
||||
|
||||
Si pones tu código aquí, a lo mejor será más fácil ayudarte.
Supongo que bastaría con que pusieras el evento OnDrawColumnCell del DBGrid.
__________________
Piensa siempre en positivo ! |
#9
|
||||
|
||||
Hola gluglu.
Gracias por soportar mi ignorancia y mi pesadez. Si el código lo he puesto en el evento ondrawcolumncell. El código que me has pasado pinta la linea completa, pero eso no es lo que necesito. Yo necesito que pinte una celda nada más, no la linea completa. Ejemplo: Mi DBGrid tiene 5 columnas, Fecha,Concepto,Ingresos,Gastos y Saldo. Tan solo necesito que si en la columna saldo hubiese algun valor negativo pues sencillamente que pinte esa celda de rojo, solo donde está el valor negativo. Bueno y el código con el que lo estoy intentando es el siguiente. procedure TF_Caja.DBGCajaDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if Column.Field.Dataset.FieldbyName('SALDO').AsFloat < 0 then if (gdFocused in State) then Begin DBGCaja.canvas.brush.color := clBlue; end else Begin DBGCaja.Columns[5].Font.Color := clRed; // este para el Texto DBGCaja.DefaultDrawColumnCell(rect,DataCol,Column,State); end; End; Espero y deseo no molestar mucho. Gracias. |
#10
|
|||
|
|||
no soy un experto...
solo tome el codigo de GLUGLU y lo adapte al tuyo...
espero te funcione..... por que a mi si Gracias por el codigo GLUGLU.... salu2!!!!!!!! |
#11
|
||||
|
||||
Vendito sea Dios todopoderoso, salió.
Gracias Jandock238 y gracias gluglu. Creo y casi seguro, que soy el hombre mas torpe del mundo. Lo mio no tiene remedio vamos. Gracias a todos. |
#12
|
||||
|
||||
Hasta para escribir soy torpe, bendito se escribe con B no con V.
Lo siento. |
#13
|
|||
|
|||
Cita:
mi Nick no lleva 'C' es Jandok238 sin 'C' ... salu2!!!!!!!!! |
#14
|
||||
|
||||
Po zi. Je Je Je
Gracias Jandok238 Saludos. |
#15
|
||||
|
||||
Tengo una duda:
¿Para que sirve verificar si tiene foco?
pues si lo hago de esta manera funciona igual:
__________________
"It's nice to be important, but it's more important to be nice" |
#16
|
|||
|
|||
Esa comparacion es solo para cambiar el COLOR si la fila tiene el foco ....
si la fila tiene el foco, en lugar de pintarla ROJA, la pinta AZUL .... salu2!!!!!!! |
#17
|
||||
|
||||
ah, pues, es que mi duda surgio porque jamas aparecio el color azul en todo el DBGrid... es por eso que no saco a qué foco se refiere, el codigo se ve logico, pero, en el DBGrid no aparece ningun azul por ningun lado...
__________________
"It's nice to be important, but it's more important to be nice" |
#18
|
|||
|
|||
Cita:
perdon... tienes razon ... no habia checado bien el codigo .... ahi va... ahora si... bien revisado ...
ahora si, si la celda tiene el foco, las letras toman el color especificado... salu2!!!!!!! |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
forma de cambiar el color de una celda | anubis | Varios | 8 | 31-07-2007 20:08:02 |
DBGrid Color Celda | hcalero | Varios | 2 | 13-04-2007 14:37:42 |
Cambiar el color a una celda de un DBGrid | NuncaMas | Varios | 1 | 14-02-2005 17:40:30 |
Cambiar Color una Celda del DbGrid | Rabata | Varios | 5 | 02-09-2004 10:31:01 |
Cambiar el color de una celda de un DBGrid | candido | OOP | 2 | 06-08-2004 11:22:28 |
|