|
Программное изменение управляемой формы | ☑ | ||
---|---|---|---|---|
0
Razor
17.04.12
✎
13:20
|
Добавил программно на управляемую форму страницы. Хочу переместить все существующие элементы на эти страницы, но поле родитель у элементов недоступно для записи, что подскажите?
|
|||
1
jsmith
17.04.12
✎
13:24
|
читать книгу разработка управляемого интерфейса
там код не такой простой, как кажется |
|||
2
Юрий Лазаренко
17.04.12
✎
14:26
|
(0) Лови пример. В моем случае на форме уже есть группа с видом "СтраницЫ". Я программно добавляю на нее страницу и поле HTML. По примеру думаю разберешься, как и что делать в твоем случае.
// Создаем новые реквизиты и элементы формы // Реквизит МассивТипов = Новый Массив; МассивТипов.Добавить(Тип("Строка")); ДопустимыеТипы = Новый ОписаниеТипов(МассивТипов); НовыйРеквизит = Новый РеквизитФормы("Канал_" + НомерКанала, ДопустимыеТипы,, КаналСсылка.Наименование); МассивНовыхРеквизитов = Новый Массив; МассивНовыхРеквизитов.Добавить(НовыйРеквизит); ЭтаФорма.ИзменитьРеквизиты(МассивНовыхРеквизитов); // Страница НоваяСтраница = Элементы.Добавить("СтраницаКанал_" + НомерКанала, Тип("ГруппаФормы"), Элементы.ГруппаСтраницы); НоваяСтраница.Вид = ВидГруппыФормы.Страница; НоваяСтраница.Заголовок = КаналСсылка.Наименование; Если КаналСсылка.ВидКанала = Перечисления.КэнВидыКаналовВзаимодействия.Форум Тогда КартинкаКанала = БиблиотекаКартинок.КэнКаналФорум; ИмяМакетаКанала = "МакетФорума"; ИначеЕсли КаналСсылка.ВидКанала = Перечисления.КэнВидыКаналовВзаимодействия.Чат Тогда КартинкаКанала = БиблиотекаКартинок.КэнКаналЧат; ИмяМакетаКанала = "МакетЧата"; ИначеЕсли КаналСсылка.ВидКанала = Перечисления.КэнВидыКаналовВзаимодействия.ЭлектроннаяПочта Тогда КартинкаКанала = БиблиотекаКартинок.КэнКаналЭлектроннаяПочта; ИмяМакетаКанала = "МакетЭлектроннойПочты"; Иначе КартинкаКанала = Новый Картинка; КонецЕсли; НоваяСтраница.Картинка = КартинкаКанала; // Поле канала НовоеПоле = Элементы.Добавить("ПолеКанал_" + НомерКанала, Тип("ПолеФормы"), Элементы["СтраницаКанал_" + НомерКанала]); НовоеПоле.Вид = ВидПоляФормы.ПолеHTMLДокумента; НовоеПоле.ПутьКДанным = "Канал_" + НомерКанала; НовоеПоле.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет; НовоеПоле.УстановитьДействие("ПриНажатии", "ПолеHTMLПриНажатии"); НовоеПоле.УстановитьДействие("ДокументСформирован", "ПолеHTMLДокументСформирован"); // Загрузка шаблона канала ЭтаФорма["Канал_" + НомерКанала] = Обработки.КэнСообщенияИЗаметки.ПолучитьМакет(ИмяМакетаКанала).ПолучитьТекст(); |
|||
3
Юрий Лазаренко
17.04.12
✎
14:27
|
Смотри эту строку:
НоваяСтраница = Элементы.Добавить("СтраницаКанал_" + НомерКанала, Тип("ГруппаФормы"), Элементы.ГруппаСтраницы); Элементы.ГруппаСтраницы - это как раз родитель для нового элемента |
|||
4
vmv
17.04.12
✎
14:31
|
на самом деле все просто, правда кода много
мож потом изобретут методы компоновщики формы, но это в 3-м тысячелетии или пока я не выложу |
|||
5
Mort
17.04.12
✎
14:45
|
ВсеЭлементыФормы.Переместить (FormAllItems.Move)
ВсеЭлементыФормы (FormAllItems) Переместить (Move) Синтаксис: Переместить(<Элемент>, <Родитель>, <МестоРасположения>) Параметры: <Элемент> (обязательный) Тип: ДекорацияФормы; ГруппаФормы; КнопкаФормы; ТаблицаФормы; ПолеФормы. Перемещаемый элемент. <Родитель> (обязательный) Тип: ГруппаФормы; ТаблицаФормы; УправляемаяФорма. Новый родитель элемента. Может совпадать со старым. <МестоРасположения> (необязательный) Тип: ГруппаФормы; ДекорацияФормы; КнопкаФормы; ТаблицаФормы; ПолеФормы. Элемент, перед которым нужно разместить перемещаемый элемент. Если не задан, то перемещается в конец коллекции. Описание: Перемещает элемент коллекции. Доступность: Сервер. |
|||
6
Razor
17.04.12
✎
16:06
|
Спасибо! Все оказалось так просто!) Переместить()
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |