Fórum Colorir celula DBGrid #369088

16/03/2009

0

Caros amigos estou com a seguinte dúvida:

Como posso fazer para colorir a celula do dbgrid na seguinte situação:

if tempo1 > tempo2 then
begin
dbgrid.CelulaQueGuardaOTempo := Verde;
else
begin
dbgrid.CelulaQueGuardaOTempo := Vermelho;
end;

Onde ´tempo1´ é o tempo determinado e ´tempo2´ é o tempo real de entrega.

Então se o tempo determinado for maior que o tempo real: ok carga entregue dentro do tempo, a celula ´tempo´ recebe a cor verde. Caso o contrário a carga não foi entregue no tempo, então a celula ´tempo´ recebe a cor vermelha.

Obrigado a todos.


Ricklorente

Ricklorente

Responder

Posts

16/03/2009

Woinch

Você pode fazer isso utilizando o evento OnDrawDataCell do DBGrid. Veja um exeplo:

1
2
3
4
5
6
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
  Field: TField; State: TGridDrawState);
 
begin
  DBGrid1.Canvas.Brush.Color := clRed; //Pinta de vermelho o fundo de todas as células do DBGrid
end;


Apenas adapte esse exemplo para a sua situação.
Espero ter ajudado.


Responder

Gostei + 0

16/03/2009

Ricklorente

Amigo, obrigado pela ajuda, porém eu quero pintar somente as celulas da coluna x e não a linha inteira.

Obrigado.


Responder

Gostei + 0

17/03/2009

Woinch

Para isso basta utilizar a propriedade Field desse evento.
Veja:

1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
  Field: TField; State: TGridDrawState);
begin
  if ((gdSelected in State) and
      (gdFocused in State)) then
    DBGrid1.Canvas.Font.Color := clBlack;
 
  if (Field.FieldName = ´NomeDaColuna´) then
    DBGrid1.Canvas.Brush.Color := clRed;
 
  DBGrid1.DefaultDrawDataCell(Rect, Field, State);
end;



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar