Вчера полдня потратил на то, чтобы разобраться как работать с валидаторами из библиотеки
JVCL. В интернете никакой информации на эту тему нет, хелп самой библиотеки оказался крайне скуп. Пришлось разбираться с исходниками примеров, которые к сожалению оказались не слишком очевидны. Тем не менее, все оказалось достаточно просто.
Итак, на палитре компонентов в пункте «Jv Validators» имеем три компонента:
- TJvValidators – фактически содержит список компонент типа TJvBaseValidator или их наследников;
- TJvValidationSummary — является коллекцией для сообщений об ошибках при неудачной валидации;
- TJvErrorIndicator — предоставляет пользовательский интерфейс для индикации ошибки в элементе управления.
Размещаем на форме компонент TJvValidators. Соответственно получаем JvValidators1. Далее на панели «Structure» на JvValidators1 нажимаем правой кнопкой и выбираем в появившемся меню пункт «JvValidators Items Editor...»:

В появившемся редакторе добавляем валидатор необходимого типа:

После этого уже можно работать с валидатором. Рассмотрим их подробнее. У валидаторов всех типов есть общие свойства:
- ControlToValidate - элемент управления, с которым ассоциируется валидатор;
- ErrorMessage - сообщение об ошибке;
- PropertyToValidate - свойство элемента управления, подлежащее валидации;
- Valid - результат валидации.
Required Field Validator используется для проверки наличия значения какого-либо свойства у элемента управления (например, у компонента TEdit можно проверить свойство Text, т.е. ввел пользователь что-нибудь или нет).
Regular Expression Validator используется для проверки соответствия значения какого-либо свойства элемента управления регулярному выражению (например, для вышеупомянутого TEdit можно проверить сответствует ли заданному регулярному выражению свойство Text, т.е. введенные пользователем данные). Регулярное выражение указывается в свойстве
ValidationExpression.
Range Validator используется для проверки вхождения значения какого-либо свойства элемента управления в заданный диапазон. Минимальное и максимальное значения диапазона указывается в свойствах
MinimumValue и
MaximumValue. Кроме этого, у этих свойств имеется свойство
Type, в котором указывается тип минимального и максимального значений диапазона. (Для компонента TUpDown можно проверить свойство Position.)
Custom Validator позволяет выполнить произвольную проверку какого-либо свойства элемента управления. Для этого необходимо реализовать обработчик события
OnValidate. Сигнатура обработчика выглядит следующим образом:
procedure JvCustomValidator1Validate(Sender: TObject; ValueToValidate: Variant; var Valid: Boolean);
В параметре
ValueToValidate содержится значение свойства элемента управления, указанное в свойстве
PropertyToValidate валидатора. Все необходимые проверки необходимо производить с этим параметром, и в случае успешного результата параметру
Valid необходимо присвоить значение True, в обратном случае — False.
Compare Validator позволяет сравнить значение какого-либо свойства элемента управления со значением, задаваемым с свойстве
ValueToCompare валидатора. Также в свойстве
Type можно указать тип этого значения. Свойство
Operator позволяет задать оператор, при помощи которого будет производиться сравнение (менее чем, менне или равно и т.д.).
Controls Compare Validator позволяет сравнивать значения какого-либо свойства двух элементов управления (видимо одинакового типа). Свойство элементов управления для сравнения задается в свойстве валидатора
PropertyToValidate, свойство
Operator аналогично описанному в предыдущем пункте. Второй элемент управления задается в свойстве валидатора
CompareToControl.
Продолжение в
следующем посте.