Здравствуйте.
Для решения этой задачи нужно использовать скрипт с типом события "Отчет построен". Допустим отчет строится по нажатию на кнопку Button1. Тогда по событию OnClick пишем такой код:
begin
Button1.Enabled := False; // делаем кнопку неактивной, чтобы её нельзя было нажать повторно
{ строим отчет и отмечаем его пользовательской отметкой равной 777 }
ReportView(GetClientName, 'Мой отчет', rptNoPrint, 777);
end.
Теперь создадим новый скрипт с типом события "Отчет построен" и следующим кодом:
begin
if rbUserID = 777 then // если наш отчет с отметкой 777 построился
Button1.Enabled := True; // делаем кнопку активной
end.
Также, если есть желание, можете выслать текущую версию проекта с отчетами на почту тех.поддержки, возможно мы могли бы дать рекомендации как увеличить скорость построения отчета.