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 05-09-2008
Besto Besto is offline
Miembro
 
Registrado: abr 2006
Posts: 118
Poder: 19
Besto Va por buen camino
Color de fuente en celda

Hola,

tengo un problema para cambiar el color de una celda en un dbgrid.
De primeras me va bien, pero cuando cambio de un color a otro me lo cambia con un registro de retraso, es decir, el primer registro del otro color me lo pone con el color anterior.

Os pongo el código que uso:

Código Delphi [-]
procedure Tformulario1.BaseEquiDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
  with Sender as TDBGrid do
    begin
      if (datacol=4) then
        begin
          case frDatos.tbEqu.FieldByName('Estado').AsInteger of
            1: begin
                 columns[4].Font.Color := $009900;
               end;
            3: begin
                 columns[4].Font.Color := $FF0000;
                 columns[4].Font.Style := [fsBold];
               end;
            25: begin
                 columns[4].Font.Color := $FF9900;
                 columns[4].Font.Style := [fsBold];
               end;
            26: begin
                 columns[4].Font.Color := $FF00CC;
                 columns[4].Font.Style := [fsItalic];
               end;
          end;
        end;
    end;
  BaseEqui.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

No sé que puede estar mal, he estado mirando por los foros y en principio parece que es así, no he encontrado nada.
Responder Con Cita
  #2  
Antiguo 05-09-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
prueba, en vez de
Código Delphi [-]
frDatos.tbEqu.FieldByName('Estado').AsInteger

de hacer

Código Delphi [-]
(sender as TDBGrid).DataSource.DataSet.FieldByName('...
.

Si no funciona, buscaria por el foro '.ActiveRecord' (o '.currentrecord', uno de dos), que es el registro realmente activo en el momento de pintar.
Responder Con Cita
  #3  
Antiguo 05-09-2008
Avatar de tcp_ip_es
tcp_ip_es tcp_ip_es is offline
No confirmado
 
Registrado: ago 2003
Ubicación: Madrid
Posts: 635
Poder: 0
tcp_ip_es Va por buen camino
métele esto....

Código Delphi [-]
procedure Tformulario1.BaseEquiDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
 if  frDatos.tbEqu.recordcount >0 then
 begin
 if  state <> [gdfocused] then 
 begin  
  with Sender as TDBGrid do
    begin
      if (datacol=4) then
        begin
          case frDatos.tbEqu.FieldByName('Estado').AsInteger of
            1: begin
                 columns[4].Font.Color := $009900;
               end;
            3: begin
                 columns[4].Font.Color := $FF0000;
                 columns[4].Font.Style := [fsBold];
               end;
            25: begin
                 columns[4].Font.Color := $FF9900;
                 columns[4].Font.Style := [fsBold];
               end;
            26: begin
                 columns[4].Font.Color := $FF00CC;
                 columns[4].Font.Style := [fsItalic];
               end;
          end;
        end;
    end;
 end;
 BaseEqui.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
end;

P.D. Lo que va en negrita es lo nuevo, creo que te falla por no controlar el estado ya nos contarás...
Responder Con Cita
  #4  
Antiguo 05-09-2008
Besto Besto is offline
Miembro
 
Registrado: abr 2006
Posts: 118
Poder: 19
Besto Va por buen camino
He probado con las dos ideas y me pasa lo mismo, no se corrige. No puedo mandar la imagen porque no se pero es algo así:

EN RESERVA
ACTIVO
ACTIVO
EN RESERVA
EN RESERVA

El primer Activo tenia que ir tambien en el otro color y no sale-
Responder Con Cita
  #5  
Antiguo 05-09-2008
Avatar de tcp_ip_es
tcp_ip_es tcp_ip_es is offline
No confirmado
 
Registrado: ago 2003
Ubicación: Madrid
Posts: 635
Poder: 0
tcp_ip_es Va por buen camino
uhmmmm prueba a sustituir los ...

Código Delphi [-]
columns[4].Font.Color := $009900;

por....

Código Delphi [-]
DBGrid.canvas.Font.Color:=$009900;
Responder Con Cita
  #6  
Antiguo 05-09-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
en vez de columns[4].color, usa DBGrid.Canvas.Font.Color
Responder Con Cita
  #7  
Antiguo 05-09-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
lo de tcp_ip, q escribi directo desde el email
Responder Con Cita
  #8  
Antiguo 05-09-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Holas, no solo el ....font.color debe cambiar, todo donde tiene columns[4] debe cambiarlo por BaseEqui.Canvas, no debería importar si es el registro actual, ya que cuando se da este evento hace un recorrido por todo el dbGrid para realizar el pintado. Ahora si se quiere pintar de otro color el que esta selecionado entonces habra que preguntar si el state esta como gdSelected.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #9  
Antiguo 08-09-2008
Avatar de tcp_ip_es
tcp_ip_es tcp_ip_es is offline
No confirmado
 
Registrado: ago 2003
Ubicación: Madrid
Posts: 635
Poder: 0
tcp_ip_es Va por buen camino
y bien....??? Besto ¿qué pasó al final? ¿lo solucionaste con las Gambas?? uppps perdón con los Canvas....


P.D. Lo sé es un chiste muuuu malo pero que queréis son las 8:30 de la mañana
Responder Con Cita
  #10  
Antiguo 11-09-2008
Besto Besto is offline
Miembro
 
Registrado: abr 2006
Posts: 118
Poder: 19
Besto Va por buen camino
Perdonar el retraso pero he estado un par de días desconectado de Delphi.

Muchas gracias, funciona perfecto como me dijisteis, cambiando por dbgrid.canvas el columns[4]

Sois unos fenomenos.
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
color de una celda alejandromartin Servers 1 03-04-2008 05:13:39
DBGrid Color Celda hcalero Varios 2 13-04-2007 13:37:42
Cambiar el color de la fuente chipsoni Varios 2 24-04-2006 13:52:12
color en celda StringGrid ermitano OOP 2 17-06-2004 22:17:53
Color de fuente en Edit !!! vpepen Varios 4 05-12-2003 13:01:42


La franja horaria es GMT +2. Ahora son las 11:10:25.


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