![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#7
|
|||
|
|||
![]() Кроме того, Вы даже кнопку нажать не сможете.
Ведь цикл обработки происходит так: 1) ждётся появление очередного сообщения Windows,(например нажатия SpeedButton1) 2) если есть сообщение, Выбрать его из очереди и 3) обработать.Например запустить SpeedButton1Click) 4) после обработки сообщения 5) Перейти к пункту 1) То есть если во время выполнения длительной процедуры будете нажимать какие-нибудь кнопки на форме, их обработчики будут вызваны только после того, как эта процедура закончится. Для того, что бы не "замораживать" интерфейс намертво, можно внутри этой длинной процедуры вызывать Application.ProcessMessages(); которая содержит внутри себя собственный цикл обработки сообщений. [Щас закидают тухлыми помидорами ![]() По этому более точный код должен быть таким Код:
ProgressBar1.Position:=ProgressBar1.Position+1; ProgressBar1.Update; Application.ProcessMessages(); if ModalResult<>0 then Exit; .................................................. . ProgressBar1.Position:=ProgressBar1.Position+1; ProgressBar1.Update; Application.ProcessMessages(); if ModalResult<>0 then Exit; |