Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Долгий цикл + ProgressBar [Delphi]


Vit@l ©   (2002-09-19 14:50:00) 

Есть долгий цикл и хотелось бы показывать прогресс на ProgressBar"е. Только вся фишка в том, что во время цикла ProgressBar не обновляется, тлолько в конце становится весь сразу окрашенным. Тогда стал смотреть на ProcessMessages. Как оказалось в KOL их целый набор. Поставил в цикле Applet.ProcessPaintMessages, однако это стало офигенно тормозить работу. Что делать?
Пробовал посылать ProgressBar1.ProcessPaintMessages, но это наоборот не дает никаких результатов(т.е. не отрисовывается плавно)


Vladimir Kladov   (2002-09-20 11:16:00) [1]

Самое простое

while Applet.ProcessMessage do;

Я наверное верну именно такой код в ProcessMessages. Сейчас там стоит WaitMessage. Он все тормозит. Кому надо, вызовет его сам.

С потоком - решение идеальное, если идут длинные запросы к функциям апи, из которых долго нет возврата. если свой цикл, в него проще вставлять обращение к ProcessMessage.


Gandalf   (2002-09-19 18:47:00) [2]

1)Либо ProcessMessages(Ex),
2)либо Поток.
Первое проще, второе качественее.


BorisMor   (2002-09-19 16:21:00) [3]

Правдо "гладкого скольжения" индикатора здеь нету.


BorisMor   (2002-09-19 16:20:00) [4]

for j:= 0 to List.Count-1 do
begin
if j * 100 div List.Count > Progress.Progress then
begin
Progress.Progress := j * 100 div List.Count;
Applet.ProcessMessagesEx;
end;
...
В данном случает
Progress - Progressbar
List - PStrList

Копирайт Vladimir Kladov :)


SPeller   (2002-09-19 15:01:00) [5]

Чтобы всё было гладко создай поток и поручи ему обработку цикла, при этом обновляя из цикла значение прогресс-бара.


Наверх

Титульная страница Поиск, карта сайта Написать письмо