Валидация с помощью JvValidators
У компонента JvValidators реализуем обработчик события OnValidateFailed. Обработчик предназначен для вывода сообщений об ошибке и может выглядеть так:
RichEdit1.Lines.Add(Format('%s',[BaseValidator.ErrorMessage]));
Естественно, вместо RichEdit можно взять любой другой компонент.Валидация осуществляется с помощью следующего кода:
JvValidators1.Validate;Валидация с помощью
JvValidationSummaryРазмещаем на форме компонент TJvValidationSummary и получаем JvValidationSummary1. У компонента JvValidators1 устанавливаем свойство ValidationSummary в значение JvValidationSummary1 и реализуем обработчик события OnChange. Обработчик предназначен для вывода сообщений об ошибке и может выглядеть так:
RichEdit1.Lines.Text :=
TJvValidationSummary(Sender).Summaries.Text;Валидация
осуществляется с помощью следующего кода:JvValidationSummary1.Summaries.Clear;
JvValidators1.Validate;Валидация с помощью JvErrorIndicatorРазмещаем на форме компонент TJvErrorIndicator и получаем JvErrorIndicator1. У компонента JvValidators1 устанавливаем свойство ErrorIndicator в значение JvErrorIndicator1. Валидацию можно осуществить с помощью следующего кода:
JvErrorIndicator1.BeginUpdate;
try
JvErrorIndicator1.ClearErrors;
JvValidators1.Validate;
finally
JvErrorIndicator1.EndUpdate;
end;
Рядом с элементами управления, не прошедших валидацию, появится предупреждающая иконка:
За
ее появление отвечает компонент JvErrorIndicator.При необходимости сообщение об ошибке можно куда-нибудь вывести, но при большом количестве валидаторов удобно реализовать метод, который облегчит нам работу. Сигнатура метода следующая:
procedure ProviderErrorValidateFailed(Sender: TObject; BaseValidator: TJvBaseValidator; var Continue: Boolean);
Код метода может выглядеть например так:JvErrorIndicator1.Error[BaseValidator.ControlToValidate]:= BaseValidator.ErrorMessage;
RichEdit1.Lines.Add(Format('%s', [BaseValidator.ErrorMessage]));
Надеюсь, чта это информация кому-нибудь пригодится :)
Спасибо!
ОтветитьУдалитьВсе отлично но с DB компонентами не работает.
ОтветитьУдалитьПример
Есть TJvDBDateEdit компонент у него есть свойство DATE при подключении этого компонента через Required Field Validator он не показывает это свойство в PropertyToValidate.
Если пробовать через Custom Validator
то в обработчике OnValidate параметр ValueToValidate всегда NULL даже если насильно написать в PropertyToValidate = DATE.
Или что-то не так понял
К сожалению, в настоящее время не работаю с Delphi, поэтому проверить это и что-то посоветовать не могу.
ОтветитьУдалитьжаль. А так компонент мне понравился очень хорошая вещь для изготовления Wizard
ОтветитьУдалитьСейчас Придется выкручиваться, потом надо будет залезть внутрь