En este ejemplo puedes ver las dos formas más sencillas que hay de borrar una línea de un TStringGrid.
Código Delphi
[-]
procedure DeleteRow1(StringGrid: TStringGrid; ARow: Integer);
var
i: Integer;
begin
with StringGrid do
begin
for i := ARow to RowCount - 2 do
Rows[i].Assign(Rows[i + 1]);
RowCount := RowCount - 1
end;
end;
Y la otra:
Código Delphi
[-]
procedure DeleteRow2(StringGrid: TStringGrid; ARow: Integer);
begin
with THackStringGrid(StringGrid) do
DeleteRow(ARow);
end;
Un saludo.