Текущий архив: 2003.06.09;
Скачать: CL | DM;
Вниз
Долгий цикл + ProgressBar Найти похожие ветки
← →
Vit@l (2002-09-19 14:50) [0]Есть долгий цикл и хотелось бы показывать прогресс на ProgressBar"е. Только вся фишка в том, что во время цикла ProgressBar не обновляется, тлолько в конце становится весь сразу окрашенным. Тогда стал смотреть на ProcessMessages. Как оказалось в KOL их целый набор. Поставил в цикле Applet.ProcessPaintMessages, однако это стало офигенно тормозить работу. Что делать?
Пробовал посылать ProgressBar1.ProcessPaintMessages, но это наоборот не дает никаких результатов(т.е. не отрисовывается плавно)
← →
SPeller © (2002-09-19 15:01) [1]Чтобы всё было гладко создай поток и поручи ему обработку цикла, при этом обновляя из цикла значение прогресс-бара.
← →
BorisMor (2002-09-19 16:20) [2]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 :)
← →
BorisMor (2002-09-19 16:21) [3]Правдо "гладкого скольжения" индикатора здеь нету.
← →
Gandalf (2002-09-19 18:47) [4]1)Либо ProcessMessages(Ex),
2)либо Поток.
Первое проще, второе качественее.
← →
Vladimir Kladov (2002-09-20 11:16) [5]Самое простое
while Applet.ProcessMessage do;
Я наверное верну именно такой код в ProcessMessages. Сейчас там стоит WaitMessage. Он все тормозит. Кому надо, вызовет его сам.
С потоком - решение идеальное, если идут длинные запросы к функциям апи, из которых долго нет возврата. если свой цикл, в него проще вставлять обращение к ProcessMessage.
Страницы: 1 вся ветка
Текущий архив: 2003.06.09;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.022 c