El StringGrid tiene un método protegido DeleteRow, que supongo es para eso. Digo supongo porque no lo he probado. El punto es que al estar protegido no puedes usarlo directamente pero puedes usar el truco de la desprotección:
Código Delphi
[-]
type
THackGrid = class(TStringGrid);
...
THackGrid(StringGrid1).DeleteRow(...);
Por otro lado te pregunto, ¿por qué no usas un DBGrid? El StringGrid es un componente muy pobre y se alentará mucho cuando tengas varios registros. Si por alguna razón no deseas usar componentes
db aware como el DBGrid, podrías optar por un LIstView en modo virtual. Uno de las razones por las cuales el DBGrid es tan exitoso es precisamente porque funciona en modo virtual: el control no alamacena todos los registros del dataset sino sólo los que se alcanzan a ver en la pantalla en un momento dado y va solicitando al dataset el resto conforme se necesitan. Puedes lograr algo similar con un ListView.
// Saludos