Настройки генерации шаблона:
-
Глубина просмотра контролов формы - данный параметр задаёт насколько глубоко по уровню вложенности шаблонизатор будет собирать данные о контролах. Данный параметр задаётся вручную при создании шаблона. Если параметр равен 0, то шаблонизатор соберёт информацию только о невложенных контролах, Если параметр равен 1, то шаблонизатор соберёт данные о невложенных контрролах и о контролах 1 уровня вложенности. и т.д.
-
Глубина контролов выбранной формы - данный параметр отображает максимальную глубину контролов на выбранной форме, т.е. сколько уровней вложенности контролов существует на форме. При выставлении параметра "Глубина просмотра контролов формы" рекомендуется ориентироваться на этот параметр.
Для формы:
-
Заголовок - Параметр содержащий заголовок формы. В шаблоне значение заголовка находится в теге <caption>. Рекомендуется использовать данный параметр в шаблоне, кроме случаев, когда заголовок динамически изменяется.
Пример: <caption>Заголовок Формы</caption>.
-
Имя класса окна - Параметр, содержащий имя класса окна. В шаблоне имя класса окна находится в параметре className в теге <matchingWin32>. Рекомендуется использовать данный параметр в шаблоне.
Пример: className="FormClassName"
-
Размеры - Параметр, содержащий размеры целевой формы. Полученные данные хранятся в параметрах cx и cy тега <size> который находится в теге <matchingWin32>. Рекомендуем использовать данный параметр только в случаях, когда остальные параметры не позволяют достаточно точно описать целевую форму приложения.
Пример: <size cx="1000" cy="500">
Пример из шаблона, в котором использованы все три параметра:
<matching matchingType="CFormData::mtWin32">
<matchingWin32 className="FormClassName" componentId="Test">
<caption>Заголовок Формы</caption>
<size cx="1000" cy="500"/>
<ctrls>
...
</ctrls>
</matchingWin32>
</matching>
Для контролов формы:
-
CtrlId - Id контрола, в шаблоне данное значение находится в параметре ctrlId тега <ctrl>. Рекомендуем использовать данный параметр, кроме случаев когда Id контролов на форме генерируется автоматически (как понять что id контролов на форме генерируются автоматически - создайте два шаблона с помощью шаблонизатора с включенным параметром CtrlId и сравните полученные значения Id контролов для соответствующих контролов. В некоторых случаях может потребоваться выход из приложения или перезагрузка для генерации нового набора контролов).
Пример: ctrlId="1003"
-
Имя класса окна - класс контрола. В шаблоне данный параметр находится в параметре className тега <ctrl>. Класс контрола часто помогает администратору Indeed-Id понять какой контрол описан в шаблоне. Рекомендуется для использования в шаблоне.
Пример: className="Button"
-
Текст - текст содержащийся в свойстве text контрола. В шаблоне содержится в теге <text>.
Внимание:При создании шаблона обращайте внимание на текст контрола - при различных обстоятельствах (смена языка в системе, смена языка в приложении, изменение версии приложение, смена пользователя и тд.) Текст в контроле изменится, что может помешать процедуре матчига приложения. Не используйте динамически изменяющийся текст в шаблоне, либо учитывайте все возможные варианты данного параметра.
Пример: <text>OK</text>.
-
Размеры - параметр контрола Size содержащий значение длины и ширины контрола. В шаблоне данные значения хранятся в параметрах cx и cy в теге <size> - длина и ширина контрола соответственно. Данный параметр рекомендуется использовать в случае, когда остальные параметры не позволяют достаточно точно описать целевую форму приложения.
Пример: <size cx="189" cy="16"/>
-
Позиция - параметр контрола Location, содержащий позицию левого верхнего угла элемента управления относительно левого верхнего угла контейнера. В шаблоне данные значения хранятся в параметрах x и y в теге <position>. Данный параметр рекомендуется использовать в случае, когда остальные параметры не позволяют достаточно точно описать целевую форму приложения.
Пример: <position x="159" y="202"/>
-
Visible - параметр контрола Visible, указывающее, отображаются ли контрол и все его дочерние контролы. В шаблоне содержится в параметре visible тега <ctrl>. Visible="1" контрол видим для пользователя, Visible="0" контрол невидим для пользователя.
Внимание: значение данного контрола на форме может изменятся. Невидимые контролы на форме могут становиться видимыми по различным причинам (например: происходит ошибка и текст сообщения об ошибке становится видимым на форме (visible="1")). Рекомендуем обратить внимание на контролы с параметром visible=0, чтобы верно обработать ситуацию, когда они станут видимыми.
Пример: visible="1".
-
Enable - параметр контрола Enabled показывающий, сможет ли элемент управления отвечать на действия пользователя. В шаблоне содержится в параметре Enabled тега <ctrl>. Enable="0" - контрол отключен и не отвечает на действия пользователя; Enable="1" - контрол отвечает на действия пользователей.
Внимание: параметр Enable контрола может меняться в зависимости от различных обстоятельств. (Например: форма входа содержит контрол ввода имени пользователя, контрол ввода пароля и кнопку "ОК". кнопка "ОК" будет недоступной (Enable="0") пока хотя бы одно из полей ввода остаётся пустым. Когда оба поля заполнены кнопка становится доступной (Enabled="1"). В данной примере рекомендуется убрать параметр Enabled для контрола кнопки "ОК", чтобы избежать проблемы при матчинге и заполнении).
Пример: enabled="1".
Пример описания контрола, в котором использованы все параметры:
<ctrl className="Button" ctrlId="1003" enabled="1" visible="1">
<text>Ok</text>
<position x="159" y="202"/>
<size cx="189" cy="16"/>
</ctrl>
Алгоритм заполнения:
-
Нет - Алгоритм заполнения не будет сгенерирован в шаблоне, тег <fillingAlgorithm> будет отсутствовать в шаблоне.
-
На основе settext - Шаблонизатор сгенерирует команды заполнения поля логина, заполнения поля пароля и нажатия кнопки "ОК". Каждая команда будет содержать данные контрола, к которому она должна быть применена, данные по контролом шаблонизатор получает в результате выполнения инструкций шаблонизатора пользователем, указывающим последовательность контролов логина, контрол пароля и кнопку ок. Заполнения контролов будет происходит стандартным методом SetText. Рекомендуется использовать данный алгоритм заполнения.
Пример: <fillingAlgorithm>
<command type="ctFillCtrl">
<description>Ввести имя пользователя</description>
<dataFillCtrl fillingType="cftSetText" clearCtrlText="1">
<ctrl className="Edit" ctrlId="1001" enabled="1" visible="1">
<position x="159" y="15"/>
<size cx="189" cy="23"/>
</ctrl>
<fieldValueInfo field="ffUserName"/>
</dataFillCtrl>
</command>
<command type="ctFillCtrl">
<description>Ввести пароль</description>
<dataFillCtrl fillingType="cftSetText" clearCtrlText="1">
<ctrl className="Edit" ctrlId="1002" enabled="1" visible="1">
<position x="159" y="76"/>
<size cx="189" cy="23"/>
</ctrl>
<fieldValueInfo field="ffPassword"/>
</dataFillCtrl>
</command>
<command type="ctFillCtrl">
<description>Нажать на OK</description>
<dataFillCtrl fillingType="cftClickButton" clearCtrlText="1">
<ctrl className="Edit" ctrlId="1005" enabled="1" visible="1">
<position x="0" y="125"/>
<size cx="159" cy="23"/>
</ctrl>
<fieldValueInfo field="ffNoData"/>
</dataFillCtrl>
</command>
</fillingAlgorithm>
-
Эмуляция ввода - шаблонизатор сгенерирует команды установки фокуса в поле логина, заполнения поля логина, заполнения поля пароля, нажатия кнопки "ОК", команды перехода между контролами и команды паузы. Первой командой будет команда установки фокуса на контроле имени пользователя (первом контроле, который укажет пользователь при создании шаблона). Команды заполнения не будут содержать описание контролов, а их действие будет проводиться с текущим контролом в фокусе. Само заполнение будет происходит с помощью эмуляции нажатия клавиш клавиатуры. Переход фокуса между контролами будут осуществляться эмуляцией нажатия клавиши Tab. В алгоритме заполнения также будут присутствовать команды паузы в 50 миллисекунд между прочими командами. Рекомендуется к использованию в шаблонах для приложений, в которых использование метода settext невозможно или затруднено.
Пример: <fillingAlgorithm> <command type="ctWait"> <description>Подождать</description> <dataWait periodMs="50"/> </command> <command type="ctPosition"> <description>Перейти на контрол имени пользователя</description> <dataPosition waitIntervalMs="50"> <ctrl className="Edit" ctrlId="1001" enabled="1" visible="1"> <position x="159" y="15"/> <size cx="189" cy="23"/> </ctrl> </dataPosition> </command> <command type="ctWait"> <description>Подождать</description> <dataWait periodMs="50"/> </command> <command type="ctFillCurrentCtrl"> <description>Ввести имя пользователя</description> <dataFillCurrentCtrl clearCtrlText="1"> <fieldValueInfo field="ffUserName"/> </dataFillCurrentCtrl> </command> <command type="ctWait"> <description>Подождать</description> <dataWait periodMs="50"/> </command> <command type="ctControl"> <description>Перейти на следующий контрол</description> <dataControl type="cctTab" waitIntervalMs="50"/> </command> <command type="ctWait"> <description>Подождать</description> <dataWait periodMs="50"/> </command> <command type="ctFillCurrentCtrl"> <description>Ввести пароль</description> <dataFillCurrentCtrl clearCtrlText="1"> <fieldValueInfo field="ffPassword"/> </dataFillCurrentCtrl> </command> <command type="ctWait"> <description>Подождать</description> <dataWait periodMs="50"/> </command> <command type="ctControl"> <description>Перейти на следующий контрол</description> <dataControl type="cctTab" waitIntervalMs="50"/> </command> <command type="ctWait"> <description>Подождать</description> <dataWait periodMs="50"/> </command> <command type="ctControl"> <description>Нажать на OK</description> <dataControl type="cctEnter" waitIntervalMs="50"/> </command> </fillingAlgorithm>
Внимание: Полученные шаблонизатором алгоритмы заполнения практически всегда требуют дополнительных изменений, сделанных вручную, для корректного заполнения целевой формы.
Пример окна шаблонизатора с выбранными рекомендованными параметрами:
|