Форма дополнительных параметров команды "Custom form"

При необходимости можно запросить пользователя, выполняющего интерактивную команду, ввести значения дополнительных параметров, и использовать их в дальнейшем при выполнении скрипта команды. В этом случае выполнение команды будет предваряться открытием формы ввода дополнительных параметров.

Дополнительные параметры интерактивной команды Parameters можно запросить с помощью стандартной формы (флаг Parameters list), генерируемой системой, предварительно добавив их в одноименный список Parameters:

HowTo_Command5

Или же можно запросить их с помощью самостоятельно сконструированной формы (флаг Custom form), в этом случае нет необходимости добавлять параметры в список Parameters, однако необходимо самостоятельно сконструировать форму параметров.

Рассмотрим реализацию второго, более сложного варианта, на примере пользовательской команды, которая отправляет сообщение пользователю, выполняющему ее. В тексте сообщения необходимо вывести имя пользователя, соответствующее введенному в форме дополнительных параметров идентификатору.

В проекте модуля создаем новый объект Windows Form, наследуем его от класса BaseParamForm (из пространства имен Ultima.Client.ParamForms) и определяем параметры формы:

[ParamForm("61A32313-4DA6-495F-8062-3CF60ED38EDE""Первая тестовая форма",

 "Введите параметры в первой тестовой форме")]

public partial class TestParamForm1 : BaseParamForm

{

 public TestParamForm1()

 {

         InitializeComponent();

 }

}

HowTo_Command_CustomForm1

35_settings

В свойство Parameters класса BaseParamForm под ключом RecordID передается код объекта, из которого запустили команду.

Добавляем в экранную форму элемент управления SpinEdit для ввода идентификатора пользователя:

HowTo_Command_CustomForm2

// Получаем значение, введенное в элементе управления SpinEdit.

protected override void GetParameters()

{

 Parameters["UserID"] = spinEdit.Value;

}

На этом создание формы ввода параметров можно считать оконченным. Компилируем проект, копируем созданные библиотеки в папку модуля в клиентском приложении Client/ClientModules/TradeTestSolution, перезагружаем метаданные и переходим к редактированию команды. Установив флаг Custom form для свойства Parameters, выбираем созданную форму ввода дополнительных параметров в списке Parameter form:

HowTo_Command4

После этого можно перейти к редактированию скрипта, который будет отправлять сообщение пользователю:

HowTo_Command_Script6

Получаем идентификатор пользователя из формы дополнительных параметров, запрашиваем имя пользователя, соответствующее этому идентификатору, и отправляем сообщение:

HowTo_Command_Result3

Данные, введенные в форму параметров, можно проверять на валидность с помощью следующего варианта метода GetParameters:

GetParameters(string title,

         IEnumerable<ScriptUserParameter> parameters,

         IDictionary<stringobject> paramValues,

         Action<ParameterValidationHelper> validationMethod)

Класс ParameterValidationHelper позволяет передать методу валидации значения параметров, а обратно – результаты проверки с любой нужной степенью детализации, чтобы, например, подсветить неправильные параметры на форме через ErrorProvider, например:

ParameterValidationHelper =>

{

 var x = ParameterValidationHelper.Parameters["Password"];

 if (x.ToString().Length < 5)

 {

         ParameterValidationHelper.ReportError("Password""Пароль слишком короткий");

 }

}