AXForum  
Zurück   AXForum > Microsoft Dynamics AX > DAX: База знаний и проекты
All
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 09.08.2007, 17:08   #11  
mazzy ist offline
mazzy
Участник
Benutzerbild von mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29.472 / 4494 (208) ++++++++++
Registriert seit: 29.11.2001
Ort: Москва
Blog-Einträge: 10
Zitat:
Zitat von Андре Beitrag anzeigen
Я этот прогресс-бар стандартный использую в сотне мест в своем модуле и отказываться от него не собираюсь. Еще я мерял траффик - в разных конфигурациях. Мне бы было спокойнее если бы я нашел проблемы с моим прогресс баром, но я их не обнаружил. Поэтому если ты видишь конкретные ляпы в такой реализации - буду рад услышать.
Дык, я против что ли?
Наоборот, огромное спасибо.
Я только хотел сказать, что стоит сначала разобраться в стандартном функционале.

Про ляпы ниже.

Zitat:
Zitat von Андре Beitrag anzeigen
Кстати, на мой взгляд, стандартный функционал с прогресс барами в количестве > 3 уже воспринимается с усилием. И это у меня, человека, который большое количество времени использует различные гаджеты. Поэтому делать форму состоящую из 5 прогресс баров, скачущих "хаотичным образом" одновременно для среднестатистического бух-ра я никогда рекомендовать не буду.
А зачем заставлять их скакать хаотичным образом?
Заполняй первый, потом второй потом третий. Заполненные бары означают полностью выполненную работу. Просто вместо процентов будет зеленая полоска.


Теперь ляпы.
Zitat:
Zitat von Андре Beitrag anzeigen
1. Создаем форму
Форма всегда выполняется на клиенте. Т.е. будет гарантированный трафик между клиентом и сервером при каждом обращении к самодельному прогресс-бару.

Форма не создается в режимах: BenchmarkTool, веб-сессия, нет GUI (COM-коннектор, .NET-коннектор). Самодельный в этих режимах выдаст ошибки.

см. SysOperationProgress.allowFormSetup() // не забудь посмотреть в родителя
И вообще стоит подумать на тему, почему стандартный прогресс-бар сделали классом, а не формой.

Zitat:
Zitat von Андре Beitrag anzeigen
2. На форме создаем методы:
А они всегда выполняются на клиенте

Zitat:
Zitat von Андре Beitrag anzeigen
Метод отображающий прогресс операции:
X++:
void setPercent(int _idx, str _percent)
{
    FormListItem    item;
    ;
    item = listCtrl.getItem(_idx);


    if (WinApi::getTickCount() - timer > 500)
    {
        if (pulse)
            item.image(1);
        else
            item.image(2);

        pulse = !pulse;
        timer = WinApi::getTickCount();

       listCtrl.setItem(item);
       listCtrl.setText(item.idx(), _percent, 1);
       WinApi::updateWindow(element.hWnd());
    }

 
}
Стоит подумать на тему, почему этот гребанный стандартный прогресс-бар сделан так сложно. Ведь тебе именно это не нравится.

Отвечаем. В гребанном стандартном прогресс-баре отделена логика и представление. В стандартном сами хранимые числа получаются в одном месте, а отображаются они в другом. В самодельном конечно же все проще. Просто в самодельном прогресс-баре бизнес-логика и логика представления/отображения находятся в одном месте.

Я не говорю, что это плохо. В каких-то случаях это может быть и хорошо.
Но... Рано или поздно самодельный превратится в такой же сложный как и стандартный... А сил на самодельный будет потрачено немало.


Zitat:
Zitat von Андре Beitrag anzeigen
Передали номер задачи + текст (сколько то там процентов).
Самодельный прогресс-бар может быть только один.
Если внутри кто-то не знает о внешнем самодельном прогресс-баре, то на экране появится два окошка, три окошка и т.д.

Стандартный объединяет все прогресс-бары в одном окне.
Внутренний метод НЕ должен знать о внешнем стандартном прогрес-баре.
Он просто создает свой, и стандартный код подцепляет его полоску к уже существующим.

В самодельном будет несколько окон.
Опять же не говорю, что это плохо

Zitat:
Zitat von Андре Beitrag anzeigen
Примерный способ использования:
X++:
// Показ формы
void run()
{
 progressBar = this.initProgressBar(['  Сохранение документа','  Захват значений', '  Учет настроек HQ консолидации','  Составление списка ячеек', '  Удаление старых значений', '  Открытие файла']);
Пробелы не спроста?

Zitat:
Zitat von Андре Beitrag anzeigen
X++:
    this.openDocument();
    progressBar.setFinalStatus(0); // мы сделали первую задачу

    delete_from values where values.ReportId == report.ReportId;
    progressBar.setFinalStatus(1); // мы сделали вторую задачу
Общая таблица?
Если разные пользователи создают один и тот же отчет, то что они увидят?

Zitat:
Zitat von Андре Beitrag anzeigen
X++:
    num =  this.total();
    cnt = 0;
    while select valuesSetup where valuesSetup.ReportType == report.ReportType
    {
        this.processCellSetup(valuesSetup.SheetName, valuesSetup.ExcelLabel);
        cnt++;
        progressBar.setPercent(2, strfmt('%1', cnt/num * 100) + '%');  // отображаем процесс длиетльной операции
    }
    progressBar.setFinalStatus(2);  // мы сделали третью задачу
Т.е. вызывающий метод должен считать проценты самостоятельно?
СУПЕРЛЯП: нет проверки на деление на ноль.

Zitat:
Zitat von Андре Beitrag anzeigen
p.s. Я показал 99% полезного кода. 1% - если что-то забыл.
Если честно, то больше всего удивляет использование общей таблицы.
Неужели у вас никогда не бывает такого, что разные пользователи делают один и тот же отчет?
__________________
полезное на axForum, github, vk, coub.
This post has been rated by: Андре (5).
Stichworte
benchmark, progress bar, интерфейс, как правильно, crm2011

 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
ProgressBar exodus DAX: База знаний и проекты 7 20.08.2008 11:33
ProgressBar в StatusBar(е) Morpheus DAX: База знаний и проекты 8 10.09.2007 15:21
Как запустить свой класс при входе пользователя в систему? miaa DAX: Программирование 2 24.05.2007 15:04
Как сказать форме подогнать свой размер Prof DAX: Программирование 10 25.11.2005 16:33
Как создать свой Web-портал? Zman DAX: Программирование 4 21.01.2005 11:23

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 18:53 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.