Здесь мы будем использовать событие "OnDrawColumnCell". Следующий пример разукрашивает ячейки колонки "Status" когда значение НЕ равно "a". Если Вы хотите закрасить целую линию, то достаточно удалить условие "If..."
Код:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
const
clPaleGreen = TColor($CCFFCC);
clPaleRed = TColor($CCCCFF);
begin
if Column.FieldName = 'Status' then //Удалите эту линию, если хотете закрасить целую линию
if Column.Field.Dataset.FieldByName('Status').AsString <> 'a' then
if (gdFocused in State) then //имеет ли ячейка фокус?
DBGrid1.Canvas.Brush.Color := clBlack //имеет фокус
else
DBGrid1.Canvas.Brush.Color := clPaleGreen; //не имеет фокуса
//Теперь давайте закрасим ячейку используя стандартный метод:
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State)
end;