Cor de fonte no dbGrid

06/08/2008

1

Boa tarde a todos...

Como faço para alterar a cor do texto de um determinado campo no DBGRID caso a condição estaja correta.

Exemplo:

Quero que ele mostre a cor do texto em vermelho caso o texto seja ENVIADO e mostre em azul caso o texto seja pendente.

Se alguem puder me ajudar.

Obrigado.


Responder

Posts

06/08/2008

Vmlima

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect:
TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
-if (Column.FieldName = ´LastInvoiceDate´) then
--with DBGrid1.Canvas do begin
---if (QueryINFORMACAO.Value > INTEIRO) and Column.Field=´COLUNA´ then
----Font.Color := clNavy
---else
---Font.Color := clRed;
--end;
-DBGrid1.DefaultDrawDataCell(Rect,Column.Field,State);
end;

é só trabalhar neste exemplo que vc consegue


Responder

06/08/2008

Uelinton_reis

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin -if (Column.FieldName = ´LastInvoiceDate´) then --with DBGrid1.Canvas do begin ---if (QueryINFORMACAO.Value > INTEIRO) and Column.Field=´COLUNA´ then ----Font.Color := clNavy ---else ---Font.Color := clRed; --end; -DBGrid1.DefaultDrawDataCell(Rect,Column.Field,State); end; é só trabalhar neste exemplo que vc consegue


bOA TARDE AMIGO...

SOU NOVATO, VC SE IMPORTA DE COMENTAR OS CAMANDOS ACIMA.

Obrigado.

Uelinton


Responder

06/08/2008

Vmlima

Voce deve inserir isso no evento OnDrawColumnCell do seu DBGrid

//cabeçalho do evento
//de dois clicks no Object Inspector que abrirá esta função
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect:
TRect;DataCol: Integer; Column: TColumn; State: TGridDrawState);

begin
-if (Column.FieldName = ´CAMPO´) then //aqui vc coloca o campo que deseja colorir por exemplo DATA ou VALORPAGO
--with DBGrid1.Canvas do begin //canvas é o elemento de desenho, tudo está nele
---if (QueryINFORMACAO.Value > INTEIRO) then //Aqui vc coloca o valor tipo QryVALORPAGO.value>100 significa que vai colorir onde o valor é maior que 100
----Font.Color := clNavy //as cores desejadas para a condição
---else
---Font.Color := clRed; // a cor que
--end;
-DBGrid1.DefaultDrawDataCell(Rect,Column.Field,State); //esta é a função default para desenhar
end;

Tente entender
Qualquer coisa tente este exemplo para zebrar o DBGrid que é muito simples

Tente isso com uma Query1 qualquer ligada a um DBGrid1

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
-If Odd(Query1.RecNo) then
-begin
---DBGrid1.Canvas.Brush.Color:= clmoneygreen;
-end
-else
-begin
---DBGrid1.Canvas.Brush.Color:= clWhite;
-end;
---DBGrid1.Canvas.FillRect(Rect);
---DBGrid1.Canvas.TextOut(Rect.Left+2,Rect.Top,Column.Field.AsString);
end;


Responder

06/08/2008

Uelinton_reis

Voce deve inserir isso no evento OnDrawColumnCell do seu DBGrid //cabeçalho do evento //de dois clicks no Object Inspector que abrirá esta função procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;DataCol: Integer; Column: TColumn; State: TGridDrawState); begin -if (Column.FieldName = ´CAMPO´) then //aqui vc coloca o campo que deseja colorir por exemplo DATA ou VALORPAGO --with DBGrid1.Canvas do begin //canvas é o elemento de desenho, tudo está nele ---if (QueryINFORMACAO.Value > INTEIRO) then //Aqui vc coloca o valor tipo QryVALORPAGO.value>100 significa que vai colorir onde o valor é maior que 100 ----Font.Color := clNavy //as cores desejadas para a condição ---else ---Font.Color := clRed; // a cor que --end; -DBGrid1.DefaultDrawDataCell(Rect,Column.Field,State); //esta é a função default para desenhar end; Tente entender Qualquer coisa tente este exemplo para zebrar o DBGrid que é muito simples Tente isso com uma Query1 qualquer ligada a um DBGrid1 procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin -If Odd(Query1.RecNo) then -begin ---DBGrid1.Canvas.Brush.Color:= clmoneygreen; -end -else -begin ---DBGrid1.Canvas.Brush.Color:= clWhite; -end; ---DBGrid1.Canvas.FillRect(Rect); ---DBGrid1.Canvas.TextOut(Rect.Left+2,Rect.Top,Column.Field.AsString); end;




Cara eu estou trabalhando com IBDataSet. E o nome do campo é status e os valores podem ser PENDENTE OU ENVIADO.
como devo proceder então?

---if ([color=red:8a84ac6e82]QueryINFORMACAO.Value[/color:8a84ac6e82] > INTEIRO) then //Aqui vc coloca o valor tipo QryVALORPAGO.value>100 significa que vai colorir onde o valor é maior que 100

obrigado...


Responder

06/08/2008

Martins

Usando o código do colega [b:32dbbc05e1]vmlima[/b:32dbbc05e1], vamos fazer as adaptações para seu caso.

Voce deve inserir isso no evento OnDrawColumnCell do seu DBGrid 

//cabeçalho do evento 
//de dois clicks no Object Inspector que abrirá esta função 
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: 
TRect;DataCol: Integer; Column: TColumn; State: TGridDrawState); 

begin 
-if (Column.FieldName = ´STATUS´) then 
--with DBGrid1.Canvas do begin //canvas é o elemento de desenho, tudo está nele 
---if (QuerySTATUS.Value = ´PENDENTE´) then // Se o valor do status for PENDENTE, coloque a cor Navy 
----Font.Color := clNavy //as cores desejadas para a condição 
---else // Caso contrário coloque a cor red.
---Font.Color := clRed; // a cor que 
--end; 
-DBGrid1.DefaultDrawDataCell(Rect,Column.Field,State); //esta é a função default para desenhar 
end; 


Espero q vc consiga montar a resolução do seu problema, boa sorte e bons códigos.


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira