gifts2017

ПрогрессБар в строке состояния

Опубликовал Игорь Высоковских (via) в раздел Программирование - Работа с интерфейсом

ПрогрессБар в строке состояния. Маленький, шустренький (без ВК)

 

В Глобальный модуль вставить процедуру:

 

//******************************************************************************

Процедура глПрогрессор(Сообщение,Всего,Текущ) Экспорт

Если Всего>0 Тогда

Процент=Цел(Текущ/Всего*100);

Если Процент > Цел((Текущ-1)/Всего*100) Тогда

Состояние(Сообщение + ": "+Формат(Процент,"Ч(0)2")+"% "+СтрЗаменить(Формат("","С"+Мин(99,Процент))," ","l")+СтрЗаменить(Формат("","С"+Мин(99,99-Процент))," ","'")+"l");

КонецЕсли;

КонецЕсли;

КонецПроцедуры

 

 

И пользовать.. Вот пример:

 

Для ин=1 По 100000 Цикл

глПрогрессор("Тест",100000,ин);

КонецЦикла;

 

 

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Serj (Serj1C) 13.11.10 16:01
в принципе и на 8.х заработает
2. Сергей Сытько (8SiriuS8) 14.11.10 00:16
(1) На 8-ке есть штатный через компановку
3. Александр Медведев (anig99) 14.11.10 12:20
Шепот Теней уже давно такой пример статус бара приводил
4. Борис Соколов (Boog) 17.11.10 13:47
Тормозить будет.....................................................
5. Игорь Высоковских (via) 17.11.10 14:08
дополнительно конечно оказывает небольшую нагрузку (на каждые 100 000 операций + 5 секунд)...
я сейчас вставляю этот "прогрессор" везде.
... без него ощущаю себя ослом перед зеркалом.
... помогает оценить объем работ.

Если обработка робит долго (например, больше часа, то юзаю уже http://infostart.ru/public/78034/ )
romanuil; +1 Ответить
6. Илья (gucci76) 17.11.10 14:36
Процедура глПрогрессор(Сообщение,Всего,Текущ,ТекущийПроцент) Экспорт

Если Всего>0 Тогда

Процент=Цел(Текущ/Всего*100);
Если Процент = ТекущийПроцент Тогда
Возврат; // не надо лишний раз перерисовывать
КонецЕсли;

Если Процент > Цел((Текущ-1)/Всего*100) Тогда

Состояние(Сообщение + ": "+Формат(Процент,"Ч(0)2")+"% "+СтрЗаменить(Формат("","С"+Мин(99,Процент))," ","l")+СтрЗаменить(Формат("","С"+Мин(99,99-Процент))," ","'")+"l");

КонецЕсли;

КонецЕсли;

КонецПроцедуры
7. Игорь Высоковских (via) 17.11.10 14:50
не уверен что скорость увеличится пропорционально навороченным наворотам ;-)
8. krupp 17.11.10 22:29
Всегда считал, что красивое должно быть минималистским.
Супер!
9. Артур Аюханов (artbear) 18.11.10 09:00
(0) Тормозить будет, нужно с какими-то перерывами :(
10. Игорь Высоковских (via) 18.11.10 09:21
11. Илья (gucci76) 24.11.10 12:35
(7) Возможно что и не увеличится, т.к. используется Состояние();
Я просто использую подобное в форме через Форма..Заголовок(), и в нем перерисовка заметно увеличивает время.
Поэтому и написал.
Признаю свою невнимательность!!!
12. Игорь Высоковских (via) 24.11.10 12:53
(11) Проверка на изменение процента уже есть:
Если Процент > Цел((Текущ-1)/Всего*100) Тогда
другое дело, что предыдущий процент каждый раз пересчитывается... Но я проверял - нагрузка при этом не большая.. Обычно нагрузку на процессор на 99,999 % оказывают другие "операторы".
13. Илья (gucci76) 24.11.10 12:55
(13) Дейстительно! Можно и так проверить изменение процента! А я не догадался! :D
14. SashaA 26.10.11 13:36
Подскажите пожалуйста как встроить:

Для ин=1 По 100000 Цикл
глПрогрессор("Тест",100000,ин);
КонецЦикла;



в например:

Процедура XXXXX()
СПР=СоздатьОбъект("Справочник.Контрагенты");
СПР.ВыбратьЭлементы ();
Пока СПР.ПолучитьЭлемент () = 1 Цикл
ТРАЛИ ВАЛИ
КонецЦикла;
КонецПроцедуры


Заранее спасибо.
15. romanuil romanuil (romanuil) 11.02.12 15:47
Работает, и очень просто в программировании.
16. Игорь Высоковских (via) 13.02.12 07:38
(14) SashaA,
Прогрессбары встраиваются туда, где известно общее кол-во "итераций"
Я иногда сначала пробегаю по справочнику (документам), узнаю общее кол-во элементов, а затем уже (вторым циклом) использую прогрессбар (глПрогрессор("Обработка",ЭлементовВсего,ин))
17. Алексей (Rockman) 14.03.12 16:00
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа