DBGrid - Alterando cor de linha

Delphi

11/08/2004

Pessoal!

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

Wbb

Curtidas 0

Respostas

Marcelo Saviski

Marcelo Saviski

11/08/2004

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


GOSTEI 0
Wbb

Wbb

11/08/2004

Sim, claro! Funcionou.
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;
Valeu!
wbb


GOSTEI 0
POSTAR