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

Опубликовал Геннадий Северный (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
245
.rar 108,82Kb 245 Скачать

См. также

Комментарии
1. Денис Вахитов (Dr.DragoN) 18.06.12 11:27 Сейчас в теме
Как раз искал такое, в обход скриптов
2. Сергей Рудаков (fishca) 1039 18.06.12 13:19 Сейчас в теме
(0) с режимом закладок работает?
3. Геннадий Северный (Avalanche) 173 18.06.12 13:22 Сейчас в теме
(2) fishca, смотря какие "закладки" вы имеете в виду. Все функции ориентированы непосредственно на окно и частично распространяются на контролы (например прозрачность).
4. Сергей Рудаков (fishca) 1039 18.06.12 13:38 Сейчас в теме
(3) т.е. компонента работает только с главным окном 1С, я правильно понимаю?
5. Александр Милютин (sanfoto) 461 18.06.12 14:17 Сейчас в теме
Ну конечно думаю изобретаете велосипед..
вот AutoIT http://infostart.ru/public/76974/
все что нужно уже умеет))
6. Геннадий Северный (Avalanche) 173 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) 1446 20.06.12 09:00 Сейчас в теме
(0)
В веб-клиенте не работает?
10. ddd ddd (alexsiswx) 20.06.12 10:22 Сейчас в теме
Слабовато. Хотелось бы больше "управлять формами". Вот скажите, возможно, ли полное изменение окон в 1С? Цвет, фон и многое др.
11. Алекс Ю (AlexO) 115 20.06.12 10:27 Сейчас в теме
(10) alexsiswx,
это возможно даже на уровне платформы сделать.
Но 1с не разбирается в таких тонкостях.
12. Алекс Ю (AlexO) 115 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) 49 20.06.12 15:17 Сейчас в теме
(12) AlexO,
так Снегопат-то, вроде как, предназначен для конфигуратора, а не для клиента...
Как он в принципе может работать на клиенте (в т.ч. веб-клиенте)?
16. Kоstik Matiushkin (motkot) 52 20.06.12 17:19 Сейчас в теме
Про веб-клиент: может как расширение функционала, хотя бы частичная поддержка - сворачивание окна и т.п., что адекватно подходит.
17. БИЗНЕС РЕШЕНИЯ (Para_1987) 71 20.06.12 20:21 Сейчас в теме
+! прикольная вещь! еще бы можно было что нить придать с окном подбора. на классических формах оно в 1000 раз удобнее чем подбор на УФ...но увы, никак видимо пока что.
18. Геннадий Северный (Avalanche) 173 21.06.12 00:31 Сейчас в теме
(8) Varies, никаких секретных исходников там нет. Эти функции реализованы на WinAPI ShowWindow.
(9) orefkov, пока что не работает. С веб клиентами приходится работать редко, поэтому и писалось все под винду. Если будет куча свободного времени попробую сделать подобное под веб клиент.
(10) alexsiswx, раскраска окон - интересная мысль. Подумаю над этим.
20. VVV Vit (V_V_V) 21.06.12 12:25 Сейчас в теме
А вот как победить неуправляемое поведение форм при изменении размера шрифта на нестандартное? Когда стоит 100% - содержимое форм открывается нормально, стоит выставить 125% - начинается бардак. То добавляются скролы для пролистывания не поместившихся элементов, то таблицы не ресайзятся до размеров открытой на весь экран формы, оставляя пустое место. Это компонента может исправить?
21. Геннадий Северный (Avalanche) 173 21.06.12 13:33 Сейчас в теме
(20) V_V_V, все, что может делать компонента, описано в статье. Сам сталкивался с проблемой нестандартных шрифтов когда рисовал тач интерфейсы на УФ. Проблема решалась в основном шаманскими ритуалами с применением бубна. Вопрос нормализации нестандартных УФ стоит очень остро и у меня пока нет светлых мыслей по нему. Возможно они появятся у фирмы 1С =)
22. VVV Vit (V_V_V) 21.06.12 13:42 Сейчас в теме
(21) Я без претензий. Просто появилась робкая-робкая надежда, что хоть кто-то, пусть внешним вмешательством, но решит этот вопрос. Поскольку 1С на него явно положила и из релиза в релиз ситуация не меняется. Тут специально для удобства пользователей закуплено прилично мониторов с большой диагональю и хорошим разрешением - как оказалось зря...
23. Алекс Ю (AlexO) 115 21.06.12 13:57 Сейчас в теме
(15) Boog,
так Снегопат-то, вроде как, предназначен для конфигуратора, а не для клиента...

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

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

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

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


Заголовок может быть и с переносом строки, а вот отображается он в одну строку.
40. Jack K (jacknk) 28.03.17 11:54 Сейчас в теме
Есть ли возможность запретить изменять положение окна (т.е. кнопками свернуть/развернуть) и через правую кнопку мыши - заблокировать эти кнопки, и перемещать окно - на подобии свойства прикрепленное окно у обычных форм?
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа