Валидация с помощью 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;Валидация с помощью JvErrorIndicator
JvValidators1.Validate;
Размещаем на форме компонент TJvErrorIndicator и получаем JvErrorIndicator1. У компонента JvValidators1 устанавливаем свойство ErrorIndicator в значение JvErrorIndicator1. Валидацию можно осуществить с помощью следующего кода:
JvErrorIndicator1.BeginUpdate;Рядом с элементами управления, не прошедших валидацию, появится предупреждающая иконка:
try
JvErrorIndicator1.ClearErrors;
JvValidators1.Validate;
finally
JvErrorIndicator1.EndUpdate;
end;

При необходимости сообщение об ошибке можно куда-нибудь вывести, но при большом количестве валидаторов удобно реализовать метод, который облегчит нам работу. Сигнатура метода следующая:
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
ОтветитьУдалитьСейчас Придется выкручиваться, потом надо будет залезть внутрь