Все работает, просто надо знать как готовить, объясняю:
используйте
Код:
Application.ProcessMessages;
-каждый раз когда прогресс изменяется, эта команда заставляет обработать все сообщения необходимые программе (в вашем случае - перерисовка окна)
а еще лучше конечно, вычисления делать в отдельном потоке, чтобы главный поток программы не замораживался (конечно это уже нужен уровень профи).