Fórum Problema ao alterar a cor das linhas no DbGrid #553102

03/05/2016

0

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

Responder

Post mais votado

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;

Natanael Ferreira

Natanael Ferreira
Responder

Gostei + 1

Mais Posts

04/05/2016

Jhon

Perfeito, Tão simples. Muito Obrigado Natanael
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar