Fórum Evento OnDrawDataCell do Grid #241054

02/07/2004

0

Olá,
Estou precisando destacar algumas linhas em um DbGrid de acordo com um determinado campo, ou seja, possuo um campo com o nome ´situacao´ e se o mesmo conter um OK como informacao, essa linha deverá ficar com uma respectiva cor:

if Form1.DataSource.DataSet.FieldByName(´situacao´).Value = ´OK´ then

DBGrid1.Canvas.Font.Color := clRed
else

DBGrid1.Canvas.Font.Color := clBlack;

DBGrid1.Canvas.FillRect(Rect);
DBGrid1.DefaultDrawDataCell(Rect,Field,State); //cod ta funcionando..

mas ...a questao que esse código tenho no evento ondrawdatacell do grid, mas com o clicar do mouse fico com minha linha azul (padrão windows) e a cor (por exemplo o preto) fica muito dificil de ler.. portanto, necessitaria que a cor de fundo da linha tambem fosse alterada!

Sugestão ?
obs.: trocar a cor de fonte nao resolve, preciso tratar da selecao do clicar com o mouse tirando o azul padrao windows. :roll:


Ce

Ce

Responder

Posts

02/07/2004

Motta

dbgrid.gdFocused in State informa se a célula está focada.
vc pode tratar isto e inverter as cores.

eu faço isto no DrawColumnCell

procedure TfrmCons.DBGrid1DrawColumnCell(
  Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
  procedure MudaCor (Fundo,Fonte: TColor);
  begin
    with DBGrid1.Canvas do
    begin
      Brush.Color := Fundo;
      Font.Color  := Fonte;
      FillRect(Rect);
      TextOut(Rect.Left,Rect.Top,Column.Field.DisplayText);
    end;
  end;
begin
  with DBGrid1 do
  begin
    if qryConsultasCONDICAO.AsString = ´x´ then
      MudaCor(clWhite,clGreen)
    else
      MudaCor(clWhite,clBlue);
    //Não esqueça de colocar a opção dgRowSelect como True na options do DBGrid.
    // Inverte a cor da celula focada
    if gdFocused in State then
      Mudacor(Font.Color,Brush.Color);
  end;
end;




Responder

Gostei + 0

05/07/2004

Ce

Blz :lol:
era exatamente isso q precisava. !
mas.. mesmo colocando TRUE meu dgrowSelect do Grid, ele nao fica selecionado .. paciência.. :lol:
valeu


Responder

Gostei + 0

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

Aceitar