Пробую запусить. Не получается. На голой конфиге в ПриНачалеРаботыСистемы(). Версия 191.
Рез=ЗагрузитьВнешнююКомпоненту(КаталогПрограммы()+"FormEx.dll");
РасширенноеОкноСообщений=СоздатьОбъект("ОкноСообщений");
РасширенноеОкноСообщений.ПодключитьСистемноеОкноСообщений();
РасширенноеОкноСообщений.Парковать(1);
РасширенноеОкноСообщений.ПерехватСистемныхСообщений(1+2+4+8+16+32+64+128+256+512);//Перехватываем все сообщения
РасширенноеОкноСообщений.СтильКакМодуль(1);//Вызывать после Перехвата! Иначе стиль не применится.
РасширенноеОкноСообщений.Видимость(1); //Показываем здесь, после всех установок, чтобы не мелькало
Прог=СоздатьОбъект("ПрогрессБар");
Прог.Создать(1,100000); //Не работает - пишет, что не хватает параметров, хотя в описании написано, что все последующие - необязательны.
//РасширенноеОкноСообщений.Прогресс = Прог; //Не работает, пишет нет такого атрибута
//Прог=РасширенноеОкноСообщений.Прогресс; //Не работает, пишет нет такого атрибута
Для нн=1 По 1000000 Цикл
Прог.Шагнуть(1);
КонецЦикла;
И в als-файле не нашел описания атрибута у объекта ПанельСтрокиСостояния
В als была ошибка. Атрибут "Прогресс" есть у объекта "Панель строки состояния".
Доеду до дома, приложу сюда пример.
Еще в ходе попытки запустить выяснил (вспомнил :-), что у меня уже есть объект с именем "ПрогрессБар". Это мой класс. Наследовать от твоего нельзя - ругается на рекурсию имён.
Я, конечно, понимаю глупость своего вопроса, но всё же задам - может изменить у тебя название, например, на FormEx.ПрогрессБар?
Вот обработка, на которой я тестил прогресс.
Цитата: alyuev от 20 февраля 2024, 19:03FormEx.ПрогрессБар?
Добавлю для такого случая всем объектам дополнительные алиасы с префиксами "FormEx.".
Как-то странно выглядит
РасширенноеОкноСообщений.ПерехватСистемныхСообщений(1+2+4+8+16+32+64+128+256+512);
... при том что подключились к системному ОС...
?
Цитата: АЛьФ от 20 февраля 2024, 21:49Вот обработка, на которой я тестил прогресс.
Спасибо!
В качестве фантазии - а заголовок окна, хотя бы теоретически, может выступать в качестве базы для прогресс-бара?
Цитата: alyuev от 21 февраля 2024, 13:38В качестве фантазии - а заголовок окна, хотя бы теоретически, может выступать в качестве базы для прогресс-бара?
Жениться тебе надо, барин...Теоретически базой для прогресса может быть какое угодно окно с любыми координатами. Но это приличная переделка объекта получится. Непонятно зачем.
Просто заголовок формы или даже окна 1С почти в любом случае есть. Не нужно доп-объект добавлять на форму. Понятно, что и нижняя панель тоже почти всегда есть. Так что это ж я так.... Пофантазировал...
Цитата: alyuev от 21 февраля 2024, 14:07Просто заголовок формы или даже окна 1С почти в любом случае есть. Не нужно доп-объект добавлять на форму. Понятно, что и нижняя панель тоже почти всегда есть. Так что это ж я так.... Пофантазировал...
Вот у нас как раз обычно заголовка нет, т.к. пользователи разворачивают внутренние окна. И ау.
Заголовок только на модальных формах.
Цитата: alyuev от 20 февраля 2024, 19:03Еще в ходе попытки запустить выяснил (вспомнил :-), что у меня уже есть объект с именем "ПрогрессБар". Это мой класс. Наследовать от твоего нельзя - ругается на рекурсию имён.
Я, конечно, понимаю глупость своего вопроса, но всё же задам - может изменить у тебя название, например, на FormEx.ПрогрессБар?
Вдруг подумалось, что просто добавление алиасов с префиксами не решит проблемы. Ведь в системе останутся объекты со старыми именами.
А вот если сделать так: если файл компоненты называется не "FormEx.dll", то к объектам добавляется префикс, равный имени файла компоненты. Т.е. достаточно будет переименовать "FormEx.dll" в "MyAddIn.dll" и надо будет уже писать не
СоздатьОбъект("ПрогрессБар");
а надо будет
СоздатьОбъект("MyAddIn.ПрогрессБар");
Подойдет такое решение?
Нет. Думаю такой огород городить не нужно. Мне тогда нужно будет просто переименовать свой класс и, соответственно, создание объекта. Это ж всё-таки уже наши "проблемы".
Такой вопрос/предложение - может сделать параметр КоличествоШагов методе Шагнуть(<КоличествоШагов>), как определитель - через сколько нужно выводить прогресс, а не просто шагнуть на столько шагов?
А то получается так. Например цикл от 1 до 100. Делаю шаг 5. И Прогресс отрисуется уже за 20 шагов на все 100%. А логичнее было бы делать отрисовку только каждые 5 шагов. Т.е. как условие Шаг%КоличествоШагов=0.
Хотя нет, наверно я не прав. Надо просто при вызове метода Шагнуть() использовать формулу типа
?(нн%ЧерезСколькоВывести=0,ЧерезСколькоВывести,0)
где нн - счетчик шагов, а ЧерезСколькоВывести - задаем длительность периода вывода следующего значения
Так там же все уже есть ПрогрессБар (http://forum.dorex.pro/index.php?topic=13.0) .Создать(<МинмальнаяПозиция>,<МаксимальнаяПозиция>,<Родитель>,<ПоказыватьПроцент>)
Ой, заметил очепяточку в als: МинимальнаяПозиция
Цитата: Djelf от 23 февраля 2024, 15:06Ой, заметил очепяточку в als: МинимальнаяПозиция
Вроде правил этот момент. В тестовой сборке должно быть нормально.
При ПоказыватьПроцент=1 и установленном атрибуте Заголовок - можно ли сделать регулировку/парметр, где выводить процент - в начале или в конце? Сейчас только в конце строки, после заголовка.
Цитата: alyuev от 13 марта 2024, 14:48При ПоказыватьПроцент=1 и установленном атрибуте Заголовок - можно ли сделать регулировку/парметр, где выводить процент - в начале или в конце? Сейчас только в конце строки, после заголовка.
Разумное предложение. Поддерживаю. Немного упростит код и облегчит восприятие.
Цитата: alyuev от 13 марта 2024, 14:48При ПоказыватьПроцент=1 и установленном атрибуте Заголовок - можно ли сделать регулировку/парметр, где выводить процент - в начале или в конце? Сейчас только в конце строки, после заголовка.
Ок. Сделаю, чтобы при "ПоказыватьПроцент = 2" процент показывался перед заголовком.
Доброго здоровья, Алексей!
ПрогрессБар панели состояния не удаляется после прерывания по ESC.
Цитата: Титович Эдуард от 21 марта 2024, 09:19Доброго здоровья, Алексей!
ПрогрессБар панели состояния не удаляется после прерывания по ESC.
Нужен пример кода. По идее при разрушении объекта (выход за пределы видимости переменной с объектом) должен разрушаться.
Цитата: АЛьФ от 21 марта 2024, 09:26Нужен пример кода...
Я смотрел Вашу обработку Панели.ert из этой ветки.
Прогресс на форме корректно пропадает, на панели остается, причем похоже, до перезапуска программы.
Версия 197.
Операция % - сильно тяжелая, при большом количестве операций - бяка...
Цитата: Титович Эдуард от 21 марта 2024, 09:49Цитата: АЛьФ от 21 марта 2024, 09:26Нужен пример кода...
Я смотрел Вашу обработку Панели.ert из этой ветки.
Прогресс на форме корректно пропадает, на панели остается, причем похоже, до перезапуска программы.
Версия 197.
Посмотрю вечером.
Цитата: Злоп от 21 марта 2024, 10:52Операция % - сильно тяжелая, при большом количестве операций - бяка...
Ась?
Цитата: Титович Эдуард от 21 марта 2024, 09:49Цитата: АЛьФ от 21 марта 2024, 09:26Нужен пример кода...
Я смотрел Вашу обработку Панели.ert из этой ветки.
Прогресс на форме корректно пропадает, на панели остается, причем похоже, до перезапуска программы.
Версия 197.
Проверил у себя. И на выложенной тут обработке дома, и на рабочей версии на работе. Все нормально, прогресс с панели состояния удаляется. Видать какие-то дополнительные условия есть для повторения глюка.
Цитата: item от 21 марта 2024, 09:49Цитата: АЛьФ от 21 марта 2024, 09:26Нужен пример кода...
Я смотрел Вашу обработку Панели.ert из этой ветки.
Прогресс на форме корректно пропадает, на панели остается, причем похоже, до перезапуска программы.
Версия 197.
Отловил условия, при которых прогресс на панели остается. Вечером буду пробовать исправить.
Цитата: АЛьФ от 04 апреля 2024, 13:21Отловил условия, при которых прогресс на панели остается. Вечером буду пробовать исправить.
Может не стОит?
Вот мне не совсем понятно, зачем Вам нужен ПрогрессБар, разве что спортивный интерес.
Уверен, что каждый одинэсник в свое время решил для себя этот вопрос.
Примерно так:
Цитата: item от 04 апреля 2024, 13:48Цитата: АЛьФ от 04 апреля 2024, 13:21Отловил условия, при которых прогресс на панели остается. Вечером буду пробовать исправить.
Может не стОит?
Вот мне не совсем понятно, зачем Вам нужен ПрогрессБар, разве что спортивный интерес.
Уверен, что каждый одинэсник в свое время решил для себя этот вопрос.
Примерно так:
А зачем мне получение модуля объекта? ;)
Цитата: АЛьФ от 04 апреля 2024, 14:23А зачем мне получение модуля объекта?
Эээ, это другое. ))
А вот я теперь могу ДобавитьГлобальныйМодуль(<ИмяОбработки>, <ИмяМодуля>),
а Вы так смогёте?
Поправил уничтожение прогресса на панели. Прошу постестить эту тему.
Заработало.
Правда появился ощутимый лаг после Esc, до секунды, но работает.
После десяти эскейпов и затем "продолжить" окно отвалилось.
Проверил, так было и в предыдущей редакции, от 03.04
В препредыдущей редакции, того же дня, но немного ранее, от 20:13, такого вылета не наблюдаю.
А лаг и раньше был, не замечал просто.