No sé de dónde viene la excepción que mencionas ya que en lo que pruebo no me sale; quizá de alguna sentencia posterior.
De cualquier manera, en lugar de manejar la excepción yo checaría que las coordenadas que obtengo realmente corresponden a una celda:
Código Delphi
[-]
procedure TForm1.StringGrid1MouseDown(
Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
GridCoord: TGridCoord;
begin
if Button = mbRight then
begin
GridCoord := StringGrid1.MouseCoord(X, Y);
if
(GridCoord.X >= StringGrid1.FixedCols) and
(GridCoord.Y >= StringGrid1.FixedRows)
then
begin
StringGrid1.Col := GridCoord.X;
StringGrid1.Row := GridCoord.Y;
end;
end;
end;
Según he visto, si haces click fuera de las celdas, ambas coordenadas se fijan en -1 de manera que sólo tienes que checar que no toque las filas o columnas fijas.
// Saludos