AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.09.2020, 21:22   #1  
oleggy is offline
oleggy
Участник
 
276 / 36 (2) +++
Регистрация: 03.12.2019
Адрес: Россия
DAX09: некорректное отображение полоски ProgressBar
Привет.
Вроде ничего сложного но не могу разобратся, почему у меня некорректно отображается полоска прогресс бара в методе run классе наследнике RunBase.
Начальные значения: strTo = 1, strFrom = 4.
Т.е. 4 итерации, все просто. Соответственно и полоска прогресс бара для 1 итерации должна нанимать 25%, для 2 - 50%, 3 - 75%, 4 - 100%.
Но почему так некорректно отображается? Что даже итерацию 4 - не показывает. Приложил скриншеты.

X++:
public void run()
{
    ...
    Counter            curRow, countRows, numRows;
    ...
    void progressUpdate(Counter _curr, Counter _num)
    {
        real percent = decRound((_curr / _num) * 100, 2);
        ;
        progress.incCount();
        progress.setText(strfmt("%1 из %2 (%3)", _curr, _num, strFmt("%1%", percent)));
    }
    ;
    ...
    numRows = strTo - strFrom + 1;
    progress = new RunbaseProgress();
    progress.setCaption("Импорт");
    progress.setAnimation(#AviUpdate);
    progress.setTotal(numRows);

    startLengthyOperation();
    ...
    for (curRow = strFrom; curRow <= strTo; curRow++)
    {
        countRows++;
        progressUpdate(countRows, numRows);
        ...
    }
    ...
    endLengthyOperation();
    ...
}
Изображения
   

Последний раз редактировалось oleggy; 29.09.2020 в 21:25.
Старый 29.09.2020, 22:11   #2  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,323 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Ответ-то вроде лежит на поверхности. Судя по индикатору (если не исследовать внутренности кода) - внутренний счетчик прогресс-бара начинается с 1 (а если полезть изучать код, то это можно будет увидеть). И первый вызов progress.incCount() увеличивает его до 2 (а это 50% из 4-х).
Поменяйте местами progress.setText и progress.incCount() - и получите желаемое. Можно еще будет между ними поставить (чисто для целей отладки) явный вызов progress.update(true) для перерисовки формы на экране, хотя в общем-то он и так вызывается из каждого метода
__________________
Возможно сделать все. Вопрос времени

Последний раз редактировалось sukhanchik; 29.09.2020 в 22:14.
Старый 01.10.2020, 14:02   #3  
Perc is offline
Perc
Участник
 
194 / 57 (2) ++++
Регистрация: 05.03.2005
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
И первый вызов progress.incCount() увеличивает его до 2 (а это 50% из 4-х).
Да нуу. Не может быть.. Если у меня тотал 4, то чтобы проити весь прогресс, я должен всего 3 incCount сделать? Ломаете мне мир) нужна проверка)
Старый 02.10.2020, 12:45   #4  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,323 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Perc Посмотреть сообщение
Да нуу. Не может быть.. Если у меня тотал 4, то чтобы проити весь прогресс, я должен всего 3 incCount сделать? Ломаете мне мир) нужна проверка)
Судя по скриншотам - это так. И поэтому собственно "зависание" на 100%-ах
__________________
Возможно сделать все. Вопрос времени
Старый 02.10.2020, 12:56   #5  
Perc is offline
Perc
Участник
 
194 / 57 (2) ++++
Регистрация: 05.03.2005
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
Судя по скриншотам - это так. И поэтому собственно "зависание" на 100%-ах
Эти скриншоты могу сравнить с надписями на заборе) Всем верить чтоле?
Я открыл код которых мильён с прогрессом. И там все норм - с ноля начинается. Тотал - 4, и значит надо 4 итерации чтобы заполнить прогресс.
А что случилось у автора темы не понятно.. толи он нам чего-то не договаривает между точек толи... Ну можем сойтись на том, у него то как раз RunbaseProgress начинается с единицы.. кастомизация)

Последний раз редактировалось Perc; 02.10.2020 в 12:59.
Старый 02.10.2020, 14:42   #6  
oleggy is offline
oleggy
Участник
 
276 / 36 (2) +++
Регистрация: 03.12.2019
Адрес: Россия
У вас проблемы с доверием.
По поводу скриншетов - они абсолютно достоверны.
То что я указал точки (...) не для того что бы что то скрыть - там был код который абсолютно не относится и затрудняет восприятие проблемы.

У меня 4 итерации. Начиная с 1 по 4 включительно. Нумерация в цикле с 1 по 4 включительно. Я же код не зря предьявил.
Вопрос почему на первой итерации уже было 50% прогресса?

Последний раз редактировалось oleggy; 02.10.2020 в 14:47.
Старый 02.10.2020, 23:26   #7  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,323 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Спасибо за подробное разъяснения! Почерпнул для себя много интересного
__________________
Возможно сделать все. Вопрос времени
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
How to make your ProgressBar progress on server Blog bot DAX Blogs 0 27.12.2013 02:15
Некорректное отображение прокрутки в lookup random DAX: Программирование 2 15.04.2013 16:55
mazzy: Комфортный ProgressBar в DAX 2009 Blog bot DAX Blogs 5 04.09.2012 16:36
Отображение связи n:n на форме mazzy DAX: Программирование 22 16.03.2011 16:19
mazzy: Комфортный ProgressBar Blog bot DAX Blogs 12 05.02.2009 19:54

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 10:39.