MyTetra Share
Делитесь знаниями!
Время создания: 08.09.2016 16:05
Автор: ret-Phoenix
Текстовые метки: 1c.oscript.ui
Раздел: Программирование - 1с - oscript - libraries - oscript-simple-gui
Запись: xintrea/mytetra_anatolean/raw/master/base/1473339927508iroyopn/text.html на bitbucket.org

Компонент по созданию форм для 1script

Внешняя компонента позволяет создавать формы на языке 1script. API работы с формами максимально приближен к синтаксису 1С.

Основная задача компоненты - простая работа с формами. Позволяет создать большое количество разных элементов форм. Поддерижвается обработка событий элементов. Управление свойствами видимости, доступности и другими. Создан единый интерфейс для работы со значениями элементов (через свойство Значение).

Доступны основные элементы формы и события:

Виды полей:

  • ПолеВвода - Однострочное текстовое поле;
  • ПолеИндикатора - Прогрессбар.
  • ПолеКалендаря - Поле для ввода даты
  • ПолеНадписи - Надпись (декорация в терминалогии 1С)
  • ПолеФлажка - Флажок, имеет статусы: Включен/Выключен
  • ПолеТекстовогоДокумента - Многострочный текст
  • ПолеСоСписком - Поле со списком (ComboBox)
  • ПолеСписка - Поле списка (ListBox)
  • ОбычнаяГруппа - Контейнер для группы элементов
  • Страница - Страницы
  • Кнопка
  • ТаблицаФормы - Компонент для отображения объекта ТаблицаЗначений
  • ДеревоФормы - Компонент для отображения объекта ДеревоЗначений

Обрабатываемые события

  • Форма: ПриОткрытии
  • Кнопка: ПриНажатии
  • ПолеФормы: ПриИзменении, ПриВыборе (нажат Enter)
  • ПолеСписка: ПриДвойномКлике

Примеры

Создание формы и вывод надписи

Перем Форма;

Процедура Инициализация()

//# Загружаем внешнюю компоненту

ПодключитьВнешнююКомпоненту(ОбъединитьПути(КаталогПрограммы(), "oscript-simple-gui.dll"));

УправляемыйИнтерфейс = Новый УправляемыйИнтерфейс();

Форма = УправляемыйИнтерфейс.СоздатьФорму();

//# Устанавливаем обработку события ПриОткрытии

Форма.УстановитьДействие(ЭтотОбъект, "ПриОткрытии", "ПриОткрытииФормы");

Форма.Показать();

КонецПроцедуры

//# Обработка события первого открытия формы

Процедура ПриОткрытииФормы() Экспорт

Декорация1 = Форма.Элементы.Добавить("Декорация1", "ПолеФормы", Неопределено);

Декорация1.Вид = Форма.ВидПоляФормы.ПолеНадписи;

Декорация1.Заголовок = "Это действительно работает!";

Форма.Высота = 100;

КонецПроцедуры

Инициализация();

Создание формы с кнопкой и обработка события нажатия на кнопку

Перем Форма;

Процедура Инициализация()

//# Загружаем внешнюю компоненту

ПодключитьВнешнююКомпоненту(ОбъединитьПути(КаталогПрограммы(), "oscript-simple-gui.dll"));

УправляемыйИнтерфейс = Новый УправляемыйИнтерфейс();

Форма = УправляемыйИнтерфейс.СоздатьФорму();

//# Устанавливаем обработку события ПриОткрытии

Форма.УстановитьДействие(ЭтотОбъект, "ПриОткрытии", "ПриОткрытииФормы");

Форма.Показать();

КонецПроцедуры

//# Обработка события первого открытия формы

Процедура ПриОткрытииФормы() Экспорт

ПолеВвода1 = Форма.Элементы.Добавить("ПолеВвода1", "ПолеФормы", Неопределено);

ПолеВвода1.Вид = Форма.ВидПоляФормы.ПолеВвода;

ПолеВвода1.Заголовок = "Поле ввода";

ПолеВвода1.Значение = "Значение задано из скрипта";

Кнопка1 = Форма.Элементы.Добавить("Кнопка1", "КнопкаФормы", Неопределено);

Кнопка1.Заголовок = "Нажми меня";

Кнопка1.УстановитьДействие(ЭтотОбъект, "Нажатие", "ПриНажатииНаКнопку1");

КонецПроцедуры

Процедура ПриНажатииНаКнопку1() Экспорт

Форма.Элементы.Найти("ПолеВвода1").Значение = "Значение после нажатия на кнопку";

КонецПроцедуры

Инициализация();

Пример работы с выпадающим списком

Перем Форма;

Процедура Инициализация()

//# Загружаем внешнюю компоненту

ПодключитьВнешнююКомпоненту(ОбъединитьПути(КаталогПрограммы(), "oscript-simple-gui.dll"));

УправляемыйИнтерфейс = Новый УправляемыйИнтерфейс();

Форма = УправляемыйИнтерфейс.СоздатьФорму();

//# Устанавливаем обработку события ПриОткрытии

Форма.УстановитьДействие(ЭтотОбъект, "ПриОткрытии", "ПриОткрытииФормы");

Форма.Показать();

КонецПроцедуры

//# Обработка события первого открытия формы

Процедура ПриОткрытииФормы() Экспорт

Данные = Новый Соответствие;

Данные.Вставить("Один", "1");

Данные.Вставить("Два", "2");

Данные.Вставить("Три", "3");

ПолеСоСписком1 = Форма.Элементы.Добавить("ПолеСоСписком1", "ПолеФормы", Неопределено);

ПолеСоСписком1.Заголовок = "Поле со списком";

ПолеСоСписком1.Вид = Форма.ВидПоляФормы.ПолеСоСписком;

ПолеСоСписком1.СписокВыбора = Данные;

ПолеСоСписком1.Значение = "3";

ПолеСоСписком1.УстановитьДействие(ЭтотОбъект, "ПриИзменении", "ПриИзменииЗначения");

Форма.Высота = 80;

КонецПроцедуры

Процедура ПриИзменииЗначения() Экспорт

Сообщить("Новое значение: " + Форма.Элементы.Найти("ПолеСоСписком1").Значение);

КонецПроцедуры

Инициализация();

ТаблицаФормы

ПровайдерТЗ = Новый Провайдер;

ПровайдерТЗ.Источник = ПолучитьТЗ();

Поле1 = Форма.Элементы.Добавить("ТаблицаФормы1", "ТаблицаФормы", Неопределено);

Поле1.ПутьКДанным = ПровайдерТЗ;

Поле1.Заголовок = "Провайдер - ТЗ";

Поле1.ПоложениеЗаголовка = УправляемыйИнтерфейс.ПоложениеЗаголовка.Верх;

Поле1.Закрепление = 5;

ДеревоФормы

ПровайдерТЗ = Новый Провайдер;

ПровайдерТЗ.ИсточникДерево = Данные;

Поле1 = Форма.Элементы.Добавить("ДеревоФормы1", "ДеревоФормы", Неопределено);

Поле1.ПутьКДанным = ПровайдерТЗ;

Поле1.Заголовок = "Провайдер - Дерево значений";

Поле1.ПоложениеЗаголовка = УправляемыйИнтерфейс.ПоложениеЗаголовка.Верх;

Поле1.Закрепление = 5;

Поле1.ТекущаяСтрока = 1;

Примеры использования

 
MyTetra Share v.0.59
Яндекс индекс цитирования