Cor do foco para o DBGrid
pessoal
gostaria de utilizar o Gray como cor d foco nos dbgrid do meu sistema, já que se o cara utiliza o Xp e muda de skins as vezes é azul, outras é cinza ou verde, isso prejudica o visual no dbgrid pq alguns registros estão com fonte de cor diferente.
como posso fazer (uma rotina padrão) para que todos os dbgrid do sistema utilizem o Gray como cor d foco ?
obrigado
Diogo
gostaria de utilizar o Gray como cor d foco nos dbgrid do meu sistema, já que se o cara utiliza o Xp e muda de skins as vezes é azul, outras é cinza ou verde, isso prejudica o visual no dbgrid pq alguns registros estão com fonte de cor diferente.
como posso fazer (uma rotina padrão) para que todos os dbgrid do sistema utilizem o Gray como cor d foco ?
obrigado
Diogo
Diogoalles
Curtidas 0
Respostas
Marcio.theis
25/11/2005
De uma olhadinha neste post:
[url]http://forum.clubedelphi.net/viewtopic.php?t=70619[/url]
[url]http://forum.clubedelphi.net/viewtopic.php?t=70619[/url]
GOSTEI 0
Diogoalles
25/11/2005
o problema é que essa função abaixo só seleciona a coluna em q está o foco e muda cor para ela... preciso mudar a cor para a linha toda indepente da coluna em q o usuario esteja navegando, e preciso ter a navegabilidade entre as colunas, coisa que a propriedade RowSelect não oferece:
if (gdSelected in State) or (gdFocused in State) tehn // está focada ou selecionada
then TDBGrid(Sender).Canvas.Brush.Color := $0082FFFF
else TDBGrid(Sender).Canvas.Brush.Color := $00FFF8F0;
TDBGrid(Sender).DefaultDrawColumnCell(Rect, Datacol, Column, State);
if (gdSelected in State) or (gdFocused in State) tehn // está focada ou selecionada
then TDBGrid(Sender).Canvas.Brush.Color := $0082FFFF
else TDBGrid(Sender).Canvas.Brush.Color := $00FFF8F0;
TDBGrid(Sender).DefaultDrawColumnCell(Rect, Datacol, Column, State);
GOSTEI 0
Edilcimar
25/11/2005
vá na propriedade do dbgrid, em opções e coloque dgrowselect = true, vá em color e coloque clgray
GOSTEI 0
Diogoalles
25/11/2005
conforme havia colocado não posso utlizar o RowSelect porque ele seleciona a linha toda mas impede a navegação entre as colunas, então a principio deveria pintar toda linha selecionada e não só a coluna conforme codigo acima.
obrigado
Diogo
obrigado
Diogo
GOSTEI 0
Marco Salles
25/11/2005
Talvez lhe sirva.. Não testei exaustivamente mas primeiros resultados são satisfatorios:
Altere a cor a gosto
var numero:Integer; procedure TForm1.Table1AfterScroll(DataSet: TDataSet); begin numero:=Table1.RecNo; end; procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if table1.RecNo = numero Then begin DbGrid1.Canvas.Font.Color:=clWindowText; DBGrid1.Canvas.Brush.Color:=clInfoBk; end else begin DbGrid1.Canvas.Font.Color:=clWindowText; DBGrid1.Canvas.Brush.Color:=clInactiveCaptionText; end; DbGrid1.DefaultDrawDataCell(rect,Column.Field,State); end;
Altere a cor a gosto
GOSTEI 0
Gigatel
25/11/2005
Blz Marco Salles esta função serviu direitinho no meu componente Infopower..ficou 10...t+inclusive acho que postei algo parecido más num tive resposta agora ficou blz....t+
GOSTEI 0
Diogoalles
25/11/2005
Grande Marco
quase isso, só que se vc tem um mouse com rolagem e rolar, vai se perder tudo nas cores.. uso o Jedi DBGrid
senão usar a rolagem funciona perfeito.
abraço
Diogo
quase isso, só que se vc tem um mouse com rolagem e rolar, vai se perder tudo nas cores.. uso o Jedi DBGrid
senão usar a rolagem funciona perfeito.
abraço
Diogo
GOSTEI 0