СоздатьФорму(<Сценарий>)
Тип: Форма (Form).
Создаёт новый экземпляр класса Форма (Form), созданный на основе подключенного сценария.
Использовать библиотеку OneScriptForms.dll можно в стиле приложения или стиле скрипта.
Есть некоторые различия в этих двух вариантах.
Стиль приложения основывается на использовании классов, описанных в файлах скриптов *.os. Эти файлы расположены в каталоге Классы, рядом с которым находится библиотека и главный скрипт (файл Приложение.os на рисунке).
В главном скрипте нужно обеспечить работу с классами директивой #Использовать ".\" .
Иначе подключить скрипт можно командой ПодключитьСценарий("C:\7\ГлавнаяФорма.os", "ГлавнаяФорма");.
//=== Содержимое файла Приложение.os === ПодключитьВнешнююКомпоненту("C:\7\OneScriptForms.dll"); Ф = Новый ФормыДляОдноСкрипта(); ПодключитьСценарий("C:\7\ГлавнаяФорма.os", "ГлавнаяФорма"); Сценарий1 = Новый ГлавнаяФорма(); ГлавнаяФорма1 = Ф.СоздатьФорму(Сценарий1); ГлавнаяФорма1.Показать(); ГлавнаяФорма1.Активизировать(); Сообщить("Запуск обработки событий из главного скрипта"); Ф.ЗапуститьОбработкуСобытий(); //====================================== //=== Содержимое файла ГлавнаяФорма.os === Перем ВремяСоздания; Перем Ф; Процедура ПриСозданииФормы(Форма) Экспорт ЭтаФорма = Форма; ЭтаФорма.Текст = "ГлавнаяФорма"; ЭтаФорма.Отображать = Истина; Кнопка1 = Ф.Кнопка(); Кнопка1.Родитель = ЭтаФорма; Кнопка1.Текст = "Кнопка1"; Кнопка1.Границы = Ф.Прямоугольник(10, 10, 180, 30); Кнопка1.Нажатие = Ф.Действие(ЭтотОбъект, "Кнопка1_Нажатие"); КонецПроцедуры Процедура Кнопка1_Нажатие() Экспорт Сообщить("Кнопка1_Нажатие " + ВремяСоздания); КонецПроцедуры Ф = Новый ФормыДляОдноСкрипта(); ВремяСоздания = ТекущаяУниверсальнаяДатаВМиллисекундах(); //======================================
Вот еще один более развернутый пример создания формы из сценария. Файлы раположите как на рисунке.
//=== Содержимое файла Приложение.os === #Использовать ".\" ПодключитьВнешнююКомпоненту("C:\444\111\OneScriptForms\OneScriptForms\bin\Debug\OneScriptForms.dll"); Ф = Новый ФормыДляОдноСкрипта(); ГлавнаяФорма1 = Ф.СоздатьФорму(Новый ГлавнаяФорма()); ГлавнаяФорма1.Показать(); ГлавнаяФорма1.Активизировать(); Сообщить("Запуск обработки событий из главного скрипта"); Ф.ЗапуститьОбработкуСобытий(); //====================================== //=== Содержимое файла ГлавнаяФорма.os === Перем ЭтаФорма; Перем ВремяСоздания; Перем Ф; Перем ПолеСписка1; Перем ПодчиненнаяФорма; Процедура ПриСозданииФормы(Форма) Экспорт ЭтаФорма = Форма; ЭтаФорма.Текст = "ГлавнаяФорма"; ЭтаФорма.Отображать = Истина; Кнопка1 = Ф.Кнопка(); Кнопка1.Родитель = ЭтаФорма; Кнопка1.Текст = "Кнопка1"; Кнопка1.Границы = Ф.Прямоугольник(10, 10, 180, 30); Кнопка1.Нажатие = Ф.Действие(ЭтотОбъект, "Кнопка1_Нажатие"); Кнопка2 = Ф.Кнопка(); Кнопка2.Родитель = ЭтаФорма; Кнопка2.Текст = "Открыть диалог"; Кнопка2.Лево = Кнопка1.Лево; Кнопка2.Ширина = Кнопка1.Ширина; Кнопка2.Высота = Кнопка1.Высота; Кнопка2.Ниже(Кнопка1, 10); Кнопка2.Нажатие = Ф.Действие(ЭтотОбъект, "Кнопка2_Нажатие"); Кнопка3 = Ф.Кнопка(); Кнопка3.Родитель = ЭтаФорма; Кнопка3.Текст = "Создать подчиненную форму"; Кнопка3.Лево = Кнопка1.Лево; Кнопка3.Ширина = Кнопка1.Ширина; Кнопка3.Высота = Кнопка1.Высота + 10; Кнопка3.Ниже(Кнопка2, 10); Кнопка3.Нажатие = Ф.Действие(ЭтотОбъект, "Кнопка3_Нажатие"); КонецПроцедуры Процедура Кнопка1_Нажатие() Экспорт Сообщить("Кнопка1_Нажатие " + ВремяСоздания); КонецПроцедуры Процедура Кнопка2_Нажатие() Экспорт Сообщить("Кнопка2_Нажатие " + ВремяСоздания); Сценарий1 = Новый Диалог(); Диалог = Ф.СоздатьФорму(Сценарий1); ЗначениеВозврата = Диалог.ПоказатьДиалог(); Если ЗначениеВозврата = Ф.РезультатДиалога.Да Тогда Сообщить("Значение возврата диалога: " + Диалог.Сценарий.ДанныеРаботыДиалога); ИначеЕсли ЗначениеВозврата = Ф.РезультатДиалога.Нет Тогда Сообщить("Значение возврата диалога: " + Диалог.Сценарий.ДанныеРаботыДиалога); ИначеЕсли ЗначениеВозврата = Ф.РезультатДиалога.Отмена Тогда Сообщить("Значение возврата диалога: " + Диалог.Сценарий.ДанныеРаботыДиалога); КонецЕсли; КонецПроцедуры Процедура Кнопка3_Нажатие() Экспорт ПодчиненнаяФорма = Ф.СоздатьФорму(Новый ПодчиненнаяФорма()); ПодчиненнаяФорма.Показать(); КонецПроцедуры Ф = Новый ФормыДляОдноСкрипта(); ВремяСоздания = ТекущаяУниверсальнаяДатаВМиллисекундах(); //====================================== //=== Содержимое файла Диалог.os === Перем ВремяСоздания; Перем Ф; Перем ЭтаФорма; Перем ПолеСписка1; Перем ДанныеРаботыДиалога Экспорт; Перем Стр; Процедура ПриСозданииФормы(Форма) Экспорт ЭтаФорма = Форма; ЭтаФорма.Текст = "Диалог " + ВремяСоздания; ЭтаФорма.Ширина = 450; ЭтаФорма.Высота = 250; ПолеСписка1 = Ф.ПолеСписка(); ПолеСписка1.Родитель = ЭтаФорма; ПолеСписка1.Границы = Ф.Прямоугольник(10, 10, 300, 150); ПолеСписка1.РежимВыбора = Ф.РежимВыбора.МножественныйПростой; ПолеСпискаЭлементы1 = ПолеСписка1.Элементы; ПолеСпискаЭлементы1.Добавить(Ф.ЭлементСписка("Строка55", "СтрЗначение")); ПолеСпискаЭлементы1.Добавить(Ф.ЭлементСписка("Дата", (Дата(2019,01,02,03)))); ПолеСпискаЭлементы1.Добавить(Ф.ЭлементСписка("Булево", Ложь)); ПолеСпискаЭлементы1.Добавить(Ф.ЭлементСписка("Число", 156.54888)); ПолеСпискаЭлементы1.Добавить(Ф.ЭлементСписка("Объект", ЭтаФорма)); ПолеСпискаЭлементы1.Добавить(Ф.ЭлементСписка("Массив", Новый Массив())); ПолеСписка1.УстановитьВыбор(0, Ложь); ПолеСписка1.УстановитьВыбор(1, Истина); ПолеСписка1.УстановитьВыбор(2, Ложь); ПолеСписка1.УстановитьВыбор(3, Истина); ПолеСписка1.УстановитьВыбор(4, Ложь); Кнопка1 = ЭтаФорма.ЭлементыУправления.Добавить(Ф.Кнопка()); Кнопка1.Текст = "Выбранные"; Кнопка1.Ширина = 100; Кнопка1.Правее(ПолеСписка1, 10); Кнопка1.Нажатие = Ф.Действие(ЭтотОбъект, "Кнопка1_Нажатие"); // если установить Истина, то эта команда не позволит открыть диалог в модальном режиме ЭтаФорма.Отображать = Ложь; КнопкаОК = Ф.Кнопка(); КнопкаОК.Родитель = ЭтаФорма; КнопкаОК.Текст = "ОК"; КнопкаОК.Лево = ПолеСписка1.Лево; КнопкаОК.Ширина = 80; КнопкаОК.Высота = 25; КнопкаОК.Ниже(ПолеСписка1, 10); КнопкаОК.Нажатие = Ф.Действие(ЭтотОбъект, "КнопкаОК_Нажатие"); КнопкаОтмена = Ф.Кнопка(); КнопкаОтмена.Родитель = ЭтаФорма; КнопкаОтмена.Текст = "Отмена"; КнопкаОтмена.Ширина = КнопкаОК.Ширина; КнопкаОтмена.Высота = КнопкаОК.Высота; КнопкаОтмена.Ниже(ПолеСписка1, 10); КнопкаОтмена.Правее(КнопкаОК, 10); КнопкаОтмена.Нажатие = Ф.Действие(ЭтотОбъект, "КнопкаОтмена_Нажатие"); КонецПроцедуры Процедура Кнопка1_Нажатие() Экспорт ВыбранныеЭлементы1 = ПолеСписка1.ВыбранныеЭлементы; Колич = ВыбранныеЭлементы1.Количество; Если Колич > 0 Тогда Стр = "Выбранные:" + Символы.ПС; Для А = 0 По Колич - 1 Цикл Эл = ВыбранныеЭлементы1.Элемент(А).Значение; Стр = Стр + "- " + Эл + Символы.ПС; КонецЦикла; ОкноСообщений2 = Ф.ОкноСообщений(); ОкноСообщений2.Заголовок = "Выбранные"; ОкноСообщений2.Текст = Стр; ОкноСообщений2.Показать(); КонецЕсли; КонецПроцедуры Процедура КнопкаОК_Нажатие() Экспорт ДанныеРаботыДиалога = "ПРИНЯТО!"; ЭтаФорма.РезультатДиалога = Ф.РезультатДиалога.Да; // после установки результата диалога форма диалога закроется КонецПроцедуры Процедура КнопкаОтмена_Нажатие() Экспорт ДанныеРаботыДиалога = "ОТКЛОНЕНО!"; ЭтаФорма.РезультатДиалога = Ф.РезультатДиалога.Нет; // после установки результата диалога форма диалога закроется КонецПроцедуры Ф = Новый ФормыДляОдноСкрипта(); ВремяСоздания = ТекущаяУниверсальнаяДатаВМиллисекундах(); ДанныеРаботыДиалога = "Форма закрыта без выбора"; Стр = ""; //====================================== //=== Содержимое файла ПодчиненнаяФорма.os === Перем ВремяСоздания; Перем Ф; Процедура ПриСозданииФормы(Форма) Экспорт ЭтаФорма = Форма; ЭтаФорма.Текст = "Подчиненная форма " + ВремяСоздания; ЭтаФорма.Ширина = 450; ЭтаФорма.Высота = 250; ЭтаФорма.Отображать = Истина; Кнопка = Ф.Кнопка(); Кнопка.Родитель = ЭтаФорма; Кнопка.Текст = "Кнопка"; Кнопка.Границы = Ф.Прямоугольник(10, 10, 180, 30); Кнопка.Нажатие = Ф.Действие(ЭтотОбъект, "Кнопка_Нажатие"); ЭтаФорма.Нажатие = Ф.Действие(ЭтотОбъект, "Нажатие"); КонецПроцедуры Процедура Нажатие() Экспорт Сообщить("ПодчиненнаяФорма_Нажатие " + ВремяСоздания); КонецПроцедуры Процедура Кнопка_Нажатие() Экспорт Сообщить("Кнопка_Нажатие " + ВремяСоздания); КонецПроцедуры Ф = Новый ФормыДляОдноСкрипта(); ВремяСоздания = ТекущаяУниверсальнаяДатаВМиллисекундах(); //======================================
ФормыДляОдноСкрипта (OneScriptForms) Класс | Библиотека OneScriptForms