ProgresBar в цикле

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
gen
новенький
Сообщения: 74
Зарегистрирован: 18.06.2009 21:04:22

ProgresBar в цикле

Сообщение gen »

Почему когда ПрогресБар используешь в цикле, он не делает постепенной прорисовки?

Вот к примеру код

Код: Выделить всё

 for i:=0 to Form1.CheckListBox1.Items.Count do
     ProgressBar1.Position:=ProgressBar1.Position+del;


Этот цикл в выполняется при нажатии на кнопку. Так вот ,когда жмешь на эту кнопкку ProgressBar1.Position:=0 , а потом прога думает и ProgressBar1.Position:=100 процентов сразу же. То есть прорисовки 20,40 ,60,80 процентов нету. Просто чел может подумать что прога зависла с таким успехом)
xcod
постоялец
Сообщения: 108
Зарегистрирован: 07.08.2009 12:37:23

Сообщение xcod »

Вставь в цикл
Application.ProcessMessages
gen
новенький
Сообщения: 74
Зарегистрирован: 18.06.2009 21:04:22

Сообщение gen »

ясно. спасибо
Аватара пользователя
Inferno
новенький
Сообщения: 78
Зарегистрирован: 20.03.2009 13:40:20
Откуда: Тюмень

Сообщение Inferno »

ащо вариант: ProgressBar1.Update; принудительно прорисует только его
при Application.ProcessMessages а если пользователь нажмет на [x] окна то после завешения цикла окно закроется, если это не отловить конечно....и будут срабатывать всякиетам кнопки... а юзъвер существо любопытное обязательно начнет их тыкать в процессе :)
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

А лучше вывесить модальное окно с надписью: "Не тыкай в меня, отрок! Я задумалась...". :)
Ответить