Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Ограничения вводимых значений




Несколько возможноcтей ограничений вводимых значений предоставляют свойства полей:

Ø Для числовых полей имеются свойства MinValue и Maxvalue. При нарушении этих пределов будет генерироваться исключение EDatabaseError, которое лучше перехватывать в приложении, чтобы выдавать пользователю сообщение на русском языке. например, если требуется принимать на работу сотрудников от 20 до 30 лет, можно установить для поля Year_b ограничения MinValue =1970 и Maxvalue =1980.

Ø Можно использовать свойства CustomConstraint, которое позволяет написать ограничение на значение поля в виде строки SQL, например: (Year_b>1970) and (Year_b<1980). Свойство ConstraintErrorMessage содержит строку текста, который будет показан пользователю в случае, если он вводит данные, не удовлетворяющие поставленным ограничениям, например: «Возраст претендента на должность не подходит». Это свойство подходит не только к числовым полям.

Ø Можно использовать обработку события поля onValidate. Это событие возникает перед записью введенного значения поля в буфер записи. Тут можно предусмотреть любые проверки, при появлении недопустимых значений выдать пользователю сообщение.

Если все нормально, то после события onValidate возникает еще событие onСhange, в обработчике которого тоже еще не поздно сгенерировать исключение.

Есть возможность осуществлять проверку на уровне записи, анализируя различные ее поля. Для этого используется свойство Constraints компонента Table. При выборе этого свойства в Инспекторе объектов открывается окно, в котором, щелкая на кнопке Add можно занести набор ограничений, каждое из которых является самостоятельным объектом со свойствами CustomConstraint (строка SQL, определяющая допустимые ограничения) и ErorMessage (строка текста, которая будет представлена пользователю в случае нарушения ограничений). Например: «Принимаем только мужчин > 1955 г.р. и женщин > 1965 г.р.».

Вычисляемые поля

Создадим вычисляемое поле, значение которого вычисляется на основании значений других полей записи. Например, поле, вычисляющее возраст сотрудника по году его рождения:

Ø Вызвать Редактор полей двойным щелчком на Table1. Из контекстного меню Редактора полей выбрать раздел New. Появится окно добавления нового поля в разделе Field Properties (свойства поля) нужно указать:

_ имя поля (Name) – назовем его Age

 

_ тип данных (Type) – Smallint;

 

_ и для некоторых типов (например, для строк) – размер (Size).

 

Ø В группе радиокнопок Field Type выбрать Calculated.

 

Ø Нажать на кнопку OK и вернуться в окно Редактора полей, там появится новое поле Age. Изменить для этого поля в Инспекторе объектов значение DisplayLabel на «Возраст».

Ø Чтобы указать функцию вычислений надо выйти из Редактора полей, выделить Table1, перейти в Инспектор объектов и задать обработчик события OnCalcFields, которое наступает каждый раз, когда нада обновить значение вычисляемых полей таблицы. В этом обработчике можно использовать функцию DecodeDate для преобразования ее первого аргумента, имеющего тип TDateTime, в целые значения года, месяца и дня.

Следующий программный код можно использовать, чтобы отобразить текущие значения года, месяца, дня, часа, минуты, секунды, миллисекунды из функции Now, которая возвращает значение текущих даты и времени: Date + Time:

 

Фильтрация данных

Компонент Table позволяет также отфильтровывать данные по определенным критериям с использоваием свойств: Filter, Filtered, FilterOptions.

 

Свойство Filtered включает или выключает использование фильтра.

В свойстве Filter записывается сам фильтр в виде строки, содержащей ограничения на значения полей. Например, если свойство Filtered=true и в свойстве Filter записано:

Ø Dep=’Цех 1’, то в таблице отобразятся только те записи, в которых поле Dep имеет значение ’Цех 1’

Ø Dep=’Цех *’ – отображение всех записей, в которых значение поля Dep начинается с ’Цех’ (При этом опция foNoPartialCompare свойства FilterOptions должно быть false). Свойство FilterOptions содержит опции foNoPartialCompare (=true – запрещает частичное совпадение при сравнении) и foCaseInsentitive – делает сравнение строк нечувствительным к региситру (если включить эту опцию, то «Цех 1» и «цех 1» будут считаться идентичными).

Ø При записи условий можно использовать операции отношения =,>,>=,<,<=,<>, а также логические операции and, or, not. Фильтр:

(Dep=’Цех 1’) and (Year_b<=1970) and (Year_b>=1940)

отобразит сотрудников цеха 1, чей год рождения лежит в заданных пределах. Но использовать в фильтре имена вычисляемых полей (например, поля Age) не разрешается.

Добавим в приложение возможность фильтрации отображаемых записей по отделам, по возрасту и по обоим критериям:

 

Ø Перенесем на форму группу радиокнопок RadioGroup (Name=RGF). Зададим в редакторе свойству RGF->Items строки: Нет, Все, Отдел, Возраст. RGF->ItemIndex==1, RGF->Columns=2, RGF->Caption=Фильтрация

Ø Перенесем на форму выпадающий список ComboBox (Name=CBDep) для выбора подразделения, по которому производится фильтрация. В свойство CBDep->Items занести список имен подразделений.

Ø Два элемента SpinEdit со страницы Samples (Name=SEmin и SEmax) для задания диапазона возраста при фильтрации. Задать в этих компонентах соотвествующие значения MaxValue, MinValue, Value.

Ø Кнопку с заголовком «Обновить».

Ø Фильтрация в приложении должна проводиться при следующих событиях:

o щелчок в группе радиокнопок RGFClick (его текст приведен ниже, для остальных событий проводится делегирование),

o при событии OnChange выпадающего списка отделов

o щелчок на кнопке «Обновить» (при изменении диапазона возраста).

 





Поделиться с друзьями:


Дата добавления: 2016-10-06; Мы поможем в написании ваших работ!; просмотров: 480 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Что разум человека может постигнуть и во что он может поверить, того он способен достичь © Наполеон Хилл
==> читать все изречения...

4449 - | 4329 -


© 2015-2026 lektsii.org - Контакты - Последнее добавление

Ген: 0.009 с.