я пользуюсь такой процедурой перекраски
(привожу как пример)
Код:
{-------перерисовка строки просроченные/негодные------------------}
procedure TFrameUchet.DBGrid2DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
with IBJurnUcheta do
begin
if (FieldByName('PlanDat').AsDateTime <= NOW) or
(FieldByName('Reslt').AsString = ' - ') or
(FieldByName('Reslt').AsString = 'БРАК') or
(FieldByName('Reslt').AsString = 'НЕ ГОДЕН') then
DBGrid2.Canvas.Font.Color:=clRed;
if FieldByName('Reslt').AsString = 'Техобслуж.' then
DBGrid2.Canvas.Font.Color:=clFuchsia;
if FieldByName('Reslt').AsString = 'Консерв.' then
DBGrid2.Canvas.Font.Color:=clYellow;
end; //with
DBGrid2.DefaultDrawColumnCell(Rect, 1, Column, State);
end;