DBGrid - Alterando cor de linha
11/08/2004
0
Pessoal!
Usei o código abaixo para que sob determinada condição um DBGrid tivesse as cores de linhas específicas alteradas.
[b:dbe8aed07b]O problema é[/b:dbe8aed07b]: Quando clico com o mouse sobre uma dessas linhas que tiveram sua cor alterada, esta linha não aparece mais selecionada, ficando apenas aquela ´setinha´ à esqueda da linha indicando sobre qual linha o cursor está posicionado.
[b:dbe8aed07b]Minha pergunta é[/b:dbe8aed07b]: Como fazer para que ao posicionar o cursor numa linha do DBGrid que foi ´pintada´, esta linha volte a aparecer selecionada? (alterando sua cor, e indicando linha ativa)
Valeu!
wbb
Usei o código abaixo para que sob determinada condição um DBGrid tivesse as cores de linhas específicas alteradas.
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin with (Sender as TDBGrid) do begin if <CONDIÇÃO> then begin Canvas.Brush.Color := clYellow; Canvas.Font.Color := clBlack; end else begin Canvas.Brush.Color := clRed; Canvas.Font.Color := clWhite; end; DefaultDrawColumnCell(Rect, DataCol, Column, State); end; end;
[b:dbe8aed07b]O problema é[/b:dbe8aed07b]: Quando clico com o mouse sobre uma dessas linhas que tiveram sua cor alterada, esta linha não aparece mais selecionada, ficando apenas aquela ´setinha´ à esqueda da linha indicando sobre qual linha o cursor está posicionado.
[b:dbe8aed07b]Minha pergunta é[/b:dbe8aed07b]: Como fazer para que ao posicionar o cursor numa linha do DBGrid que foi ´pintada´, esta linha volte a aparecer selecionada? (alterando sua cor, e indicando linha ativa)
Valeu!
wbb
Wbb
Curtir tópico
+ 0
Responder
Posts
11/08/2004
Marcelo Saviski
verifique no parametro [color=blue:6f6d6343e2]State[/color:6f6d6343e2] (tem que ver quais valores ele armazena) se é igal a __selected ou __focused (algo assim), ai vc escolhe uma cor diferenciada do mesm modo que escolhe a cor p/ a linha
Responder
11/08/2004
Wbb
Sim, claro! Funcionou.
O código final ficou:
Valeu!
wbb
O código final ficou:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin with (Sender as TDBGrid) do begin if <CONDIÇÃO> then begin Canvas.Brush.Color := clYellow; Canvas.Font.Color := clBlack; end else begin Canvas.Brush.Color := clRed; Canvas.Font.Color := clWhite; end; if gdSelected in State then begin Canvas.Brush.Color := clNavy; Canvas.Font.Color := clWhite; end; DefaultDrawColumnCell(Rect, DataCol, Column, State); end; end;
wbb
Responder
Clique aqui para fazer login e interagir na Comunidade :)