Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-02-2008
Avatar de RoyTan
RoyTan RoyTan is offline
Miembro
 
Registrado: oct 2003
Ubicación: Mijas - Málaga
Posts: 121
Poder: 21
RoyTan Va por buen camino
Talking 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
Responder Con Cita
  #2  
Antiguo 21-02-2008
Avatar de Gabo
[Gabo] Gabo is offline
Miembro Premium
 
Registrado: mar 2007
Ubicación: Murcia (España)
Posts: 684
Poder: 18
Gabo Va por buen camino
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.
Responder Con Cita
  #3  
Antiguo 21-02-2008
rafita rafita is offline
Miembro
 
Registrado: ago 2003
Ubicación: Cuenca- España.
Posts: 309
Poder: 21
rafita Va por buen camino
Cita:
Empezado por RoyTan Ver Mensaje

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);
En el ELSE deberías poner otro color ¿no?
__________________
Rafita.
Responder Con Cita
  #4  
Antiguo 21-02-2008
Avatar de RoyTan
RoyTan RoyTan is offline
Miembro
 
Registrado: oct 2003
Ubicación: Mijas - Málaga
Posts: 121
Poder: 21
RoyTan Va por buen camino
Nada de nada.

Sigue sin funcionar.
Responder Con Cita
  #5  
Antiguo 22-02-2008
Avatar de RoyTan
RoyTan RoyTan is offline
Miembro
 
Registrado: oct 2003
Ubicación: Mijas - Málaga
Posts: 121
Poder: 21
RoyTan Va por buen camino
He probado de todas formas y nada.

Bueno pues se quedará sin el colorcito.

Gracias.
Responder Con Cita
  #6  
Antiguo 22-02-2008
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
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 :

Código Delphi [-]
procedure TForm.DBGrid1DrawColumnCell(Sender: TObject;
  Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
 
  If (Column.Index = 5) and (Column.Field.Dataset.FieldbyName('SALDO').AsFloat < 0) and (not DataSet.IsEmpty) then begin
    if gdFocused in State then begin
      DBGrid1.Canvas.Brush.Color := clBlue    // Color que quieras que tenga el fondo si la línea tiene foco
      DBGrid1.Canvas.Font.Color  := clWhite   // Color del Font que quieras que tenga si la línea tiene foco
    end
    else begin
      DBGrid1.Canvas.Brush.Color := clRed;    // Color que quieras que tenga si la línea NO tiene foco
      DBGrid1.Canvas.Font.Color  := clWhite   // Color del Font que quieras que tenga si la línea NO tiene foco
    end;
  end;
  DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
 
end;

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 12:03:04.
Responder Con Cita
  #7  
Antiguo 22-02-2008
Avatar de RoyTan
RoyTan RoyTan is offline
Miembro
 
Registrado: oct 2003
Ubicación: Mijas - Málaga
Posts: 121
Poder: 21
RoyTan Va por buen camino
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.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
forma de cambiar el color de una celda anubis Varios 8 31-07-2007 19:08:02
DBGrid Color Celda hcalero Varios 2 13-04-2007 13:37:42
Cambiar el color a una celda de un DBGrid NuncaMas Varios 1 14-02-2005 16:40:30
Cambiar Color una Celda del DbGrid Rabata Varios 5 02-09-2004 09:31:01
Cambiar el color de una celda de un DBGrid candido OOP 2 06-08-2004 10:22:28


La franja horaria es GMT +2. Ahora son las 23:24:17.


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