En LAZARUS lo hago de esta forma:
Código Delphi
[-]
procedure TFAbm_Estudios.DBGrid1PrepareCanvas(sender: TObject; DataCol: Integer; Column: TColumn; AState: TGridDrawState); Var
Finalizado, Reservado, Informado, Transcripto, Revisado: Boolean;
begin
With Sender As TDBGrid Do
Begin
Finalizado := DataSource.DataSet.FieldByName('TECNICO').AsInteger > 0;
Reservado := (DataSource.DataSet.FieldByName('MEDICO').AsInteger > 0) And DataSource.DataSet.FieldByName('FECHA_INFORME').IsNull;
Informado := (DataSource.DataSet.FieldByName('MEDICO').AsInteger > 0) And (Not DataSource.DataSet.FieldByName('FECHA_INFORME').IsNull);
Transcripto := DataSource.DataSet.FieldByName('TRANSCRIPCION').AsInteger > 0;
Revisado := DataSource.DataSet.FieldByName('REVISION').AsInteger > 0;
If Revisado Then
Begin
Canvas.Brush.Color := Panel8.Color; Canvas.Font.Color := ClBlack;
Exit;
end;
If Transcripto Then
Begin
Canvas.Brush.Color := Panel7.Color; Canvas.Font.Color := ClBlack;
Exit;
end;
If Informado Then
Begin
Canvas.Brush.Color := Panel6.Color; Canvas.Font.Color := ClBlack;
Exit;
end;
If Reservado Then
Begin
Canvas.Brush.Color := Panel9.Color; Canvas.Font.Color := ClBlack;
Exit;
end;
If Finalizado Then
Begin
Canvas.Brush.Color := Panel5.Color; Canvas.Font.Color := ClBlack;
Exit;
end;
End;
end;