![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Долгий цикл + 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]Чтобы всё было гладко создай поток и поручи ему обработку цикла, при этом обновляя из цикла значение прогресс-бара.