Как отобразить выбранную строку DBGrid различными цветами

Если Вы хотите раскрасить выбранную строку DBGrid, но не хотите использовать опцию dgRowSelect, так как хотели бы редактировать данные, то можно воспользоваться следующей технологией в событии DBGrid.OnDrawColumnCell:

    type
      TCustomDBGridCracker = class(TCustomDBGrid);

    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    begin
      With TCustomDBGridCracker(Sender) Do
        if DataLink.ActiveRecord = Row - 1 then
          Canvas.Brush.Color := clRed
        else
          Canvas.Brush.Color := clWhite;
      DefaultDrawColumnCell(Rect, DataCol, Column, State);
    end;