Problema ao alterar a cor das linhas no DbGrid

Delphi

03/05/2016

Olá, estou usando o código abaixo para mudar a cor da linha do Grid para verde, porém, quando seleciono um campo no grid do qual esta com a cor alterada (verde), a informação que esta no campo do grid aparece no fundo em branco, fazendo com que apareça a informação repetida na cor branca, isso ocorre apenas nas linhas que devem ficar em verde, nas outras linhas, quando seleciono o campo, a informação fica em branco e o campo selecionado na cor azul, padrão.
Não consegui anexar os prints, então fiz upload no send space das imagens: https://www.sendspace.com/file/sbkb4a

procedure Tform1.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  if ClientDataSet_venda_nfeSTATUS.AsString = 'Autorizado o uso da NF-e' then
  begin
    DBGrid1.Canvas.Font.Color := clGreen;
    DBGrid1.Canvas.Font.Style := [fsBold];
    DBGrid1.DefaultDrawDataCell(Rect, DBGrid1.columns[DataCol].field, State);

  end;
end;

Jhon

Jhon

Curtidas 0

Melhor post

Natanael Ferreira

Natanael Ferreira

04/05/2016

Coloque uma condição no seu código para efetuar a alteração da linha apenas se ela não estiver selecionada.

Teste assim:

procedure Tform1.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
 if not(gdSelected in State) then // Se a linha não estiver selecionada efetua a alteração
   if ClientDataSet_venda_nfeSTATUS.AsString = 'Autorizado o uso da NF-e' then
   begin
     DBGrid1.Canvas.Font.Color := clGreen;
     DBGrid1.Canvas.Font.Style := [fsBold];
     DBGrid1.DefaultDrawDataCell(Rect, DBGrid1.columns[DataCol].field, State); 
   end;
end;
GOSTEI 1

Mais Respostas

Jhon

Jhon

03/05/2016

Perfeito, Tão simples. Muito Obrigado Natanael
GOSTEI 0
POSTAR