Cor do foco para o DBGrid

25/11/2005

10

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


Responder

Posts

25/11/2005

Marcio.theis

De uma olhadinha neste post:

[url]http://forum.clubedelphi.net/viewtopic.php?t=70619[/url]


Responder

25/11/2005

Diogoalles

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);


Responder

26/11/2005

Edilcimar

vá na propriedade do dbgrid, em opções e coloque dgrowselect = true, vá em color e coloque clgray


Responder

28/11/2005

Diogoalles

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


Responder

29/11/2005

Marco Salles

Talvez lhe sirva.. Não testei exaustivamente mas primeiros resultados são satisfatorios:

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


Responder

29/11/2005

Gigatel

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+


Responder

29/11/2005

Diogoalles

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


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira