Урок 27. Разделение формы на несколько файлов
Включение документов
Платформа Workflow Technology поддерживает механизм разделения формы на несколько файлов. Для этого используется тэг <Includes>, который описывается в основном файле и содержит ссылку на дополнительный xml-файл.
<Includes>
<Include Path="IncludeDocument.xml" />
</Includes>
В момент открытия формы платформа парсит xml-файл и загружает включаемые документы, копируя их содержимое в экземпляр класса WorkflowForm, созданный для формы из основного файла. Сами файлы при этом никак не изменяются.
Механизм включения документов поддерживает любой уровень вложенности. Если в цепочке вложений файл будет упоминаться несколько раз, то он все равно будет загружен только один раз.
Подстановка текста из файлов строковых ресурсов (ru.wxlf и en.wxlf) будет производиться после загрузки включаемых файлов. Следовательно, используемые во включаемых файлах строки должны быть описаны либо в контексте основного файла, либо в общем контексте.
Разбиение формы на несколько файлов можно использовать в разных случаях. Например:
создание файла стилей, чтобы не дублировать тэг
<Appearance>
во всех файлах форм;вынесение общих условий или команд. Например, можно вынести условия и команды, связанные с паттерном onClose.
Файл стилей
Создадим файл формы _TemplateAppearance.xml, который будет выступать в качестве источника стилей и цветов для остальных форм. Добавим в него только описание тэга <Appearance>
. Полный код файла будет иметь вид:
<?xml version="1.0"?>
<Form Name="NewForm" Title="FormTitle" Width="800" Height="600" StartPosition="CenterScreen" FontStyle="TitleFont" ForeColor="Black" StatusBar="True" MaximizeBox="False">
<Appearance>
<Colors>
<Color Name="ThemeForeColor" Red="0" Green="0" Blue="0" Alpha="255" />
<Color Name="ThemeBackgroundColor" Red="255" Green="255" Blue="255" Alpha="255" />
<Color Name="ThemeFlatColor" Red="255" Green="0" Blue="0" Alpha="255" />
<Color Name="ThemeSeparateBackgroundColor" Red="225" Green="225" Blue="225" Alpha="255" />
<Color Name="HeadBackgroundColor" Red="221" Green="232" Blue="246" Alpha="255" />
<Color Name="HeadForeColor" Red="70" Green="70" Blue="70" Alpha="255" />
<Color Name="LabelForeColor" Red="100" Green="100" Blue="100" Alpha="255" />
<Color Name="TableBackgroundColor" Red="200" Green="200" Blue="200" Alpha="255" />
<Color Name="TableArchiveColor" Red="230" Green="230" Blue="230" Alpha="255" />
<!-- Стили кнопок -->
<Color Name="ButtonFlatBorderColor" Red="225" Green="225" Blue="225" Alpha="255" />
<Color Name="ButtonFlatMouseDownBackColor" Red="201" Green="219" Blue="241" Alpha="255" />
<Color Name="ButtonFlatMouseOverBackColor" Red="228" Green="237" Blue="248" Alpha="255" />
</Colors>
<FontStyles>
<FontStyle Name="ThemeFontStyle" Font="Segoe UI" Size="9" />
<FontStyle Name="HeadFontStyle" Font="Segoe UI" Size="15" />
<FontStyle Name="LabelFontStyle" Font="Segoe UI" Size="9" Italic="True" />
<FontStyle Name="ButtonFontStyle" Font="Segoe UI" Size="10" />
</FontStyles>
</Appearance>
</Form>
Перейдем в файл формы настроек пользователя (TemplateUserSettings.xml), в котором удалим тэг <Appearance>
и вместо него добавим тэг <Includes>
:
<Includes>
<Include Path="_TemplateAppearance.xml" />
</Includes>
В качестве значения атрибута Path
тэга <Include>
укажем имя нашего файла стилей.
Запустите приложение и проверьте отображение формы пользовательских настроек.
Вынесение общих условий или команд
Создадим файл _TemplateOnClose.xml, в который из файла TemplateUserSettings.xml перенесем:
условия FormClosingCondition, EscapeKeyDownCondition, FormChangedEqualCondition и MandatoryFieldsAreFilledEqualCondition;
команды FormCloseCommand, SaveOnCloseMessageBoxCommand и CloseOnCloseMessageBoxCommand;
а также весь тэг
<Executions>
, так как все Execution связаны с паттерном onClose.
Вернемся в файл TemplateUserSettings.xml и добавим тэг <Include>
с именем нового файла:
<Includes>
<Include Path="_TemplateAppearance.xml" />
<Include Path="_TemplateOnClose.xml" />
</Includes>
Запустите приложение и проверьте отображение формы пользовательских настроек.
Переделайте файл настроек (TemplateSettings.xml) таким же образом. Не забудьте в файл _TemplateAppearance.xml добавить цвет TabMouseOverBackColor.
Last updated