Инструкция WINDOW
Инструкция WINDOW - создание нового окна, инструкция EXTEND WINDOW - изменение отрисовщика существующего окна, инструкция HIDE WINDOW - скрытие существующего окна.
Синтаксис
WINDOW name [caption] [NATIVE] [options];
Опции options, которые идут в конце инструкции, могут быть указаны друг за другом в произвольном порядке:
HIDETITLE
HIDESCROLLBARS
orientationType
POSITION(x, y, width, height)
fixedPositionType
HALIGN(alignType)
VALIGN(alignType)
TEXTHALIGN(alignType)
TEXTVALIGN(alignType)
CLASS cssClassExpr
CUSTOM customExpr
Существующему окну можно задать отрисовщик или скрыть его отдельными инструкциями:
EXTEND WINDOW windowName CUSTOM customExpr;
HIDE WINDOW windowName;
Описание
Инструкция WINDOW объявляет новое окно и добавляет его в текущий модуль.
По умолчанию создаётся окно, в котором отображаются элементы навигатора.
Инструкция EXTEND WINDOW задаёт уже объявленному окну, в том числе стандартному, компонент React или HTML-шаблон, который рисует его элементы навигатора, оставляя всё остальное в окне как есть. Элементы остаются в том окне, в которое были помещены, поэтому структура навигатора, выбор в нём и поведение при запуске сохраняются, а меняется только отрисовка. Окно должно быть уже объявлено. Из окон NATIVE компонент можно задать только окнам System.forms и System.log, а шаблон нельзя задать ни одному из них. Если окно расширяют несколько модулей, последний литерал задаёт разметку, с которой окно начинает, а последнее свойство — то, которое её пересчитывает.
Инструкция HIDE WINDOW скрывает указанное окно, делая его невидимым. Скрытое окно ничего не рисует: окну, которому задан компонент CUSTOM, а затем оно скрыто, компонент не рисуется, а сообщения скрытого System.log выводятся в лог и не показываются нигде.
Параметры
-
nameИмя окна. Простой идентификатор. Имя должно быть уникально в пределах текущего пространства имен.
-
captionЗаголовок окна. Строковый литерал. Если заголовок не задан, то заголовком окна будет являться его имя.
-
NATIVEКлючевое слово, указывающее, что окно наполняет клиент, а не навигатор: поместить в него элементы навигатора нельзя. Так заданы предопределённые окна
System.forms, в котором открываются формы, иSystem.log, в котором выводятся сообщения пользователю. Для такого окна применяются только опцииPOSITION,CLASS,HIDETITLEиHIDESCROLLBARS, а ориентация и выравнивание не учитываются. -
windowNameИмя скрываемого окна. Составной идентификатор существующего окна.
Опции инструкции
-
HIDETITLEКлючевое слово, указывающее на отсутствие заголовка окна в пользовательском интерфейсе.
-
HIDESCROLLBARSКлючевое слово, указывающее на отсутствие скроллбаров для компонента данного окна.
-
orientationTypeУказание вертикальной или горизонтальной ориентации создаваемого тулбара или панели. Задается одним из ключевых слов:
VERTICAL- вертикальная ориентация (значение по умолчанию).HORIZONTAL- горизонтальная ориентация.
-
POSITION(x, y, width, height)Указание размеров и местоположения окна.
-
xКрайняя левая координата окна. Целочисленный литерал в диапазоне от
0до100. -
yКрайняя верхняя координата окна. Целочисленный литерал в диапазоне от
0до100. -
widthШирина окна. Целочисленный литерал в диапазоне от
0до100. -
heightВысота окна. Целочисленный литерал в диапазоне от
0до100.
-
-
fixedPositionTypeУказание фиксированного расположения окна на рабочем столе, которое не позволяет пользователю изменять его положение и размер. Размер окна в таком случае выбирается автоматически исходя из предпочитаемых размеров компонента. Окно будет расположено слева, справа, сверху, снизу рабочего стола соответственно. Опция не может быть использована одновременно с опцией
POSITION. Задается одним из ключевых слов:LEFT- расположение слеваRIGHT- справаTOP- сверхуBOTTOM- снизу
-
HALIGN(alignType)Указание горизонтального выравнивания кнопок в вертикальном тулбаре.
-
alignTypeТип выравнивания. Задается с помощью одного из ключевых слов:
START- выравнивание по левому краю (значение по умолчанию).CENTER- выравнивание по центру.END- выравнивание по правому краю.
-
-
VALIGN(alignType)Указание вертикального выравнивания кнопок в горизонтальном тулбаре.
-
alignTypeТип выравнивания. Задается с помощью одного из ключевых слов:
START- выравнивание по верхнему краю (значение по умолчанию).CENTER- выравнивание по центру.END- выравнивание по нижнему краю.
-
-
TEXTHALIGN(alignType)Указание горизонтального выравнивания текста на кнопках.
-
alignTypeТип выравнивания. Задается с помощью одного из ключевых слов:
START- выравнивание по левому краю (значение по умолчанию).CENTER- выравнивание по центру.END- выравнивание по правому краю.
-
-
TEXTVALIGN(alignType)Указание вертикального выравнивания текста на кнопках.
-
alignTypeТип выравнивания. Задается с помощью одного из ключевых слов:
START- выравнивание по верхнему краю.CENTER- выравнивание по центру (значение по умолчанию).END- выравнивание по нижнему краю.
-
-
CLASS cssClassExprУказание имени CSS-класса для DOM-элемента, создаваемого для компонента окна в HTML. Может быть использовано для применения пользовательских стилей.
-
cssClassExprВыражение, значение которого определяет имя класса.
-
-
CUSTOM customExprЭлементы навигатора этого окна рисует компонент React или HTML-шаблон, а не стандартная панель. Так их рисует только десктопный веб-клиент: мобильный веб-клиент и десктоп-клиент оставляют своё стандартное меню, и то же относится к описанным ниже окнам
System.formsиSystem.log, которые сохраняют там своё стандартное представление.-
customExprВыражение (строковое значение). Строковый литерал, соответствующий
[A-Z][A-Za-z0-9_$]*, задаёт имя компонента React; литерал с разметкой и любое свойство — HTML-шаблон; литерал, который не является ни тем, ни другим, — ошибка. Компонент задаётся только литералом, так как отрисовщик выбирается до того, как придёт первое значение, а шаблон, заданный свойством, пересчитывается по мере изменения этого значения, и окно рисуется заново по новой разметке.Литерал и свойство можно задать вместе — так же, как
CLASSпринимает и литерал, и свойство: литерал задаёт разметку, по которой окно рисуется, пока свойство не вычислит первое значение, а дальше его заменяет свойство. Компонент React со свойством сочетать нельзя, так как компонент рисует окно сам и вычисленный шаблон никогда не был бы нарисован.Шаблон — это разметка, которую пишет приложение и которую платформа вставляет как есть, поэтому за её содержимое отвечает приложение:
<script>в ней не выполняется, а атрибут-обработчик, написанный на элементе (onclick,onerror), — выполняется. Шаблон здесь тот же, который принимает атрибутcustomконтейнераDESIGN, с теми же правилами записи места; здесь<Lsf:name>— место, куда попадает стандартная кнопка элемента навигатора с этим именем. В литерале имя разрешается в пространствах имён модуля, поэтому элемент должен быть уже объявлен, а имя, которое ни во что не разрешается, — ошибка; шаблон, вычисляемый свойством, не разрешается, и там пишется каноническое имя.Окна
System.formsиSystem.log— исключение среди оконNATIVE. Элементов навигатора в них нет, но каждому из них можно задать компонент React, и тогда компоненту вместо элементов навигатора передаётся то, что положило в окно работающее приложение: формы, открытые вSystem.forms, и сообщения, выведенные вSystem.log. Помещается это тегом<Lsf name/>, и то, что компонент никуда не поместил, не теряется: форма остаётся открытой и скрытой, а сообщение — выведенным. Задать можно только компонент: элементов навигатора, которые заняли бы места шаблона, здесь нет, а то, что показывает такое окно, существует только пока приложение работает, поэтому ни шаблон, ни свойство не принимаются.Остальным окнам
NATIVEнельзя задать ни компонент, ни шаблон, так как в них нет ни элементов навигатора, ни чего-либо другого, по чему их можно было бы нарисовать.
-
Примеры
// cоздание системных окон в модуле System
WINDOW logo HORIZONTAL POSITION(0, 0, 10, 6) VALIGN(CENTER) HALIGN(START) HIDETITLE HIDESCROLLBARS CLASS logoWindowClass();
WINDOW root HORIZONTAL POSITION(10, 0, 70, 6) VALIGN(CENTER) HALIGN(CENTER) HIDETITLE HIDESCROLLBARS CLASS rootWindowClass();
WINDOW system HORIZONTAL POSITION(80, 0, 20, 6) VALIGN(CENTER) HALIGN(END) HIDETITLE HIDESCROLLBARS CLASS systemWindowClass();
WINDOW toolbar VERTICAL POSITION(0, 6, 20, 94) HIDETITLE CLASS toolbarWindowClass();
// в forms открываются формы, в log выводятся сообщения
WINDOW forms NATIVE POSITION(20, 6, 80, 94) CLASS formsWindowClass();
WINDOW log NATIVE POSITION(80, 6, 20, 93) HIDETITLE CLASS logsWindowClass();
// горизонтальное окно внизу рабочего стола, в котором все кнопки будут выравниваться по центру, а текст - выравниваться вверх
// в это окно можно, например, помещать формы для быстрого открытия
WINDOW hotforms HORIZONTAL BOTTOM VALIGN(CENTER) TEXTVALIGN(START);
// окно, которое рисует прикладной компонент React
WINDOW appMenu VERTICAL POSITION(0, 6, 20, 94) HIDETITLE CUSTOM 'AppMenu';
// окно, в котором открываются формы, рисует прикладной компонент React вместо стандартных вкладок
EXTEND WINDOW System.forms CUSTOM 'FormsBoard';
// окно, в котором выводятся сообщения, рисует прикладной компонент React вместо стандартного списка
EXTEND WINDOW System.log CUSTOM 'MessageLog';
// скрытие предопределённого окна сообщений (его сообщения тогда выводятся в лог и не показываются нигде)
HIDE WINDOW System.log;