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

Объекты-контролеры

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

В этой небольшой главе рассматривается имеющаяся в Turbo Vision группа объектов-контролеров, упрощающих решение подобного рода задач.

Типы объектов-контролеров

Объект-контролер обычно связывается со строкой ввода TInputLine и активизируется при выполнении метода TInputLine.Valid. Получив управление, контролер осуществляет необходимую проверку данных и блокирует завершение ввода, если обнаружена ошибка. В ObjectWindows входят пять объектов-контролеров, являющихся наследниками абстрактного объекта TValidator и отличающихся алгоритмом проверки данных.

TPXPictureValidator

Объект TPXPictureValidator проверяет введенную пользователем строку на соответствие некоторому шаблону ввода. Шаблон ввода определяется с помощью специальных символов, подобно тому, как задается допустимый ввод в базе данных Paradox корпорации Borland. В шаблоне можно использовать следующие специальные символы:

Символ Назначение
# Любая цифра
? Любая буква
@ Любой символ (буква, цифра или специальный символ)
& Любая буква с автоматическим преобразованием в верхний регистр
! Любой символ с автоматическим преобразованием букв в верхний регистр
* Повторение следующего символа произвольное число раз
; Следующий символ – не управляющий
[ ] Заключенная в скобки последовательность символов может отсутствовать
, Разделение вариантов
{ } Создание группы

Любой другой символ шаблона представляет сам себя, т.е. не является управляющим. Символ ";", предшествующий специальному символу, отменяет его специальное назначение. Чтобы в шаблон вставить собственно символ ";", его нужно удвоить.

Перечисленные символы позволяют формировать шаблоны любой сложности. Например:

  • ### – трехзначное число; примеры правильного ввода: 123, 566, 080; неправильный ввод: 12 (нет одной цифры), – 12 (первый символ – не цифра);
  • *# – число с произвольным количеством цифр; допустимый ввод: 1, 12, 12345678987654321; неправильный ввод:-12, 0334А;
  • [+,-]*# – произвольное целое число; допустимый ввод: +123, – 56, 7890; недопустимый ввод:+-123, 1.23, 12345Е+02;
  • {#[#]}-{#[#]}-{##[##]} – дата в формате ДД-ММ-ГТ; допустимый ввод: 1-2-33, 01-02-1933; недопустимый ввод: 1/2/33, 1 фев 33;
  • #;**# – число в диапазоне 0…9 умножается (символ *) на произвольное положительное целое число; правильный ввод: 2*2, 3*12345; неправильный ввод: 2/2, 123*12345.
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.