Celulas do dbgrid de cada cor?
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
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
Curtidas 0
Respostas
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
28/03/2007
Não entendi sua pergunta, poderia ser mais claro por favor.
Obrigado.
Obrigado.
GOSTEI 0
Paullsoftware
28/03/2007
amigão veja se isso te ajuda!!!
Assim você pinta toda linha do dbgrid...
basta colocar um if e pronto, assim você pinta somente a célula desejada!
espero ter ajudado :wink:
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