Olá Ricardo...eu tbem tive esse problema...
Mas resolvi fazendo da seguinte maneira, no evento on show do dbgrid
eu pego a instrução da linha na coluna q tem o status e mudo a cor ...não sei 
se é o melhor jeito...mas funcionou pra mim...

Exemplo:

Nome do Fulano | Status    | Liberado
Teste Fulano      | ATIVO    | SIM

quando ele acha o status ativo ele muda a cor da linha..

eu fiz usando um if
IF (SQL.IBCliente.Status.value='ATIVO') then
    DbGrid.canvas.brusch.color := clred;


tem uma opção no dbgrid que precisa ser colocada como false...se não me engano 
é o defaultcellcolor

espero q funcione pra vc...
qquer coisa te mando o codigo q fiz em casa.


Ricardo Mendes
TotalSat - Rastreamento de Veículos
Departamento de Informática
E-mail: [EMAIL PROTECTED] 
Tel. (41) 2109-7717
  ----- Original Message ----- 
  From: Ricardo César Cardoso 
  To: delphi-br@yahoogrupos.com.br 
  Sent: Thursday, June 14, 2007 10:46 AM
  Subject: [delphi-br] Problemas com DBGrid


  Bom dia amigos!

  Estou tentando montar um DBGrid onde dependendo do status do registro, o 
conteúdo do registro (texto) aparece em determinada cor e além disso, que este 
mesmo DBGrid esteja zebrado. Para isso escrevi o seguinte código no evento 
OnDrawColumnCell do DBGrid:

  <<
  Procedure TfrmEVENTOS_SERVICO.dbgrdEVENTOS_SERVICODrawColumnCell(
  Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
  Begin
  if dmEVENTOS_SERVICO.cdsEVENTOS_SERVICO.RecordCount > 0 then
  begin

  with dbgrdEVENTOS_SERVICO do
  begin
  case dmEVENTOS_SERVICO.cdsEVENTOS_SERVICO.FieldByName('ESTID').Value of
  1 : Canvas.Font.Color := clGreen;
  2 : Canvas.Font.Color := clBlue;
  3 : Canvas.Font.Color := clRed;
  else
  begin
  Canvas.Font.Color := clRed;
  end;
  end;

  Canvas.Font.Style := [fsBold];

  // Faz o efeito "Zebrado" do DBGrid
  if not odd(dmEVENTOS_SERVICO.cdsEVENTOS_SERVICO.RecNo) then
  if not (gdSelected in State) then
  begin
  Canvas.Brush.Color := clSkyBlue;
  Canvas.FillRect(Rect);
  DefaultDrawDataCell(Rect, Column.Field, State);
  end ;

  // Sincroniza o alinhamento dos dados com o alinhamento das colunas
  SincronizeDBGrid(dbgrdEVENTOS_SERVICO);
  end

  end ;

  End;
  >>

  Porém nas linhas onde não é mudada a cor de fundo, o texto também não tem a 
sua cor mudada. O que eu poderia fazer neste caso?

  Grato,
  Ricardo.

  ---------------------------------
  Novo Yahoo! Cadê? - Experimente uma nova busca. 

  [As partes desta mensagem que não continham texto foram removidas]



   

[As partes desta mensagem que não continham texto foram removidas]

Responder a