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

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

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

 

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

 

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

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

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

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

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

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

КонецЕсли;

КонецЕсли;

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

 

 

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

 

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

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

КонецЦикла;

 

 

См. также

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

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

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

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

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

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

КонецЕсли;

КонецЕсли;

КонецПроцедуры
7. Игорь Высоковских (via) 80 17.11.10 14:50 Сейчас в теме
не уверен что скорость увеличится пропорционально навороченным наворотам ;-)
8. krupp 17.11.10 22:29 Сейчас в теме
Всегда считал, что красивое должно быть минималистским.
Супер!
9. Артур Аюханов (artbear) 838 18.11.10 09:00 Сейчас в теме
(0) Тормозить будет, нужно с какими-то перерывами :(
10. Игорь Высоковских (via) 80 18.11.10 09:21 Сейчас в теме
11. Илья (gucci76) 341 24.11.10 12:35 Сейчас в теме
(7) Возможно что и не увеличится, т.к. используется Состояние();
Я просто использую подобное в форме через Форма..Заголовок(), и в нем перерисовка заметно увеличивает время.
Поэтому и написал.
Признаю свою невнимательность!!!
12. Игорь Высоковских (via) 80 24.11.10 12:53 Сейчас в теме
(11) Проверка на изменение процента уже есть:
Если Процент > Цел((Текущ-1)/Всего*100) Тогда
другое дело, что предыдущий процент каждый раз пересчитывается... Но я проверял - нагрузка при этом не большая.. Обычно нагрузку на процессор на 99,999 % оказывают другие "операторы".
13. Илья (gucci76) 341 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) 80 13.02.12 07:38 Сейчас в теме
(14) SashaA,
Прогрессбары встраиваются туда, где известно общее кол-во "итераций"
Я иногда сначала пробегаю по справочнику (документам), узнаю общее кол-во элементов, а затем уже (вторым циклом) использую прогрессбар (глПрогрессор("Обработка",ЭлементовВсего,ин))
17. Алексей (Rockman) 14.03.12 16:00 Сейчас в теме