ФормыДляОдноСкрипта.СоздатьФорму (OneScriptForms.CreateForm) Метод

Синтаксис

СоздатьФорму(<Сценарий>)

Параметры

Сценарий (обязательный)
Тип: Произвольный.
Сценарий, подключенный методом ПодключитьСценарий.

Возвращаемое значение

Тип: Форма (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