Объект ПрогрессБар

Автор alyuev, 20 февраля 2024, 17:49

« назад - далее »

alyuev

Пробую запусить. Не получается. На голой конфиге в ПриНачалеРаботыСистемы(). Версия 191.

   
Рез=ЗагрузитьВнешнююКомпоненту(КаталогПрограммы()+"FormEx.dll");
РасширенноеОкноСообщений=СоздатьОбъект("ОкноСообщений");
РасширенноеОкноСообщений.ПодключитьСистемноеОкноСообщений();
РасширенноеОкноСообщений.Парковать(1);
РасширенноеОкноСообщений.ПерехватСистемныхСообщений(1+2+4+8+16+32+64+128+256+512);//Перехватываем все сообщения
РасширенноеОкноСообщений.СтильКакМодуль(1);//Вызывать после Перехвата! Иначе стиль не применится.
РасширенноеОкноСообщений.Видимость(1);	  //Показываем здесь, после всех установок, чтобы не мелькало
	
Прог=СоздатьОбъект("ПрогрессБар");
Прог.Создать(1,100000); //Не работает - пишет, что не хватает параметров, хотя в описании написано, что все последующие - необязательны.
//РасширенноеОкноСообщений.Прогресс = Прог; //Не работает, пишет нет такого атрибута
//Прог=РасширенноеОкноСообщений.Прогресс;  //Не работает, пишет нет такого атрибута
Для нн=1 По 1000000 Цикл
    Прог.Шагнуть(1);
КонецЦикла;

И в als-файле не нашел описания атрибута у объекта ПанельСтрокиСостояния

АЛьФ

В als была ошибка. Атрибут "Прогресс" есть у объекта "Панель строки состояния".
Доеду до дома, приложу сюда пример.

alyuev

Еще в ходе попытки запустить выяснил (вспомнил :-), что у меня уже есть объект с именем "ПрогрессБар". Это мой класс. Наследовать от твоего нельзя - ругается на рекурсию имён.
Я, конечно, понимаю глупость своего вопроса, но всё же задам - может изменить у тебя название, например, на FormEx.ПрогрессБар?

АЛьФ

Вот обработка, на которой я тестил прогресс.

АЛьФ

Цитата: alyuev от 20 февраля 2024, 19:03FormEx.ПрогрессБар?
Добавлю для такого случая всем объектам дополнительные алиасы с префиксами "FormEx.".

Злоп

Как-то странно выглядит
РасширенноеОкноСообщений.ПерехватСистемныхСообщений(1+2+4+8+16+32+64+128+256+512);
... при том что подключились к системному ОС...
?

alyuev

Цитата: АЛьФ от 20 февраля 2024, 21:49Вот обработка, на которой я тестил прогресс.
Спасибо!

alyuev

В качестве фантазии - а заголовок окна, хотя бы теоретически, может выступать в качестве базы для прогресс-бара?

АЛьФ

Цитата: alyuev от 21 февраля 2024, 13:38В качестве фантазии - а заголовок окна, хотя бы теоретически, может выступать в качестве базы для прогресс-бара?

Жениться тебе надо, барин...

Теоретически базой для прогресса может быть какое угодно окно с любыми координатами. Но это приличная переделка объекта получится. Непонятно зачем.

alyuev

Просто заголовок формы или даже окна 1С почти в любом случае есть. Не нужно доп-объект добавлять на форму. Понятно, что и нижняя панель тоже почти всегда есть. Так что это ж я так.... Пофантазировал...

АЛьФ

Цитата: alyuev от 21 февраля 2024, 14:07Просто заголовок формы или даже окна 1С почти в любом случае есть. Не нужно доп-объект добавлять на форму. Понятно, что и нижняя панель тоже почти всегда есть. Так что это ж я так.... Пофантазировал...
Вот у нас как раз обычно заголовка нет, т.к. пользователи разворачивают внутренние окна. И ау.
Заголовок только на модальных формах.

АЛьФ

Цитата: alyuev от 20 февраля 2024, 19:03Еще в ходе попытки запустить выяснил (вспомнил :-), что у меня уже есть объект с именем "ПрогрессБар". Это мой класс. Наследовать от твоего нельзя - ругается на рекурсию имён.
Я, конечно, понимаю глупость своего вопроса, но всё же задам - может изменить у тебя название, например, на FormEx.ПрогрессБар?

Вдруг подумалось, что просто добавление алиасов с префиксами не решит проблемы. Ведь в системе останутся объекты со старыми именами.
А вот если сделать так: если файл компоненты называется не "FormEx.dll", то к объектам добавляется префикс, равный имени файла компоненты. Т.е. достаточно будет переименовать "FormEx.dll" в "MyAddIn.dll" и надо будет уже писать не
СоздатьОбъект("ПрогрессБар");

а надо будет
СоздатьОбъект("MyAddIn.ПрогрессБар");

Подойдет такое решение?

alyuev

Нет. Думаю такой огород городить не нужно. Мне тогда нужно будет просто переименовать свой класс и, соответственно, создание объекта. Это ж всё-таки уже наши "проблемы".

alyuev

Такой вопрос/предложение - может сделать параметр КоличествоШагов методе Шагнуть(<КоличествоШагов>), как определитель - через сколько нужно выводить прогресс, а не просто шагнуть на столько шагов?

А то получается так. Например цикл от 1 до 100. Делаю шаг 5. И Прогресс отрисуется уже за 20 шагов на все 100%. А логичнее было бы делать отрисовку только каждые 5 шагов. Т.е. как условие  Шаг%КоличествоШагов=0.

alyuev

Хотя нет, наверно я не прав. Надо просто при вызове метода Шагнуть() использовать формулу типа

?(нн%ЧерезСколькоВывести=0,ЧерезСколькоВывести,0)

где нн - счетчик шагов, а ЧерезСколькоВывести - задаем длительность периода вывода следующего значения