Date cuenta que el resultado es el detalle del último registro de la selección.
Dentro del FOR vas mostrando el detalle de cada registro seleccionado
pero reinicias el query en cada bucle, borrando la información anterior.
Deberías recoger en el FOR las claves del maestro y usarla después en un solo query sustituyendo el
Código Delphi
[-]SQL.Add ('WHERE id_ing_deting = :BUS4 ORDER BY LENGTH(cod_deting)ASC');
por
Código Delphi
[-]SQL.Add ('WHERE id_ing_deting IN (' + sClaves + ') ORDER BY LENGTH(cod_deting)ASC');
Siendo sClave un string con el valor de las claves separados por comas (p.e. '5,8,45,105')