Pirambu! Postado Março 7, 2008 Denunciar Share Postado Março 7, 2008 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ívelAlguém sabe como posso resolver este problema? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Março 7, 2008 Denunciar Share Postado Março 7, 2008 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ívelAlgué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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Pirambu! Postado Março 7, 2008 Autor Denunciar Share Postado Março 7, 2008 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:CODEif not (gdSelected in State) then if not odd(dados.QMateriais.RecNo) then begin DBGrid1.Canvas.Brush.Color:= clInfoBK; DBGrid1.Canvas.Font.Color:= clIntoText; endDBGrid1.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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Pirambu!
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
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.