29.07.2020, 21:23 | #1 |
Сенбернар
|
Альтернативный индикатор прогресса, или просто - фигня какая-то
DAX2009.
Захотел порадовать пользователя - сделать на форме, с которой запускается класс-обработчик, "показометр" прогресса. Поскольку стандартный Аксин "прогресс" глюкав и любит виснуть, сделал следующее: на форме - строковое поле ProgressIndicator и метод типа X++: Description updateStrProgress(str _mode, int64 _current) { Description ret; ; ret = strfmt('%1 : строка %2', _mode, _current); ProgressIndicator.text(ret); ProgressIndicator.modified(); return ret; } X++: if (caller && formHasMethod(caller, identifierstr(updateStrProgress))) { line++; if (line mod 200 == 0) { caller.updateStrProgress('Обновление данных', line); } } По окончании его работы - отображается последнее сообщение. Вопросы: что это за чудо, можно ли его побороть и если можно, то как?
__________________
Best Regards, Roman |
|
29.07.2020, 23:32 | #2 |
Участник
|
Я не знаю точного ответа, но могу предположить, что класс вызванный с формы и сама форма работают в одном потоке. Поэтому обновление формы происходит только после того, как отработал класс.
Могу предположить, что нужную новую реализацию прогресс-бара можно реализовать только создав новую форму.. Где-то вроде бы видел, что каждая форма Ах работает в своем потоке... но утверждать не берусь. |
|
30.07.2020, 07:31 | #3 |
Участник
|
можно. лучше использовать стандартный, добавив туда infolog.yield()
или добавьте infolog.yield() в свой метод |
|
|
За это сообщение автора поблагодарили: RVS (5). |
30.07.2020, 10:26 | #4 |
Участник
|
Посмотрите ещё стандартную форму \Forms\tutorial_Progress
Там есть пример встроенной в форму полоски |
|
30.07.2020, 17:05 | #5 |
Участник
|
Посмотрите, случайно, не оно?
(Не)перерисовка окна клиента AX 2009 при длительных операциях - вариант решения |
|
|
За это сообщение автора поблагодарили: RVS (5). |
31.07.2020, 20:47 | #6 |
Сенбернар
|
Коллега, речь не о "встроенной в форму полоске", речь о мерзкой привычке этой "полоски" виснусь всякий раз, как пользователь хоть мышкой шевельнет, и желании хоть чем-то работающим эту "полоску" заменить... а форму эту я знаю ))
__________________
Best Regards, Roman |
|
31.07.2020, 20:59 | #7 |
Сенбернар
|
Цитата:
Сообщение от mikki_messer
Посмотрите, случайно, не оно?
(Не)перерисовка окна клиента AX 2009 при длительных операциях - вариант решения Лучший же совет - от mazzy, за что ему отдельное большое спасибо )
__________________
Best Regards, Roman Последний раз редактировалось RVS; 31.07.2020 в 21:10. |
|
02.08.2020, 10:34 | #8 |
Участник
|
Последний раз редактировалось mazzy; 02.08.2020 в 10:36. |
|
03.08.2020, 08:34 | #9 |
Участник
|
Я отказался от infolog.yield() именно из-за того, что пользователь получает доступ к интерфейсу аксапты пока работает код. Стали возникать глюки не только со сменой компании, сейчас уже не вспомню что еще - давно это было.
|
|
|
За это сообщение автора поблагодарили: Logger (3). |