Надо та немного логически пошаманить. Держи исправленную процу:
Код:
procedure TForm1.Button_delClick(Sender: TObject);
var
i,j: Integer;
begin
j:=StringGrid1.Row;
if (j = 1) and (StringGrid1.RowCount <= 2) then
begin
with StringGrid1 do
for i:= 0 to ColCount - 1 do Cells[i, j]:= '';
exit; // не удаляем последнюю строку чтобы не потерять фиксированной
end;
StringGrid1.Rows[j].Clear;
for i:=j to StringGrid1.RowCount-2 do
StringGrid1.Rows[i].Assign(StringGrid1.Rows[i+1]);
StringGrid1.RowCount:=StringGrid1.RowCount-1;
end;