Среда разработки И++

Директивы для генератора форм

Редактор форм по своей сути является средством для автоматической генерации исходного кода алгоритма. То есть создание диалога или бланка, размещение на нем элементов управления, добавление обработчиков событий и тому подобные действия приводят к добавлению соответствующих фрагментов кода. С помощью директив прикладные разработчики могут явно указать в исходном тексте алгоритма места для вставки автоматически сгенерированного кода. Это позволяет отделить автоматически сгенерированный код от написанного вручную, а также обеспечить соответствие исходного кода неким принятым стандартам оформления. Сгенерированный код вставляется непосредственно перед строкой директивы.

Если директивы в исходном тексте не обнаружены – используются правила вставки, определенные по умолчанию. Определение типа-формы можно схематически изобразить следующим образом:

ТИП <имя типа>(<имя родительского типа>)
[
    <описание типа>
]

По умолчанию поля формы, индексные поля формы, обработчики формы и элементы управления добавляются непосредственно за "[", методы-обработчики – непосредственно перед "]", функции-обработчики – непосредственно за "]".

Соответственно, использование директив не является обязательным, и добавлять их можно на любом этапе создания алгоритма. Для компилятора директивы представляются комментариями и на исполняемый код не влияют.

Описание директив

Директивы задаются строкой вида:

//\<имя директивы>/\\

где <имя директивы> – предустановленное имя директивы. В строке директивы между //\ и /\\ не должно быть лишних символов, в том числе пробелов.

Перечень директив:

ДирективаОписаниеГде можно указывать
//\поля/\\Поля формы.между "[" и "]" описания типа
//\индексные поля/\\Индексные поля формы.
//\методы/\\Методы-обработчики.
//\атрибуты/\\Вставляются все собственные данные формы (переопределенные в инспекторе объектов поля и индексные поля, обработчики) в виде одной строки. Использование этой директивы имеет меньший приоритет по сравнению с директивами, указанными выше. Например, если в тексте указана директива //\поля/\\ – сгенерированный текст для полей формы будет вставлен перед этой директивой, а не перед директивой //\атрибуты/\\.
//\обработчики/\\Обработчики формы.
//\элементы/\\Типы элементов управления.
//\функции:<имя формы>/\\ Функции-обработчики, которые не являются методами формы. Вместо <имя формы> необходимо указать имя формы, для которой задаются обработчики. Это необходимо, поскольку в исходном тексте одной библиотеки может быть описано несколько типов форм. Например: //\функции:ТМояФорма/\\между "]" описания типа и концом файла

Пример:

Пример исходного текста проекта с использованием директив для генератора форм.

ТИП ТМояФорма(ДИАЛОГ)
[
/*******************************************************/
// данные формы
СТРОКА: заголовок = "Моя форма";
//\атрибуты/\\ - данные формы (поля и индексные поля) добавлять сюда

/*******************************************************/
// элементы управления

ВВОД_КОДА: Ввод_кода1 = [ левый = 145,
верхний = 165, 
высота = 25, 
ширина = 260, 
табиндекс = 2, 
корень = "СПР" ]; 

//\элементы/\\ - элементы управления добавлять сюда 

/*******************************************************/ 
// описания методов-обработчиков событий
//\методы/\\ - добавлять сюда

/*******************************************************/ 
/* описание моих собственных методов */ 

]

/*******************************************************/
// описания функций-обработчиков для типа ТМояФорма
//\функции:ТМояФорма/\\ - добавлять сюда

См. также: