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

(Resolvido) Dbgrid Zebrinha


Pirambu!

Pergunta

Estou Com um problema ao usar este código abaixo:

if not odd(dados.QMateriais.RecNo) then

begin

DBGrid1.Canvas.Brush.Color:= clintoBK;

DBGrid1.Canvas.FillRect(Rect);

DBGrid1.DefaultDrawDataCell(Rect,Column.Field,state);

end;

O Problema é que as linhas que tem cores, a fonte da letra que é Azul Escuro muda, para branco ficando quase invisível

Alguém sabe como posso resolver este problema?

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0
Estou Com um problema ao usar este código abaixo:

if not odd(dados.QMateriais.RecNo) then

begin

DBGrid1.Canvas.Brush.Color:= clintoBK;

DBGrid1.Canvas.FillRect(Rect);

DBGrid1.DefaultDrawDataCell(Rect,Column.Field,state);

end;

O Problema é que as linhas que tem cores, a fonte da letra que é Azul Escuro muda, para branco ficando quase invisível

Alguém sabe como posso resolver este problema?

Pirambu!, isso ocorre porque por padrão do windows a linha selecionada tem o fundo azul escuro (clHighlight) com o texto branco (clHighlightText), enquanto que as não selecionadas o fundo é cinza (por ex.) (clWindow) com as letras preta (clWindowText).

Como você muda apenas a cor do fundo e passa a pintura para o procedimento padrão (DefaultDrawDataCell), ele usa as configurações atuais para esta célula que será a cor de fundo que você mudou + a cor de texto que ele deveria utilizar para uma linha selecinada.

obs.: as constantes entre parênteses são aquelas definidas no componente e que os valores RGB (cor efetiva) são obtidos do sistema.

O negócio é quando você mudar a cor do fundo, também mudar a cor da letra. Então sugiro que seu procedimento fique assim:

if not odd(dados.QMateriais.RecNo) then
begin
   DBGrid1.Canvas.Brush.Color:= clInfoBK;
   DBGrid1.Canvas.Font.Color:= clIntoText;
end
DBGrid1.DefaultDrawDataCell(Rect,Column.Field,state);
Não há porque você utilizar o método FillRect se você chama o procedimento padrão de pintura. Voce só precisa se preocupar com este detalhe, caso você faça toda a pintura da célula - que não é o caso. Assim, basta apenas mudar as propriedades do canvas que ele irá usá-las ao desenha a célula. Alerto para o fato de que você não tratar se a linha está selecionada, terá como resultado o fato de a mesma não ficar em destaque. O ideal é que isso fosse verificado através da verificação do parâmetro State que a procedure lhe passa:
if not (gdSelected in State) then
  if not odd(dados.QMateriais.RecNo) then
  begin
    DBGrid1.Canvas.Brush.Color:= clInfoBK;
    DBGrid1.Canvas.Font.Color:= clIntoText;
  end
DBGrid1.DefaultDrawDataCell(Rect,Column.Field,state);

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
Alerto para o fato de que você não tratar se a linha está selecionada, terá como resultado o fato de a mesma não ficar em destaque. O ideal é que isso fosse verificado através da verificação do parâmetro State que a procedure lhe passa:

CODE

if not (gdSelected in State) then

if not odd(dados.QMateriais.RecNo) then

begin

DBGrid1.Canvas.Brush.Color:= clInfoBK;

DBGrid1.Canvas.Font.Color:= clIntoText;

end

DBGrid1.DefaultDrawDataCell(Rect,Column.Field,state);

Micheus, deu certo, mas tive que mudar apenas isso.

if not (gdSelected in State) then
  if not odd(dados.Qpecas.RecNo) then
  begin
  DBGrid1.Canvas.Brush.Color:= clInfoBK;
  DBGrid1.DefaultDrawDataCell(Rect,Column.Field,state);
  end;

e funcionou certinha. valeu peça força, abraços.

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
      152,3k
    • Posts
      652,2k
×
×
  • Criar Novo...