v8: Технология создания своих элементов управленияК сожалению, 1С не дает нам возможности использовать свои элементы управления, поэтому приходится на разных формах дублировать один и тот же код.
Выходом было бы использование вложенных форм, но и это 1С не может дать программистам.
Однако не все потеряно - при некотором старании можно добиться функционала элементов управления. | | Автор статьи: Гений 1С | Редакторы: Последняя редакция №2 от 25.08.06 | История URL: http://kb.mista.ru/article.php?id=349 | |
Ключевые слова: элемент управления,хитрость,продвинутый кодинг
В дальнейшем наш элемент управления будет называться контролом.
Контрол оформляется как форма некоторой обработки. В форме должны быть только те элементы управления, которые должны содержаться в контроле.
В форме, на которой планируется разместить контрол управления, на его месте размещается пустая панель без закладок.
Затем в процедуре ПриОткрытии вызывается стандартная функция обРазместитьЭлементУправления(Форма, Панель, Контрол), где:
* Форма - форма, на которую размещается контрол
* Панель - панель, на которую размещается контрол
* Контрол - ссылка на обработку контрола
Далее все элементы контрола копируются на форму.
Для реализации копирования полезно ознакомиться со статьями:
Книга знаний: v8: Получение списка свойств и событий объекта
Книга знаний: v8: Получение списка свойств и событий объекта
При этом не копируются такие свойства, как: Данные, Значение, Имя, КнопкаПоУмолчанию, ИсточникДействий, КонтекстноеМеню, потому что они не имеют смысла в контексте формы-приемника и при копировании выдают ошибку.
К именам всех скопированных элементов управления будет добавляться префикс. Префикс формируется из уникального значения ГУИД. В форме создается поле ввода с именем, полученном из ГУИДа, значение поля ввода - ссылка на обрабоку, которая контролирует контрол.
В форму, которая использует контрол, должна быть вставлена ловушка на все события контрола.
Такую ловушку (список процедур) лучше записать одной строкой, чтобы не загромождать код формы.
Количество процедур в ловушке не зависит от числа контролов - всем контролам назначаются одни и те же ловушки. После копирования свойств назначаются ловушки для событий.
Далее вызывается метод контрола ПриМонтаже(Форма, Панель, Префикс), в котором контрол должен настроить те свойства, которые не были скопированы и вообще настроить себя.
При возникновении события в элементе управления контрола в процедуре ловушки по имени контрола определяется поле ввода, где хранится ссылка на обработку-обработчик события и вызывается метод этого обработчика с названием события, ссылкой на текущую форму и структурой П, содержащей параметры события.
Особенности программирования контролов в том, что у них нет данных, нужно обращаться не к данным, а непосредственно к свойству "Значение" контрола.
Можно использовать вложенные контролы. |