Страница: 1 |
Страница: 1 |
Вопрос: Progress bar
Добавлено: 16.06.06 17:32
Автор вопроса: ZevS | ICQ: 285235
Задача как я догадываюсь легкорешаема, тока надо знать как :)
Значит есть совокупность неких операций (Хттп запрос и его текстовая обработка. циклов !нет!). Этот процесс занимает некоторое время (~3-6сек). Хотелось бы организовать сабж. Как заставить одновременно с этой операцией двигать прогрессбар?
Ответы
Всего ответов: 4
Номер ответа: 1
Автор ответа:
Nj
ICQ: 223663115
Вопросов: 21
Ответов: 285
Профиль | | #1
Добавлено: 16.06.06 19:40
DoEvents - я полагаю - для фоновых операций,
а насчет просчета времени - это сложнее...
Можно наверно так:
операторы
progbar=progbar+1
DoEvents
Номер ответа: 2
Автор ответа:
ZevS
ICQ: 285235
Вопросов: 2
Ответов: 3
Профиль | | #2
Добавлено: 16.06.06 20:01
я так предполагаю, этот код разумен только только в цикле. а у меня их нет. причем вид этого прогресс бара не имеет значения, будь то стандарный компонент с таймером или компонент сторонний (мой вариант). Проблема именно в том чтобы заставить работатть их одновременно. а у меня получается:
----
операции запроса
...
код прогресса
----
сначала выполняется 1е потом 2е.
Номер ответа: 3
Автор ответа:
Wolf4D
Вопросов: 20
Ответов: 131
Web-сайт:
Профиль | | #3
Добавлено: 21.06.06 14:15
Я думаю, прогрессбар в таких случаях многие запускают от балды, т.е. совершенно не ориентируясь на реальный ход процесса.
Если нужен такой прогрессбар, то вот код:
Private Sub Timer1_Timer()
Timer1.Interval = Timer1.Interval - 1
progressbar1.Value = 100 - Timer1.Interval
end sub
Комментарии: интервал таймера Timer1 необходимо поставить на 100 перед началом работы прогрессбара, значение свойства Max у ProgressBar1 должно быть равно 100.
А если процедура длится не столько времени, а меньше, то сотни везде (и в коде, и в значениях) надо заменить на необходимые значения, подобранные экспериментальным путём.
P.S.Только надо помнить, что иногда программа натурально "зависает" во время процедуры и все те 3-6 секунд она не реагирует на действия пользователя и не работает ни с какими элементами вообще. В таком случае надо сначала пропустить прогрессбар примерно до середины, а потом запустить процесс. У пользователя создастся такое впечатление, что программа на некоторое время затормозила, но не висит.
P.P.S. Или можно сделать прогрессбар с ТАКИМИ задержками, что пользователь не заметит торможения )) (шутка юмора, всерьёз последий пункт не принимать)
Номер ответа: 4
Автор ответа:
Mihalыch
ICQ: 373-509-101
Вопросов: 56
Ответов: 330
Профиль | | #4
Добавлено: 21.06.06 16:13
Если просто нужно информировать пользователя о том, что программа занята выполнением действий, то можно заменить курсор мыши на часы...