|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
07.05.2015, 18:46 | #1 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
ProgressBar
Всем привет!
вашему вниманию предлагается ProgressBar открываете файл, жмете кнопку, смотрите в строку статуса, демонстрация работы длится приблизительно минуту. все, кому доводилось писать макросы знают, что не всегда обработка данных происходит мнгновенно. на мой взгляд если процедура занимает больше 2-3 сек пользователя уже нужно информировать что идет процесс обработки, чтобы он не нервничал и понимал что все нормально - программа работает. для этих целей используют Индикатор процесса или ProgressBar. предлагаемый ProgressBar в меру информативен и динамичен. отображается в строке статуса. из настроек у Вас есть начальная строка StartStr и количество шагов Count, которые можно задать отдельно, а можно предать процедуре InitVar. функция State возвращает состояние ProgressBar для i-го шага, в котором есть стартовая строка, % уже выполненых шагов, динамический индикатор процесса и прогноз времени до окончания процесса. Код:
Игорь
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
08.05.2015, 06:44 | #2 |
Форумчанин
Регистрация: 09.08.2013
Сообщений: 202
|
Игорь привет, красота.
Подскажи как эту красоту заточить если у меня 5 модулей и они попеременно выполняются? Не могу понять что куда воткнуть. Спасибо! |
08.05.2015, 11:03 | #3 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
експорт модуля класса из вложенного файла, импорт в свою книгу и можно пользоваться
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
15.05.2015, 13:51 | #4 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
Первоначальный вариант выложен на эмоциях - возникла мысль, удалось ее реализовать именно в том виде, как задумано и я тут же выложил сюда...
Тепеть все работает гораздо быстее за счет того, что в строке статуса отображается не каждый шаг (как было раньше), а только те, когда строка отображающая состояние процесса изменилась и ее нужно показать на первом варианте (на моем копьютере) цикл на 0.5млн. шагов работал чуть больше минуты то в данном варианте цикл на 50 млн. шагов работает чуть больше полминуты, т.е.количество вычислений увеличилось в 100 раз, а время затраченное на это уменьшилось вдвое представленный ниже код необходимо скопировать в проект, в отдельный модуль. в использовании все просто: 1. Инициируете переменные InitProgressBar К-воШагов, Информационная строка 2. в цикле ProgressBarAt №Шага 3. Очистите строку статуса по окончании цикла Application.StatusBar = False процедура Test в конце кода - это собственно пример использования ProgressBar, для работы ProgressBar она не нужна, может быть удалена Код:
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
Последний раз редактировалось IgorGO; 15.05.2015 в 13:57. |
17.05.2015, 19:52 | #5 |
Особый статус
Участник клуба
Регистрация: 24.11.2008
Сообщений: 1,535
|
Не было ни гроша, да вдруг алтын!
Вот это тема! Импорт в свой проект, боюсь, займёт всю ночь.
Вы не могли бы в качестве примера использования встроить своё изобретение в какое-нибудь из моих?
Скорострельность последнего высока, но как пример встраивания тоже, надеюсь, пойдёт.
Формула 1 (календарь чемпионата-2016): 26.11.2016 15:55 — Абу-Даби: http://ru.wikipedia.org/wiki/Гран-при_Абу-Даби — (квалификация)! Эфир: http://lion-tv.com/28-match-tv.html
Последний раз редактировалось Sasha_Smirnov; 17.05.2015 в 20:00. |
17.05.2015, 20:52 | #6 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
Саша, а каие сложности?
1. добавляете модуль в проект (правой кнопкой по имени проекта, Insert, Module) ексель добавит в проект Module1 или Module2 и т.д. (не знаю сколько модулей уже есть в Вашем проекте) 2. в этот самый добавленный модуль копируете код из моего предыдущего сообщения. Все, ProgressBar внедрен в Ваш проект. 3. Чтобы использовать ProgressBar Ваш макрос должен выполлнять какое-то циклическое действие (обработку строк в таблице, обработку символов в строке и пр.) 3.1. Выдолжны наперед знать сколько данных необходимо обработать а дальше в предыдущем сообщении написано "в использовании все просто:" и 3 простых шага... не вижу смысла повторять почему не внедрил в ваши темы? потому что написано это выполняется 0.3 секунды, это еще меньше... на быстрых расчетах использование ProgressBar не имеет смысла, на коротких рассчетах 3-5 сек - можно, но без особого эФфекта, а вот если расчет в несколько тысяч шагов, и 20-30 сек и более по времени - на таком расчете ProgressBar отвлечет пользователя от тягостного ожидания.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
17.05.2015, 21:42 | #7 | |||
Особый статус
Участник клуба
Регистрация: 24.11.2008
Сообщений: 1,535
|
Полшага к цели
Цитата:
Цитата:
Цитата:
Приложил проект. Для визуализации задержки вводил число из 16—17 единиц. Расчёт идёт секунд 5—10, но, как вы понимаете, пока без полосы.
Формула 1 (календарь чемпионата-2016): 26.11.2016 15:55 — Абу-Даби: http://ru.wikipedia.org/wiki/Гран-при_Абу-Даби — (квалификация)! Эфир: http://lion-tv.com/28-match-tv.html
Последний раз редактировалось Sasha_Smirnov; 17.05.2015 в 21:50. Причина: ALT |
|||
18.05.2015, 03:57 | #8 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
отмечаете число, запускаете макрос
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
18.05.2015, 04:30 | #9 |
Особый статус
Участник клуба
Регистрация: 24.11.2008
Сообщений: 1,535
|
Прогон
Всё работает, IgorGO! Из-за мелькания на скрин не попало, а так видно.
Спасибо, что заинтересовались и нашли время! На соседнем* форуме программистов в одной из моих тем мне тоже прикрутили этакий движок. Буду изучать. ____________ * вроде бы дружественном...
Формула 1 (календарь чемпионата-2016): 26.11.2016 15:55 — Абу-Даби: http://ru.wikipedia.org/wiki/Гран-при_Абу-Даби — (квалификация)! Эфир: http://lion-tv.com/28-match-tv.html
Последний раз редактировалось Sasha_Smirnov; 18.05.2015 в 04:55. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Progressbar | kalugin19 | Общие вопросы Delphi | 4 | 28.11.2013 14:15 |
ProgressBar | Diamand | Microsoft Office Access | 5 | 05.04.2012 22:01 |
ProgressBar как Slider или Slider как ProgressBar | coNsept | Общие вопросы .NET | 5 | 08.03.2012 17:00 |
Progressbar | slai | Компоненты Delphi | 2 | 18.10.2010 04:36 |
ProgressBar | Andrei Isaev | Общие вопросы Delphi | 1 | 20.11.2008 14:59 |