Перейти к основному содержимому
Версия: 7.0

Инструкция 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;