Тут вопрос того, как у тебя написан код. Я бы делал так:
Код:
Screen.Cursor := crHourglass;
Try
// расчет
Finally
Try
// Вызов принудительной отрисовки
Finally
Screen.Cursor := crDefault;
End;
End;
Ну, и все диалоги надо показывать либо до установки курсора, либо после его восстановления.