Hola.
Por lo que comentas, pareciera que quedan datos residuales, intentalo de este modo:
Código Delphi
[-]
procedure TForm1.btnDeleteRowClick( Sender: TObject );
begin
sgDetalle.Rows[sgDetalle.Row].Clear;
if sgDetalle.RowCount > sgDetalle.FixedRows + 1 then
sgDetalle.DeleteRow( sgDetalle.Row );
end;
Saludos