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.
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


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:

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


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar