Вот это работает хорошо (свойство DefaultDrawing установлено в false), естественно нужно еще обрабатывать прорисовку фиксированных столбцов/колонок.
Код:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
//Выделим ячейку (3,3) цветом, а остальные зеленые
if (ACol=3) and (ARow)=3 then
(Sender as TStringGrid).Canvas.Brush.Color:=clRed
else
(Sender as TStringGrid).Canvas.Brush.Color:=clGreen;
(Sender as TStringGrid).Canvas.FillRect(Rect);
//Текст третьего столбца - жирным
if ACol=1 then
(Sender as TStringGrid).Canvas.Font.Style:=[fsBold]
else
(Sender as TStringGrid).Canvas.Font.Style:=[];
(Sender as TStringGrid).Canvas.TextOut(Rect.Left,Rect.Top,(Sender as TStringGrid).Cells[ACol,ARow]);
end;
ЗЫЖ Писал прямо тут, так что возможны очепятки