Иллюстрированный самоучитель по Tirbo Pascal

Контроль текстового ввода


Как уже говорилось, основное назначение объектов-контролеров состоит в контроле текстовой информации, вводимой пользователем с помощью объектов TInputLine или их специализированных потомков. Для упрощения подключения контролера в объекте TInputLine предусмотрен специальный метод SetValidator, единственным параметром обращения к которому является ссылка на экземпляр объекта-контролера. Таким образом, подключение контролера осуществляется в два этапа: вначале инициируется экземпляр объекта-контролера, а затем вызывается метод TInputLine.SetValidator для объекта, осуществляющего ввод данных. Например:

var

InpLine: PInputLine;

Validator: PRangeValidator; 

begin

{Создаем строку ввода}

InpLine := New(PInputLine,Init(...));

{Создаем объект-контролер} 

Validator := New(PRangeValidator,Init(0,10));

{Связываем контролер с редактором} 

InpLineA.SetValidator(Validator) ;

.....

end;

Можно объединить оба действия в одном операторе:

InpLine^.SetValidator(New(PRangeValidator,Init(0,10))

При работе совместно с объектом TInputLine контролер может активно воздействовать на ввод пользователя. Это относится к объектам TFilterValidator и TPXPicture-Validator: они контролируют ввод каждого символа и игнорируют нажатие пользователем клавиши, если очередной символ не соответствует требуемому. Объект TPXPictureValidator, кроме того, способен автоматически дополнять ввод пользователя неспециальными символами шаблона. Если, например, шаблон задан следующим образом:

InpLine^.SetValidator(New(PPXPictureValidator, Init('#/#/#',True)))

то нажатие пользователем любых клавиш, кроме цифровых, будет игнорироваться, а сразу после нажатия первой (второй) цифровой клавиши в строке ввода появится символ «/». Вставкой неспециальных символов шаблона управляет второй параметр обращения к методу TPXPictureValidator.Init (True - разрешить вставку, False - запретить).



Содержание раздела