Colorir as fontes
Criei uma rotina que no formulário deixa em cor preta as fontes do registro cuja data de vencimento não se encontra em atraso, deixa na cor verde as datas anteriores ao vencimento e deixa em cor vermelha as datas iguais ou superiores as datas de vencimento.
Usei um Datasource (DataChange).
Mas não consegui fazer isso no DBGrid. Se alguém puder me ajudar, ficarei agradecida.
Espero ajuda de todos, obrigada.
Usei um Datasource (DataChange).
Mas não consegui fazer isso no DBGrid. Se alguém puder me ajudar, ficarei agradecida.
Espero ajuda de todos, obrigada.
Anjinho Loiro
Curtidas 0
Respostas
Massuda
11/02/2005
Talvez seja útil para você: [url=http://forum.clubedelphi.net/viewtopic.php?t=57109]neste tópico anterior[/url] do fórum, foi utilizado o evento TDBGrid.OnDrawColumnCell para usar um fonte vermelho para débitos.
GOSTEI 0
Edilcimar
11/02/2005
isto aqui pega o estoque de 4 lojas e coloca a coluna com cor diferente de acordo com a quantidade em estoque
If Filial = 4 then
Begin
Estoque1 := Query1.FieldByName(´ESTOQUE1´).AsFloat;
Estoque2 := Query1.FieldByName(´ESTOQUE2´).AsFloat;
Estoque3 := Query1.FieldByName(´ESTOQUE3´).AsFloat;
Estoque4 := Query1.FieldByName(´ESTOQUE4´).AsFloat;
If (Estoque1 <= 0) then
Begin
DBGrid2.Columns[5].Font.Color := clRed;
DBGrid2.Columns[5].Color := $00DFFFFF;
End
Else If (Estoque1 > 0) then
Begin
DBGrid2.Columns[5].Font.Color := clBlack;
DBGrid2.Columns[5].Color := clWhite;
End;
If (Estoque2 <= 0) then
Begin
DBGrid2.Columns[6].Font.Color := clRed;
DBGrid2.Columns[6].Color := $00DFFFFF;
End
Else If (Estoque2 > 0) then
Begin
DBGrid2.Columns[6].Font.Color := clBlack;
DBGrid2.Columns[6].Color := clWhite;
End;
If (Estoque3 <= 0) then
Begin
DBGrid2.Columns[7].Font.Color := clRed;
DBGrid2.Columns[7].Color := $00DFFFFF;
End
Else If (Estoque3 > 0) then
Begin
DBGrid2.Columns[7].Font.Color := clBlack;
DBGrid2.Columns[7].Color := clWhite;
End;
If (Estoque4 <= 0) then
Begin
DBGrid2.Columns[8].Font.Color := clRed;
DBGrid2.Columns[8].Color := $00DFFFFF;
End
Else If (Estoque4 > 0) then
Begin
DBGrid2.Columns[8].Font.Color := clBlack;
DBGrid2.Columns[8].Color := clWhite;
End;
If (Estoque1 > 0) and (Estoque2 > 0) and (Estoque3 > 0) and
(Estoque4 > 0) then
Begin
DBGrid2.Columns[2].Color := clWhite;
DBGrid2.Columns[2].Font.Color := $0000AF00;
End
Else If (Estoque1 > 0) or (Estoque2 > 0) or (Estoque3 > 0) or
(Estoque4 > 0) then
Begin
DBGrid2.Columns[2].Color := clWhite;
DBGrid2.Columns[2].Font.Color := $0000BFFF;
End
Else
Begin
DBGrid2.Columns[2].Color := clWhite;
DBGrid2.Columns[211].Font.Color := clRed;
End;
If Estoque1 > 0 then
Begin;
DBGrid2.Columns[1].Color := clWhite;
DBGrid2.Columns[1].Font.Color := $00000000;
End
Else
DBGrid2.Columns[1].Font.Color := $00000001;
Edit1.Font.Color := clBlack;
Edit1.Brush.Color := clWhite;
End
Else If Filial = 3 then
Begin
Estoque1 := Query2.FieldByName(´ESTOQUE1´).AsFloat;
Estoque2 := Query2.FieldByName(´ESTOQUE2´).AsFloat;
Estoque3 := Query2.FieldByName(´ESTOQUE3´).AsFloat;
If (Estoque1 <= 0) then
Begin
DBGrid2.Columns[5].Font.Color := clRed;
DBGrid2.Columns[5].Color := $00DFFFFF;
End
Else If (Estoque1 > 0) then
Begin
DBGrid2.Columns[5].Font.Color := clBlack;
DBGrid2.Columns[5].Color := clWhite;
End;
If (Estoque2 <= 0) then
Begin
DBGrid2.Columns[6].Font.Color := clRed;
DBGrid2.Columns[6].Color := $00DFFFFF;
End
Else If (Estoque2 > 0) then
Begin
DBGrid2.Columns[6].Font.Color := clBlack;
DBGrid2.Columns[6].Color := clWhite;
End;
If (Estoque3 <= 0) then
Begin
DBGrid2.Columns[7].Font.Color := clRed;
DBGrid2.Columns[7].Color := $00DFFFFF;
End
Else If (Estoque3 > 0) then
Begin
DBGrid2.Columns[7].Font.Color := clBlack;
DBGrid2.Columns[7].Color := clWhite;
End;
If (Estoque1 > 0) and (Estoque2 > 0) and (Estoque3 > 0) then
Begin
DBGrid2.Columns[2].Color := clWhite;
DBGrid2.Columns[2].Font.Color := $0000AF00;
End
Else If (Estoque1 > 0) or (Estoque2 > 0) or (Estoque3 > 0) then
Begin
DBGrid2.Columns[2].Color := clWhite;
DBGrid2.Columns[2].Font.Color := $0000BFFF;
End
Else
Begin
DBGrid2.Columns[2].Color := clWhite;
DBGrid2.Columns[2].Font.Color := clRed;
End;
If Estoque1 > 0 then
Begin;
DBGrid2.Columns[1].Color := clWhite;
DBGrid2.Columns[1].Font.Color := $00000000;
End
Else
DBGrid2.Columns[1].Font.Color := $00000001;
Edit1.Font.Color := clBlack;
Edit1.Brush.Color := clWhite;
End
Else If Filial = 2 then
Begin
Estoque1 := Query3.FieldByName(´ESTOQUE1´).AsFloat;
Estoque2 := Query3.FieldByName(´ESTOQUE2´).AsFloat;
If (Estoque1 <= 0) then
Begin
DBGrid2.Columns[5].Font.Color := clRed;
DBGrid2.Columns[5].Color := $00DFFFFF;
End
Else If (Estoque1 > 0) then
Begin
DBGrid2.Columns[5].Font.Color := clBlack;
DBGrid2.Columns[5].Color := clWhite;
End;
If (Estoque2 <= 0) then
Begin
DBGrid2.Columns[6].Font.Color := clRed;
DBGrid2.Columns[6].Color := $00DFFFFF;
End
Else If (Estoque2 > 0) then
Begin
DBGrid2.Columns[6].Font.Color := clBlack;
DBGrid2.Columns[6].Color := clWhite;
End;
If (Estoque1 > 0) and (Estoque2 > 0) then
Begin
DBGrid2.Columns[2].Color := clWhite;
DBGrid2.Columns[2].Font.Color := $0000AF00;
End
Else If (Estoque1 > 0) or (Estoque2 > 0) then
Begin
DBGrid2.Columns[2].Color := clWhite;
DBGrid2.Columns[2].Font.Color := $0000BFFF;
End
Else
Begin
DBGrid2.Columns[2].Color := clWhite;
DBGrid2.Columns[2].Font.Color := clRed;
End;
If Estoque1 > 0 then
Begin;
DBGrid2.Columns[1].Color := clWhite;
DBGrid2.Columns[1].Font.Color := $00000000;
End
Else
DBGrid2.Columns[1].Font.Color := $00000001;
Edit1.Font.Color := clBlack;
Edit1.Brush.Color := clWhite;
End;
If Filial = 4 then
Begin
Estoque1 := Query1.FieldByName(´ESTOQUE1´).AsFloat;
Estoque2 := Query1.FieldByName(´ESTOQUE2´).AsFloat;
Estoque3 := Query1.FieldByName(´ESTOQUE3´).AsFloat;
Estoque4 := Query1.FieldByName(´ESTOQUE4´).AsFloat;
If (Estoque1 <= 0) then
Begin
DBGrid2.Columns[5].Font.Color := clRed;
DBGrid2.Columns[5].Color := $00DFFFFF;
End
Else If (Estoque1 > 0) then
Begin
DBGrid2.Columns[5].Font.Color := clBlack;
DBGrid2.Columns[5].Color := clWhite;
End;
If (Estoque2 <= 0) then
Begin
DBGrid2.Columns[6].Font.Color := clRed;
DBGrid2.Columns[6].Color := $00DFFFFF;
End
Else If (Estoque2 > 0) then
Begin
DBGrid2.Columns[6].Font.Color := clBlack;
DBGrid2.Columns[6].Color := clWhite;
End;
If (Estoque3 <= 0) then
Begin
DBGrid2.Columns[7].Font.Color := clRed;
DBGrid2.Columns[7].Color := $00DFFFFF;
End
Else If (Estoque3 > 0) then
Begin
DBGrid2.Columns[7].Font.Color := clBlack;
DBGrid2.Columns[7].Color := clWhite;
End;
If (Estoque4 <= 0) then
Begin
DBGrid2.Columns[8].Font.Color := clRed;
DBGrid2.Columns[8].Color := $00DFFFFF;
End
Else If (Estoque4 > 0) then
Begin
DBGrid2.Columns[8].Font.Color := clBlack;
DBGrid2.Columns[8].Color := clWhite;
End;
If (Estoque1 > 0) and (Estoque2 > 0) and (Estoque3 > 0) and
(Estoque4 > 0) then
Begin
DBGrid2.Columns[2].Color := clWhite;
DBGrid2.Columns[2].Font.Color := $0000AF00;
End
Else If (Estoque1 > 0) or (Estoque2 > 0) or (Estoque3 > 0) or
(Estoque4 > 0) then
Begin
DBGrid2.Columns[2].Color := clWhite;
DBGrid2.Columns[2].Font.Color := $0000BFFF;
End
Else
Begin
DBGrid2.Columns[2].Color := clWhite;
DBGrid2.Columns[211].Font.Color := clRed;
End;
If Estoque1 > 0 then
Begin;
DBGrid2.Columns[1].Color := clWhite;
DBGrid2.Columns[1].Font.Color := $00000000;
End
Else
DBGrid2.Columns[1].Font.Color := $00000001;
Edit1.Font.Color := clBlack;
Edit1.Brush.Color := clWhite;
End
Else If Filial = 3 then
Begin
Estoque1 := Query2.FieldByName(´ESTOQUE1´).AsFloat;
Estoque2 := Query2.FieldByName(´ESTOQUE2´).AsFloat;
Estoque3 := Query2.FieldByName(´ESTOQUE3´).AsFloat;
If (Estoque1 <= 0) then
Begin
DBGrid2.Columns[5].Font.Color := clRed;
DBGrid2.Columns[5].Color := $00DFFFFF;
End
Else If (Estoque1 > 0) then
Begin
DBGrid2.Columns[5].Font.Color := clBlack;
DBGrid2.Columns[5].Color := clWhite;
End;
If (Estoque2 <= 0) then
Begin
DBGrid2.Columns[6].Font.Color := clRed;
DBGrid2.Columns[6].Color := $00DFFFFF;
End
Else If (Estoque2 > 0) then
Begin
DBGrid2.Columns[6].Font.Color := clBlack;
DBGrid2.Columns[6].Color := clWhite;
End;
If (Estoque3 <= 0) then
Begin
DBGrid2.Columns[7].Font.Color := clRed;
DBGrid2.Columns[7].Color := $00DFFFFF;
End
Else If (Estoque3 > 0) then
Begin
DBGrid2.Columns[7].Font.Color := clBlack;
DBGrid2.Columns[7].Color := clWhite;
End;
If (Estoque1 > 0) and (Estoque2 > 0) and (Estoque3 > 0) then
Begin
DBGrid2.Columns[2].Color := clWhite;
DBGrid2.Columns[2].Font.Color := $0000AF00;
End
Else If (Estoque1 > 0) or (Estoque2 > 0) or (Estoque3 > 0) then
Begin
DBGrid2.Columns[2].Color := clWhite;
DBGrid2.Columns[2].Font.Color := $0000BFFF;
End
Else
Begin
DBGrid2.Columns[2].Color := clWhite;
DBGrid2.Columns[2].Font.Color := clRed;
End;
If Estoque1 > 0 then
Begin;
DBGrid2.Columns[1].Color := clWhite;
DBGrid2.Columns[1].Font.Color := $00000000;
End
Else
DBGrid2.Columns[1].Font.Color := $00000001;
Edit1.Font.Color := clBlack;
Edit1.Brush.Color := clWhite;
End
Else If Filial = 2 then
Begin
Estoque1 := Query3.FieldByName(´ESTOQUE1´).AsFloat;
Estoque2 := Query3.FieldByName(´ESTOQUE2´).AsFloat;
If (Estoque1 <= 0) then
Begin
DBGrid2.Columns[5].Font.Color := clRed;
DBGrid2.Columns[5].Color := $00DFFFFF;
End
Else If (Estoque1 > 0) then
Begin
DBGrid2.Columns[5].Font.Color := clBlack;
DBGrid2.Columns[5].Color := clWhite;
End;
If (Estoque2 <= 0) then
Begin
DBGrid2.Columns[6].Font.Color := clRed;
DBGrid2.Columns[6].Color := $00DFFFFF;
End
Else If (Estoque2 > 0) then
Begin
DBGrid2.Columns[6].Font.Color := clBlack;
DBGrid2.Columns[6].Color := clWhite;
End;
If (Estoque1 > 0) and (Estoque2 > 0) then
Begin
DBGrid2.Columns[2].Color := clWhite;
DBGrid2.Columns[2].Font.Color := $0000AF00;
End
Else If (Estoque1 > 0) or (Estoque2 > 0) then
Begin
DBGrid2.Columns[2].Color := clWhite;
DBGrid2.Columns[2].Font.Color := $0000BFFF;
End
Else
Begin
DBGrid2.Columns[2].Color := clWhite;
DBGrid2.Columns[2].Font.Color := clRed;
End;
If Estoque1 > 0 then
Begin;
DBGrid2.Columns[1].Color := clWhite;
DBGrid2.Columns[1].Font.Color := $00000000;
End
Else
DBGrid2.Columns[1].Font.Color := $00000001;
Edit1.Font.Color := clBlack;
Edit1.Brush.Color := clWhite;
End;
GOSTEI 0
Anjinho Loiro
11/02/2005
A dica que vc me forneceu serviu como uma luva, porém, percebi que nos campos do tipo moeda, o formato é perdido.
Existe algo que eu possa fazer para que o formato permaneça???
Obrigado,
Existe algo que eu possa fazer para que o formato permaneça???
Obrigado,
GOSTEI 0
Edilcimar
11/02/2005
note que a formatação não é modificada, apenas a cor, portanto se está havendo algum problema com a mesma tente colocar no columns[x] do dbgrid a formatação que vc quizer, o meu funciona normalmente
GOSTEI 0