Я сделал нечто подобное, вызываю ShowModal а там таймер через 2 сек. заводит нужную функцию, и уже в самой функции Application.ProcessMessages держит форму в курсе дела, то-есть дает ProgressBarу и тд. вовремя обновляться.
Брр ... Зачем такие ужасы ... Можно обойтись вообще БЕЗ ОКНА ... То есть кинуть на форму панель c прогресив баром и поставить ей видимость по умолчанию в false.. Дальше все понятно ? form1.Enable:=False; panel1.Visible:=True; ... panel1.Visible:=False; form1.Enable:=True;