Celulas do dbgrid de cada cor?

Delphi

28/03/2007

Olá galera, sei que parece uma pergunta besta, mas vou esplicar melhor, meu programa me mostra quem e quando eu tenho reserva para um determinado cliente e quero que o dbgrid mostre cada celula e não a linha pois na linha tem outros dados quero somente a celula de cada cor.
A cor de cada celula ja esta gravada no banco então cada um tem a sua. Será que alguém pode me ajudar? Por Favor.

Junior

Utilizo Delphi 7


Juniorprog

Juniorprog

Curtidas 0

Respostas

Juniorprog

Juniorprog

28/03/2007

Será que alguém pode me dar pelo menos uma noticia ruim ou boa sobre a pergunta acima, ou aqui ninguém sabe?


GOSTEI 0
Ullrich

Ullrich

28/03/2007

Não entendi sua pergunta, poderia ser mais claro por favor.

Obrigado.


GOSTEI 0
Paullsoftware

Paullsoftware

28/03/2007

amigão veja se isso te ajuda!!!

Assim você pinta toda linha do dbgrid...
procedure TfRetorno.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
   if ( DM_BANCO.LOCACAO.FieldByName(´DATARETORNO´).Value < SelData.Date ) then
     begin
     DBGrid1.Canvas.Font.Color := clRed;
     DBGrid1.Canvas.Font.Style := [];
     DBGrid1.Canvas.FillRect(Rect);
     DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
     end;
    if ( gdSelected in State ) then
     begin
      if ( DM_BANCO.LOCACAO.FieldByName(´DATARETORNO´).Value < SelData.Date ) then
       begin
         DBGrid1.Canvas.Font.Color := clYellow;
         DBGrid1.Canvas.Font.Style := [fsBold];
         DBGrid1.Canvas.FillRect(Rect);
         DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
       end
      else
       begin
         DBGrid1.Canvas.Font.Color := clWhite;
         DBGrid1.Canvas.Font.Style := [fsBold];
         DBGrid1.Canvas.FillRect(Rect);
         DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
       end
     end;

basta colocar um if e pronto, assim você pinta somente a célula desejada!
if ( DM_BANCO.LOCACAO.FieldByName(´DATARETORNO´).Value < SelData.Date ) then [b:6688ba8a2b] if Column.FieldName = ´DATARETORNO´ then[/b:6688ba8a2b] begin DBGrid1.Canvas.Font.Color := clRed; DBGrid1.Canvas.Font.Style := []; DBGrid1.Canvas.FillRect(Rect); DBGrid1.DefaultDrawDataCell(Rect, Column.Field, State); end else// se não funcionar, remova o ´else´ e coloque Ponto e virgula ´;´ [b:6688ba8a2b] if Column.FieldName = ´DATA´ then[/b:6688ba8a2b] begin DBGrid1.Canvas.Font.Color := clBlue; DBGrid1.Canvas.Font.Style := []; DBGrid1.Canvas.FillRect(Rect); DBGrid1.DefaultDrawDataCell(Rect, Column.Field, State); end else// se não funcionar, remova o ´else´ e coloque Ponto e virgula ´;´ [b:6688ba8a2b] if Column.FieldName = ´LOCATARIO´ then[/b:6688ba8a2b] begin DBGrid1.Canvas.Font.Color := clOlive; DBGrid1.Canvas.Font.Style := []; DBGrid1.Canvas.FillRect(Rect); DBGrid1.DefaultDrawDataCell(Rect, Column.Field, State); end; //Esse código foi acrescentado para poder pinta a linha celecionada de branco, pois, as vezes quando selecionamos e a fonte está pintada fica ruim pra ler o conteúdo da mesma if ( gdSelected in State ) then begin DBGrid1.Canvas.Font.Color := clWhite; DBGrid1.Canvas.Font.Style := [fsBold]; DBGrid1.Canvas.FillRect(Rect); DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State); end;

espero ter ajudado :wink:


GOSTEI 0
POSTAR