Программное создание группировок на форме
В этой статье рассмотрим программное создание формы с группировками элементов разных видов и общим обработчиком команд для всех кнопок.
При разработке форм часто требуется программно создавать группы элементов с разными вариантами расположения. Рассмотрим пример, где мы создадим форму с двумя группами, в каждой из которых кнопки будут располагаться по-разному: в первой - горизонтально (в ряд), во второй - вертикально (друг под другом).
Для начала установим вертикальную группировку для всей формы:
// Устанавливаем вертикальную группировку для всей формы
ЭтаФорма.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;
Создаем первую группу с горизонтальной группировкой элементов:
ПерваяГруппа = Элементы.Добавить("ГруппаПоГоризонтали", Тип("ГруппаФормы"));
ПерваяГруппа.Вид = ВидГруппыФормы.ОбычнаяГруппа;
ПерваяГруппа.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная;
ПерваяГруппа.Заголовок = "Группировка по горизонтали";
ПерваяГруппа.ОтображатьЗаголовок = Истина;
Обратите внимание: для первой группы мы устанавливаем горизонтальную группировку, что позволяет размещать кнопки в один ряд.
Создаем вторую группу с вертикальной группировкой элементов:
ВтораяГруппа = Элементы.Добавить("ГруппаПоВертикали", Тип("ГруппаФормы"));
ВтораяГруппа.Вид = ВидГруппыФормы.ОбычнаяГруппа;
ВтораяГруппа.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;
ВтораяГруппа.Заголовок = "Группировка по вертикали";
ВтораяГруппа.ОтображатьЗаголовок = Истина;
Важно: для второй группы используется вертикальная группировка, что размещает кнопки друг под другом.
Для оптимизации кода создадим одну общую команду для всех кнопок:
// Добавляем общую команду для всех кнопок
КомандаОбщая = Команды.Добавить("КомандаОбщая");
КомандаОбщая.Действие = "ОбщаяКомандаНажатие";
Добавляем кнопки в первую группу (горизонтальное расположение):
// Добавляем кнопки в первую группу
Кнопка1 = Элементы.Добавить("Кнопка1", Тип("КнопкаФормы"), ПерваяГруппа);
Кнопка1.ИмяКоманды = "КомандаОбщая";
Кнопка1.Заголовок = "Первая кнопка";
Кнопка2 = Элементы.Добавить("Кнопка2", Тип("КнопкаФормы"), ПерваяГруппа);
Кнопка2.ИмяКоманды = "КомандаОбщая";
Кнопка2.Заголовок = "Вторая кнопка";
Добавляем кнопки во вторую группу (вертикальное расположение):
// Добавляем кнопки во вторую группу
Кнопка3 = Элементы.Добавить("Кнопка3", Тип("КнопкаФормы"), ВтораяГруппа);
Кнопка3.ИмяКоманды = "КомандаОбщая";
Кнопка3.Заголовок = "Третья кнопка";
Кнопка4 = Элементы.Добавить("Кнопка4", Тип("КнопкаФормы"), ВтораяГруппа);
Кнопка4.ИмяКоманды = "КомандаОбщая";
Кнопка4.Заголовок = "Четвертая кнопка";
Обработчик общей команды на клиенте:
&НаКлиенте
Процедура ОбщаяКомандаНажатие(Команда)
Сообщить("Нажата общая команда");
КонецПроцедуры
Полный код решения:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ)
// Устанавливаем вертикальную группировку для всей формы
ЭтаФорма.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;
// Создаем первую группу (горизонтальная группировка)
ПерваяГруппа = Элементы.Добавить("ГруппаПоГоризонтали", Тип("ГруппаФормы"));
ПерваяГруппа.Вид = ВидГруппыФормы.ОбычнаяГруппа;
ПерваяГруппа.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная;
ПерваяГруппа.Заголовок = "Группировка по горизонтали";
ПерваяГруппа.ОтображатьЗаголовок = Истина;
// Создаем вторую группу (вертикальная группировка)
ВтораяГруппа = Элементы.Добавить("ГруппаПоВертикали", Тип("ГруппаФормы"));
ВтораяГруппа.Вид = ВидГруппыФормы.ОбычнаяГруппа;
ВтораяГруппа.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;
ВтораяГруппа.Заголовок = "Группировка по вертикали";
ВтораяГруппа.ОтображатьЗаголовок = Истина;
// Добавляем общую команду для всех кнопок
КомандаОбщая = Команды.Добавить("КомандаОбщая");
КомандаОбщая.Действие = "ОбщаяКомандаНажатие";
// Добавляем кнопки в первую группу с собственными заголовками
Кнопка1 = Элементы.Добавить("Кнопка1", Тип("КнопкаФормы"), ПерваяГруппа);
Кнопка1.ИмяКоманды = "КомандаОбщая";
Кнопка1.Заголовок = "Первая кнопка";
Кнопка2 = Элементы.Добавить("Кнопка2", Тип("КнопкаФормы"), ПерваяГруппа);
Кнопка2.ИмяКоманды = "КомандаОбщая";
Кнопка2.Заголовок = "Вторая кнопка";
// Добавляем кнопки во вторую группу с собственными заголовками
Кнопка3 = Элементы.Добавить("Кнопка3", Тип("КнопкаФормы"), ВтораяГруппа);
Кнопка3.ИмяКоманды = "КомандаОбщая";
Кнопка3.Заголовок = "Третья кнопка";
Кнопка4 = Элементы.Добавить("Кнопка4", Тип("КнопкаФормы"), ВтораяГруппа);
Кнопка4.ИмяКоманды = "КомандаОбщая";
Кнопка4.Заголовок = "Четвертая кнопка";
КонецПроцедуры
&НаКлиенте
Процедура ОбщаяКомандаНажатие(Команда)
Сообщить("Нажата общая команда");
КонецПроцедуры