Класс ПроизвольнаяФорма

Добавил: bolsun, 28 января 2020 11:31, обновлено: 28 января 2020 11:39

Раздел: Обсуждение TurboConf

SDK Скрипты Уроки OneScript Обучение Помощь


Как создать произвольную форму в редакторе VisualStudio и подключить ее в скрипте.

Помимо типовых форм, в SDK 5.7 появилась возможность создавать произвольные формы в редакторе Visual Studio и подключать их в свои скрипты.

В качестве примера, сделан порт обработки "Цветовые схемы для конфигуратора 1С" Дмитрия Чернова http://infostart.ru/public/202980/

Скрипт можно вызвать из ТурбоМеню или по Ctrl+8

Image https://turboconf.ru/Content/Files/31C694EEA2260A37464FB9F25FA7B436FB000A06/ThemeSwitcher.png

Форма содержит несколько элементов управления и сделана в редакторе Visual Studio 2017. Практически вся логика скрипта перенесена без изменений и написана на языке 1С.

Так выглядит открытие формы и подключение обработчика в скрипте.


Процедура ПриОткрытии()
	
	Форма = Новый ПроизвольнаяФорма();
	Форма.Сгенерировать("settings\ThemeSwitcher\Forms\ThemeSwitcherForm", "ThemeSwitcher.ThemeSwitcherForm");
	
	Форма.Заголовок = "Выберите тему";

	Темы = Новый Соответствие;

	Темы.Вставить("desertEx_Revised", "desertEx_Revised");
	Темы.Вставить("Standard", "Standard");
	Темы.Вставить("Monokai", "Monokai");
	Темы.Вставить("Mustang", "Mustang");
	Темы.Вставить("Nightfall", "Nightfall");
	Темы.Вставить("Nina", "Nina");
	Темы.Вставить("Ragnarok_Blue", "Ragnarok_Blue");
	Темы.Вставить("Resharper_Son_of_obsidian", "Resharper_Son_of_obsidian");
	Темы.Вставить("See_Sharp", "See_Sharp");
	Темы.Вставить("Coding_Horror_2010", "Coding_Horror_2010");
	Темы.Вставить("See_Sharp", "See_Sharp");
	Темы.Вставить("Selenitic", "Selenitic");
	Темы.Вставить("WekeRoad_Ink", "WekeRoad_Ink");
	Темы.Вставить("Zenburn_2010", "Zenburn_2010");

	//Устанавливаем даннные для элемента ListBox
	Форма.УстановитьДанные("listBoxThemes", "Items", Темы);

	//Подключаем обработчик для кнопки
	Форма.УстановитьДействие(ЭтотОбъект,  "buttonOK_Click");

	Форма.Показать();
	
КонецПроцедуры

Процедура buttonOK_Click(Значение, Отказ) Экспорт
	Если Не Отказ Тогда 
		Путь_к_Файлу = Получить_Путь_к_Файлу();
		Путь_к_Файлу_8_3 = Получить_Путь_к_Файлу_8_3();
		
		Запись_в_файл_настроек(Значение, Путь_к_Файлу);
		Запись_в_файл_настроек(Значение, Путь_к_Файлу_8_3);	
	КонецЕсли;
КонецПроцедуры

Создание формы в редакторе Visual Studio 2017

  • Добавьте в References сборку TurboConf.Service.dll
  • В модуле формы измените родительский класс Form на CustomForm
Image https://turboconf.ru/Content/Files/31C694EEA2260A37464FB9F25FA7B436FB000A06/ThemeSwitcherForm_VS2017.png

Так выглядит код формы на языке C#

public partial class ThemeSwitcherForm : CustomForm
    {
        public ThemeSwitcherForm()
        {
            InitializeComponent();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void listBoxThemes_SelectedValueChanged(object sender, EventArgs e)
        {
            if (listBoxThemes.SelectedItem != null)
            {
                var path = "settings/ThemeSwitcher/Themes/" + listBoxThemes.SelectedItem.ToString() + ".png";
                if (!File.Exists(path))
                {
                    pictureBoxPreview.Image = null;
                    return;
                }

                pictureBoxPreview.Image = new Bitmap(path);
            }
        }

        private void ThemeSwitcherForm_Load(object sender, EventArgs e)
        {
            listBoxThemes.SelectedIndex = 0;
        }

        private void buttonOK_Click(object sender, EventArgs e)
        {
            Close();
            InvokeScriptHandler("buttonOK_Click", listBoxThemes.SelectedItem);
        }
    }

Дополнительная информация по созданию Произвольных форм появится позже.

Функция экспериментальная, если Вы считаете, что она нужна - пишите комментарии :)


К списку тем

Комментарии

TurboConf

Расширение возможностей

Конфигуратора 1С

Скачать

Бесплатный пробный период 14 дней