База знаний

Справочная система SP-XML

Связанные темы:

Общие сведения о платформе SP-XML
Структура приложения
Формы описания данных (.xmd)
Встроенные функции
Встроенные объекты
Встроенные глобальные переменные
Экранные формы (.xms)
Язык XQuery
Дополнительные возможности платформы
Первые шаги в освоении платформы SP-XML

Часть 2. Приложение с UI.

После знакомства с консольным приложением попробуем создать первое приложение с пользовательским интерфейсом.

Скачайте минимальный дистрибутив клиента.

Обратите внимание на содержимое папки Sample Client. Папка содержит минимальный набор файлов для запуска клиента SP-XML. Папка настроена для работы в локальном режиме, без использования сервера приложения.

SpXml.exe – исполняемый файл клиентской части.

app, app_ui – вспомогательные файлы (встроенные элементы UI, диалогов и пр.)

misc – внешние компоненты и библиотеки

 

Отдельно обратите внимание на файл SpXml.ini. Его создаете Вы, как разработчик приложения. Этот файл будет являться частью дистрибутива Вашего приложения.

Пока в нем всего одна строчка:

HOME: x-app://test/test.xml

Параметр HOME содержит url стартового документа (стартовой страницы). Обратите внимание на схему x-app. Это специальная схема для файлов, входящих в дистрибутив.  Хост в данной схеме (в нашем примере это “test”) – имя модуля. По умолчанию модули располагаются в папке приложения.

В нашем примере уже создан модуль “test”, в котором есть два файла: test.xml и test.xms.

test.xml – файл, содержащий форму описания данных XML-документа, которую мы вкратце рассматривали в первой части, посвященной консольному приложению. Однако в предыдущем примере файл с формой имел расширение .xmd и содержал корневой элемент <SPXML-FORM>, а в данном случае имеет расширение .xml и содержит корневой элемент <SPXML-INLINE-FORM>.

В данном случае мы применили технологию так называемой inline-формы, когда форма и созданный по ней документ объединяются в одном файле. Без этой технологии пришлось бы создавать два файла: форму .xmd и пустой .xml, ссылающийся на эту форму.

Форма test.xmd описывает форму данных домашней страницы, содержащую 4 поля разных типов:

<?xml version="1.0" encoding="utf-8"?>

<SPXML-INLINE-FORM>

<test>

              <name TYPE="string" DEFAULT="entry_1"/>

              <flag TYPE="bool" NULL-FALSE="1"/>

              <count TYPE="integer" NOT-NULL="1"/>

              <date TYPE="date"/>

</test>

</SPXML-INLINE-FORM>

 

Форма test.xms содержит экранную форму домашней страницы.

<?xml version="1.0" encoding="utf-8"?>

<SPXML-SCREEN SOURCE="TopElem" TITLE="Hello world" RESIZE="1" WIDTH="700px" HEIGHT="400px">

              <LABEL TITLE="Hello world!" BOLD="1"/>

              <BR/>

              <EDIT SOURCE="Ps.name" WIDTH="50zr" LABEL-TITLE="Name"/>

              <CHECK-BOX SOURCE="Ps.flag" TITLE="Flag"/>

              <IF EXPR="Ps.flag">

                            <EDIT SOURCE="Ps.count" WIDTH="10zr" LABEL-TITLE="Count"/>

              </IF>

              <LINE ADAPTIVE="1">

                            <DATE SOURCE="Ps.date" LABEL-TITLE="Date"/>

                            <LABEL TITLE-EXPR="'Selected date: ' + StrLongDate( Ps.date )"/>

              </LINE>

              <BR/>

              <BUTTON TITLE="Test" ACTION="alert( 'Hello world!' )"/>

</SPXML-SCREEN>

 

Обратите внимание на следующие детали:

Каждый редактируемый элемент содержит атрибут SOURCE (источник данных). Это выражение, возвращающее элемент XML-документа, который редактирует данный элемент экрана.  В нашем примере все выражения считаются от специального элемента “Ps” – источника, вышестоящего элемента, где он указан.  В нашем примере это “TopElem” – корневой элемент.

WIDTH или HEIGHT может измеряться как в привычных единицах “px”, так и в “zr” – ширина символа “0”.

При смене значения поля на экране, сразу идет запись нового значения в элемент-источник, после чего идет перестроения элементов экрана. При перестроении часть элементов, находящихся внутри элемента <IF> может появиться на экране, или наоборот быть скрыта. Также при перестроении будут заново вычислены выражения в TITLE-EXPR.