Jump to content
Fórum Script Brasil
  • 0

(Resolvido) Mudar a cor do Titulo do Dbgrid


nilegor
 Share

Question

Eu Gostaria de alterar apenas a cor da descrição de apenas um registro no dbGrid, por exemplo, na linha do item CELULAR, apenas a palavra celular ficar em vermelho, estou usando o código abaixo, porem todos os registros da linha ficam na cor vermelha.

#Código
if (condição...) then
begin
DBGrid1.Canvas.Brush.color := clGradientInactiveCaption;
DBGrid1.Canvas.font.color := clRed;
DBGrid1.Canvas.FillRect(Rect);
DBGrid1.Canvas.TextOut(Rect.Left+2,Rect.Top,Column.Field.AsString);
end;


E também por que quando coloco algo no evento OnDrawColumnCell alguns registros da linha ficam alinhados de forma diferente, exemplo, as informações que antes estavam alinhadas a direita ficam alinhadas para a esquerda e tambem os campos de valores, ex(2,00) perdem a virgula ficando apenas o 2 !

Link to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 0

exemplo

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  // Mudar a cor de fundo do Titulo do Campo da Tabela da 1ª coluna
  DBGrid1.Columns[0].Title.Color := clAqua;  // cor de fundo
  DBGrid1.Columns[0].Title.Font.Color := clBlack; // cor da fonte
end;

ou

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  // Mudar a cor de fundo do Titulo do Campo da Tabela da 1ª coluna
  DBGrid1.Columns[0].Title.Color := clRed;  // cor de fundo
  DBGrid1.Columns[0].Title.Font.Color := clWhite;  // cor da fonte
end;

Obs: voce pode fazer isso diretamente no dbgrid

abraço

Link to comment
Share on other sites

  • 0

Jhonas, desculpe. Na verdade acabei me atrapalhando no titulo. Preciso mudar a cor de apenas um registro no dbGrid, exemplo, tenho os campos código, descrição, preço.. etc. Gostaria de mudar a cor apenas da descrição, mas de apenas uma linha e apenas na coluna descrição.

Link to comment
Share on other sites

  • 0

sim, pode repetir, por exemplo, na coluna grupo de mercadoria existem varias linhas com o mesmo grupo. Apenas as informações que estão nas linhas ficando em vermelho já é o suficiente, não preciso mudar a cor da linha em si. Isso eu consegui, porem o alinhamento das informações que estão nessa linha com as informações em vermelho ficam desalinhadas, e tambem gostaria de deixar em vermelho apenas algumas colunas dessa linha, exemplo, apenas a nome, valor, quantidade... E não todas as informações da linha.

Link to comment
Share on other sites

  • 0

gostaria de deixar em vermelho apenas algumas colunas dessa linha

voce deveria dizer que quer deixar alguns valores das colunas em vermelho e não o titulo...

exemplo: Na coluna SALDO ...se o saldo for menor que zero o valor fica em vermelho

procedure TFCartCons.DBGrid1DrawColumnCell(Sender: TObject;
   const Rect: TRect; DataCol: Integer; Column: TColumn;
   State: TGridDrawState);
begin


   if (Column.FieldName = 'SALDO') then
   begin
      if CDS_Opcoes.FieldByName('SALDO').Value < 0 then
      begin
         DBGrid1.Canvas.Font.Color := clRed;
         DBGrid1.Canvas.FillRect(Rect);
         DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
      end
      else
      begin
         DBGrid1.Canvas.Font.Color := clBlack;
         DBGrid1.Canvas.FillRect(Rect);
         DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
      end;
   end;

abraço

Link to comment
Share on other sites

  • 0

voce pode fazer isso para qualquer coluna da sua tabela


procedure TFCartCons.DBGrid1DrawColumnCell(Sender: TObject;
   const Rect: TRect; DataCol: Integer; Column: TColumn;
   State: TGridDrawState);
begin


   if (Column.FieldName = 'SALDO') then
   begin
      if CDS_Opcoes.FieldByName('SALDO').Value < 0 then
      begin
         DBGrid1.Canvas.Font.Color := clRed;
         DBGrid1.Canvas.FillRect(Rect);
         DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
      end
      else
      begin
         DBGrid1.Canvas.Font.Color := clBlack;
         DBGrid1.Canvas.FillRect(Rect);
         DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
      end;
   end;

   if (Column.FieldName = 'DESCRICAO') then
   begin
      if CDS_Opcoes.FieldByName('DESCRICAO').Value = 'CELULAR ' then
      begin
         DBGrid1.Canvas.Font.Color := clRed;
         DBGrid1.Canvas.FillRect(Rect);
         DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
      end
      else
      begin
         DBGrid1.Canvas.Font.Color := clBlack;
         DBGrid1.Canvas.FillRect(Rect);
         DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
      end;
   end;

end;

abraço

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.8k
    • Total Posts
      646.6k
×
×
  • Create New...