This is a bit of a hack, but gives a better selection/deselection effect, using both OnDrawCell and OnSelection:
uses types;
procedure TForm1.StringGrid1DrawCell(Sender: TObject; aCol, aRow: Integer;
aRect: TRect; aState: TGridDrawState);
var
grid: TStringGrid;
begin
grid:=Sender as TStringGrid;
if (aCol=0) and (aRow=grid.Row) then
grid.Canvas.TextRect(aRect, 10, 3, '>>');
end;
procedure TForm1.StringGrid1Selection(Sender: TObject; aCol, aRow: Integer);
const
lastSelRow: integer=0;
var
grid: TStringGrid;
r: TRect;
begin
grid:=Sender as TStringGrid;
r:=grid.CellRect(0,lastSelRow);
InflateRect(r, -1, -1);
grid.Canvas.Brush.Color:=grid.FixedColor;
grid.Canvas.FillRect(r);
lastSelRow:=aRow;
end;