Демонстрация использования функций индикации состояния: UseProgress(), MESSAGE()
Сохранить в файлеОбсудить в форуме
Описание
Пример использования индикаторов состояния:
- "градусника" - InitProgress(...), UseProgress()
- индикатора в строке состояния - Message(...)
Исследование изменения производительности (скорости выполнения макроса) в зависимости от выбранного способа индикации состояния.
См. подробнее комментари к макросу.
- "градусника" - InitProgress(...), UseProgress()
- индикатора в строке состояния - Message(...)
Исследование изменения производительности (скорости выполнения макроса) в зависимости от выбранного способа индикации состояния.
См. подробнее комментари к макросу.
Текст примера
/*************************************************************************** * Головин Леонид 22-09-98 *i *i Демонстрация СОВМЕСТНОГО использования функций индикации состояния: *i InitProgress(...), UseProgress() *i MESSAGE() *i *i Внимание!!! На отображение индикатора состояния инициируемого функцией *i InitProgress(...) уходит значительно меньше ресурсов, чем *i на отображение информации от функции MESSAGE(...). Это *i это связано с тем, что в цикле до 1000 первый обновится 100 *i раз, а второй 1000 раз!!! *i Поэтому, если Вам важно быстродействие ваших макросов НЕ ИСПОЛЬЗУЙТЕ *i вообще НИКАКИХ индикаторов. *i Если желаете работать быстро, и видеть ход процесса используйте *i InitProgress(...). *i Если желаете работать КРАСИВО, но медленно используйте совместно *i InitProgress(...) и MESSAGE(...) *i Данный эффект можно проследить в работе макроса: до 50% он проходит быстро *i т.к. отображается только InitProgress(...), а вот от 50 до 100% макрос *i ползет, т.к. отображаются совместно оба индикатора InitProgress(...) *i и MESSAGE(...) *i **************************************************************************** */ i=0; top=100000; InitProgress(top /*Предельное значение*/ ," ~C~трока статуса (нижняя) ~будет~ изменена на ~50%~ " /*Нижняя строка*/ ," Тест индикаторов InitProgress(...) и MESSAGE(...)"); /*верхняя строка*/ WHILE (i<top) i=i+1; UseProgress(i); IF( i > top/2 ) MESSAGE(" ~"+string(i:5),"~ Индикатор начиная от числа ~" +STRING(INT(top/2):5) +"~ закрыл статус от InitProgress"); END; end; remprogress;