gifts2017

Делаем "управляемые формы" чуть более управляемыми

Опубликовал Геннадий Северный (Avalanche) в раздел Программирование - Внешние компоненты

Внешняя компонента позволяющая делать с управляемыми формами то, что не решилась(или не захотела) сделать 1С.

Введение

Управляемые формы. Новая разработка 1С призванная облегчить труд разработчика, дать ему больше времени на написание кода за счет упрощения проектирования интерфейса. На деле часто получается, что т. н. «управляемые формы» являются совершенно неуправляемыми. УФ не умеют таких банальных вещей как сворачивание/разворачивание окна, не говоря уже о его позиционировании на экране и задании размера в пикселях. Возможно эти функции посчитали невостребованными и не стали включать в новый интерфейс, но практика показывает, что их порою очень сильно не хватает. Некоторое время проблема частично решалась за счет WSH, но хотелось чего-то большего. Так была реализована внешняя компонента для того что бы сделать «управляемые формы» чуть более управляемыми.

 

 

Что? Где? Когда?

Данная ВК представляет собой библиотеку функций для управления состоянием и положением окон. Так же в библиотеке есть несколько полезных системных функций.

 

Управление состоянием окна:

Развернуть(ЗаголовокОкна) разворачивает окно на полный экран

Свернуть(ЗаголовокОкна)сворачивает окно в панель задач

Скрыть(ЗаголовокОкна)скрывает окно(при этом код формы продолжает исполняться)

Показать() - показывает последнее скрытое функцией Скрыть() окно

СвернутьВОкно(ЗаголовокОкна) — восстанавливает исходное состояние окна

ИСТИНА Видимость(ЗаголовокОкна) — проверяет видимо ли окно на экране

ИСТИНА Развернуто(ЗаголовокОкна)проверяет развернуто ли окно на полный экран

ИСТИНА Свернуто(ЗаголовокОкна)проверяет свернуто ли окно в панель задач

УстановитьПрозрачность(ЗаголовокОкна, Коэффициент)устанавливает прозрачность окна. Степень прозрачности задается через коэффициент (0-255).

 

Управление положением окна:

ПолучитьПозицию(ЗаголовокОкна, X, Y)получает координаты левого верхнего угла окна относительно экрана. Координаты возвращаются через параметры X,Y.

Переместить(ЗаголовокОкна, X, Y)перемещает окно на заданную позицию XY. В данном случае XY являются координатами левого верхнего угла окна.

ПолучитьРазмеры(ЗаголовокОкна, Ширина, Высота) – получает размеры окна в пикселях. Значения возвращаются через соответствующие параметры.

УстановитьРазмеры(ЗаголовокОкна, Ширина, Высота) – устанавливает размеры окна в пикселях.

 

Системные функции:

ПолучитьТекущееРазрешение(Horz, Vert)– получает текущее разрешение экрана. Значения возвращаются через соответствующие параметры.

ПолучитьСписокРазрешений()– получает список доступных в системе разрешений экрана. Данные возвращаются в виде «РАЗРЕШЕНИЕ1,РАЗРЕШЕНИЕ2,РАЗРЕШЕНИЕ3...». В демонстрационной обработке есть пример формирования списка разрешений на форме.

УстановитьРазрешение(ВыбранноеРазрешениеЭкрана)– устанавливает разрешение экрана. В качестве параметра указывается порядковый номер разрешения. В демонстрационной обработке показан пример установки разрешения из ранее сформированного списка.

Бонусы:

Спать(ВремяСна) – реализация классической функции sleep(). ВремяСна указывается в миллисекундах.

Сигнал(Частота, Длительность) – реализация классической функции beep(). Позволяет задать частоту и длительность звука.

 

Итого

Библиотека писалась для собственных нужд и возможно будет дорабатываться еще по мере необходимости. Если у кого-то возникнет светлая мысль по расширению ее функционала в рамках той предметной области для которой она задумывалась, то пишите пожелания. Если идеи окажутся стоящими, они будут реализованы.


В комплект поставки входят: База с подключенной ВК в виде общего макета и демонстрационной обработкой. ВК в zip архиве.

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Файл поставки
.rar 108,82Kb
18.06.12
237
.rar 108,82Kb 237 Скачать

См. также

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

Комментарии

1. Денис Вахитов (Dr.DragoN) 18.06.12 11:27
Как раз искал такое, в обход скриптов
2. Сергей Рудаков (fishca) 18.06.12 13:19
(0) с режимом закладок работает?
3. Геннадий Северный (Avalanche) 18.06.12 13:22
(2) fishca, смотря какие "закладки" вы имеете в виду. Все функции ориентированы непосредственно на окно и частично распространяются на контролы (например прозрачность).
4. Сергей Рудаков (fishca) 18.06.12 13:38
(3) т.е. компонента работает только с главным окном 1С, я правильно понимаю?
5. Александр Милютин (sanfoto) 18.06.12 14:17
Ну конечно думаю изобретаете велосипед..
вот AutoIT http://infostart.ru/public/76974/
все что нужно уже умеет))
6. Геннадий Северный (Avalanche) 18.06.12 14:44
(4) fishca, нет, компонента работает с любым окном, как главным, так и дочерними.
7. Брест Беларусь (zhleonid8) 20.06.12 03:20
может для 1С это сложно:)
8. Denis Zuev (Varies) 20.06.12 06:30
(5) sanfoto, Если не ошибаюсь, то она не работает с УФ.

(6) Avalanche, а ты не мог бы скинуть исходник функций Скрыть(ЗаголовокОкна)/Показать(), а то я хотел написать одну ВК для того чтобы сворачивать 1С (УФ) в трей, но так и не получилось, нужно было больше времени и я дропнул работу на неопределённый срок. Или может я тебе скину исходник того что у меня есть а ты доделаешь? Задумка интересная :)
9. Александр Орефков (orefkov) 20.06.12 09:00
(0)
В веб-клиенте не работает?
10. ddd ddd (alexsiswx) 20.06.12 10:22
Слабовато. Хотелось бы больше "управлять формами". Вот скажите, возможно, ли полное изменение окон в 1С? Цвет, фон и многое др.
11. Алекс Ю (AlexO) 20.06.12 10:27
(10) alexsiswx,
это возможно даже на уровне платформы сделать.
Но 1с не разбирается в таких тонкостях.
12. Алекс Ю (AlexO) 20.06.12 10:32
(6) Avalanche,
этого крайне мало:
, что т. н. «управляемые формы» являются совершенно неуправляемыми. УФ не умеют таких банальных вещей как сворачивание/разворачивание окна, не говоря уже о его позиционировании на экране и задании размера в пикселях.

и именно это все удобней делать на скриптах - винда все-таки везде стандартна (более-менее), а вашу компоненту надо таскать с каждым проектом (а если нет доступа к компу? кто ставить будет?).
Вот если б кто собрал все скрипты в едином репозитарии - я бы безоговорочно похвалил его. А 1с, как всегда, изругал бы в хлам. Но - предметно и на основе :)
(9) orefkov,
В веб-клиенте не работает?

ваш-то снегопат тоже не работает в веб :)
Хотя - готов купить его, но со скидкой.
Исключительно лишь - чтобы оплатить ваш нелегкий труд и годы сгорбленной работы над 1с :).
13. ddd ddd (alexsiswx) 20.06.12 10:45
(11) AlexO, Да, возможно, но мало настроек. И это я так понимаю делается в кон-ре и сразу для всех. А у нас клиент "креативный" хочет индивидуальное оформление для каждого пользователя (ну в коде можно прописать конечно). Но тема такая, что хотят чуть ли фон не в цветочках оформить. "чем бы дитя не тешилось..."
14. sumixam (sumixam) 20.06.12 11:54
в хозяйстве пригодится+
15. Борис Соколов (Boog) 20.06.12 15:17
(12) AlexO,
так Снегопат-то, вроде как, предназначен для конфигуратора, а не для клиента...
Как он в принципе может работать на клиенте (в т.ч. веб-клиенте)?
16. Kоstik Matiushkin (motkot) 20.06.12 17:19
Про веб-клиент: может как расширение функционала, хотя бы частичная поддержка - сворачивание окна и т.п., что адекватно подходит.
17. БИЗНЕС РЕШЕНИЯ (Para_1987) 20.06.12 20:21
+! прикольная вещь! еще бы можно было что нить придать с окном подбора. на классических формах оно в 1000 раз удобнее чем подбор на УФ...но увы, никак видимо пока что.
18. Геннадий Северный (Avalanche) 21.06.12 00:31
(8) Varies, никаких секретных исходников там нет. Эти функции реализованы на WinAPI ShowWindow.
(9) orefkov, пока что не работает. С веб клиентами приходится работать редко, поэтому и писалось все под винду. Если будет куча свободного времени попробую сделать подобное под веб клиент.
(10) alexsiswx, раскраска окон - интересная мысль. Подумаю над этим.
20. VVV (V_V_V) 21.06.12 12:25
А вот как победить неуправляемое поведение форм при изменении размера шрифта на нестандартное? Когда стоит 100% - содержимое форм открывается нормально, стоит выставить 125% - начинается бардак. То добавляются скролы для пролистывания не поместившихся элементов, то таблицы не ресайзятся до размеров открытой на весь экран формы, оставляя пустое место. Это компонента может исправить?
21. Геннадий Северный (Avalanche) 21.06.12 13:33
(20) V_V_V, все, что может делать компонента, описано в статье. Сам сталкивался с проблемой нестандартных шрифтов когда рисовал тач интерфейсы на УФ. Проблема решалась в основном шаманскими ритуалами с применением бубна. Вопрос нормализации нестандартных УФ стоит очень остро и у меня пока нет светлых мыслей по нему. Возможно они появятся у фирмы 1С =)
22. VVV (V_V_V) 21.06.12 13:42
(21) Я без претензий. Просто появилась робкая-робкая надежда, что хоть кто-то, пусть внешним вмешательством, но решит этот вопрос. Поскольку 1С на него явно положила и из релиза в релиз ситуация не меняется. Тут специально для удобства пользователей закуплено прилично мониторов с большой диагональю и хорошим разрешением - как оказалось зря...
23. Алекс Ю (AlexO) 21.06.12 13:57
(15) Boog,
так Снегопат-то, вроде как, предназначен для конфигуратора, а не для клиента...

ну как вон запускают выполннеие кода в Предприятии?
и получается все то же самое конфигурирование конфигуратора...
24. Алекс Ю (AlexO) 21.06.12 13:59
(22) V_V_V,
Тут специально для удобства пользователей закуплено прилично мониторов с большой диагональю и хорошим разрешением - как оказалось зря...

бубны лучше закупите, большие и звонкие :)
25. Алекс Ю (AlexO) 21.06.12 14:02
(15) Boog,
другое дело, что Орефков спросил, в общем-то, про разные вещи - выполнение окон в среде WinAPI, и реализация показа форм в браузере.
Вот я и сравнил тоже разные вещи - здешнюю примочку, и Снегопат :)
26. Алекс Ю (AlexO) 21.06.12 14:03
(22) V_V_V,
Просто появилась робкая-робкая надежда

сколько вам нужно, чтобы "робкая надежда" пропала?
1С дает неограниченное время, чтобы доказать беспочвенность любых надежд.
27. Александр Милютин (sanfoto) 23.06.12 13:05
(8) Varies,
хто сказал что AutoItX3 не работает с Упр Формами??,
у меня на работе на производстве - на моноблоках КАК РАЗ РАБОТАЕТ - Тонкие клиенты,
я даже вирт.клаву(УФ 1с) полупрозрачную сделал + работа с размерами окон:
сворачивание,максимизация,sendkey и прочее)).
28. StronG-X (Dethmond) 25.06.12 10:23
29. Игор Мудрицкий (Zas1402) 06.11.12 15:15
fishca, смотря какие "закладки" вы имеете в виду. Все функции ориентированы непосредственно на окно и частично распространяются на контролы (например прозрачность).

Если форма в MDI режиме открыта то проблемы будут??
30. Александр (tvixeg) 18.12.12 12:34
интересует как можно одновременно изменить размер управляемой формы и перетащить ее верх за границу экрана, сделав таким образом рабочий стол на весь экран.
31. Артем Бардюг (Йожкин Кот) 25.06.13 14:52
Проверил работу под 8.3. Результат - отлично работает!
Avalanche; +1 Ответить
32. Андрей Коваль (hiduk) 21.10.13 11:34
Добрый день! Вопросы: 1) Требует ли внешняя компонента регистрации в реестре Windows? 2) Способна ли данная компонента активировать окно формы, поверх открытых окон других (не 1С) приложений? Т.е., например, пользователь сидит в браузере, 1с свернута. В 1с происходит событие, по которому, с использованием данной компоненты, я смогу активировать окно формы 1с поверх браузера? 3) Будет ли работать компонента в клиент-серверном варианте, в тонком клиенте?
33. Геннадий Северный (Avalanche) 24.10.13 07:59
34. Виталий Сорокин (mastersva) 20.11.13 09:25
Подскажите, возможно ли с помощью данной компоненты открыть форму и держать её поверх всех окон, а также интересует возможность работы в тонком клиенте.
35. Виталий Блинов (Adoney) 02.06.15 07:10
При разработке своего решения, потребовалось программно развернуть "Сворачиваемую" группу. Но ответ 1С мне не пришелся по душе). Возможно ли включить в ВК данный метод?
36. Алекс Ю (AlexO) 02.06.15 09:18
(33) Avalanche, кстати, подозреваю, исходя из набора функций - компонента на Дельфи написана?
37. Тимур Муртазаев (Tilirxs) 28.10.15 11:56
Подскажите пожалуйста можно ли перемещать обычные формы?
38. Денис Аюпов (aupovy) 12.11.15 17:35
А как подключить эту компоненту?
Разобрался, в архиве еще есть файл базы данных
AddIn.Window.WindowEx

Помогло, спасибо
39. Семён Павлюков (7OH) 20.05.16 15:32
Спасибо, работает.
Правда пришлось поправить немного.
ЗаголовокОкна = ПолучитьЗаголовокКлиентскогоПриложения();
ЗаголовокОкна = СтрЗаменить(ЗаголовокОкна, Символы.ПС, " ");
обОкно.Развернуть(ЗаголовокОкна);
...Показать Скрыть


Заголовок может быть и с переносом строки, а вот отображается он в одну строку.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа