Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Mudar a cor do Titulo do Dbgrid


nilegor

Pergunta

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 para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...