|
![]() |
#1 |
Administrator
|
Ответ-то вроде лежит на поверхности. Судя по индикатору (если не исследовать внутренности кода) - внутренний счетчик прогресс-бара начинается с 1 (а если полезть изучать код, то это можно будет увидеть). И первый вызов progress.incCount() увеличивает его до 2 (а это 50% из 4-х).
Поменяйте местами progress.setText и progress.incCount() - и получите желаемое. Можно еще будет между ними поставить (чисто для целей отладки) явный вызов progress.update(true) для перерисовки формы на экране, хотя в общем-то он и так вызывается из каждого метода
__________________
Возможно сделать все. Вопрос времени Последний раз редактировалось sukhanchik; 29.09.2020 в 22:14. |
|
![]() |
#2 |
Участник
|
|
|
![]() |
#3 |
Administrator
|
Судя по скриншотам - это так. И поэтому собственно "зависание" на 100%-ах
__________________
Возможно сделать все. Вопрос времени |
|
![]() |
#4 |
Участник
|
Цитата:
Я открыл код которых мильён с прогрессом. И там все норм - с ноля начинается. Тотал - 4, и значит надо 4 итерации чтобы заполнить прогресс. А что случилось у автора темы не понятно.. толи он нам чего-то не договаривает между точек толи... Ну можем сойтись на том, у него то как раз RunbaseProgress начинается с единицы.. кастомизация) Последний раз редактировалось Perc; 02.10.2020 в 12:59. |
|
![]() |
#5 |
Участник
|
У вас проблемы с доверием.
По поводу скриншетов - они абсолютно достоверны. То что я указал точки (...) не для того что бы что то скрыть - там был код который абсолютно не относится и затрудняет восприятие проблемы. У меня 4 итерации. Начиная с 1 по 4 включительно. Нумерация в цикле с 1 по 4 включительно. Я же код не зря предьявил. Вопрос почему на первой итерации уже было 50% прогресса? Последний раз редактировалось oleggy; 02.10.2020 в 14:47. |
|
![]() |
#6 |
Участник
|
вам уже ответили:
Цитата:
Сообщение от sukhanchik
![]() Ответ-то вроде лежит на поверхности. Судя по индикатору (если не исследовать внутренности кода) - внутренний счетчик прогресс-бара начинается с 1 (а если полезть изучать код, то это можно будет увидеть). И первый вызов progress.incCount() увеличивает его до 2 (а это 50% из 4-х).
а чтобы увидеть значение счетчика внутри прогресса - методом progress.getCount_RU() |
|
![]() |
#7 |
Участник
|
Цитата:
Воспользуйтесь отладчиком, посмотрите. |
|
![]() |
#8 |
Участник
|
Перевел весь свой код в просто джоб. Что бы предметно дебажить.
X++: Counter countRows, numRows; Counter strFrom = 1, strTo = 4; RunbaseProgress progress = new RunbaseProgress(); #AviFiles void progressUpdate(Counter _curr, Counter _num) { str percent = strFmt("%1%", decRound((_curr / _num) * 100, 2)); progress.setText(strfmt("@SYS66083", _curr, _num, percent)); progress.incCount(); //progress.update(true); } ; progress.setCaption("Импорт"); progress.setAnimation(#AviUpdate); numRows = strTo - strFrom + 1; progress.setTotal(numRows); startLengthyOperation(); for (countRows = 1; countRows <= numRows; countRows++) { progressUpdate(countRows, numRows); sleep(2000); } endLengthyOperation(); } Цитата:
Поэтому смотрел через дебаг. Нумерация у меня идет с нуля. Перед первым выполнением progress.incCount() значение progress.oprProgress.lapProgress равно 0. Как вы видете после запуска джоба я вижу только три изменения окна прогресс бара. ТРИ. Но если я раскомменчу progress.update(true) отображает корректно ЧЕТЫРЕ окна. Четыре итерации. Т.е. 1 - 25%, 2 - 50%, 3 - 75%, 4 - 100%. Я почему тему поднял, просто хотелось понять: 1. почему ТАК криво отображается прогресс бар? 2. после какого оператора происходит обновление окна Импорт? Какой метод это делает? Или после какого метода это происходит? Последний раз редактировалось oleggy; 02.10.2020 в 19:48. |
|