Приложения для работы с локальными базами данных_______________509

Оер='Цех Г

установить свойство Filtered в true, и увидите, что уже в процессе проектирования
в таблице отобразятся только те записи, в которых поле Dep имеет значение «Цех
1». Обратите внимание на то, что в условии фильтрации строки заключаются в оди-
нарные, а не в двойные кавычки.

В условиях сравнения строк можно использовать символ звездочки «*», кото-
рый как и в обычных шаблонах означает: «любое количество любых символов».
Например, фильтр

Оер='Цех*'

приведет к отображению всех записей, в которых значение поля Dep начинается с
«Цех». В нашем примере будут отображены записи, относящиеся к первому и вто-
рому цехам. Но для того, чтобы это сработало, надо, чтобы в опциях, содержащих-
ся в свойстве FilterOptions была выключена опция foNoPartialCompare, запреща-
ющая частичное совпадение при сравнении (эта опция выключена по умолчанию).
Другая опция в свойстве FilterOptions — foCaseInsensitive делает сравнение строк
нечувствительным к регистру, в котором записано условие фильтра. Если вклю-
чить эту опцию, то слова «Цех 1» и «цех 1» будут считаться идентичными.

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

(Оер='Цех Г)and(Year_b<=1970)and(Year_b>=1940)

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

Конечно, свойства, определяющие фильтрацию, можно задавать не только в
процессе проектирования, но и программно, во время выполнения. Давайте введем
гакую возможность в наше приложение. Установите в компоненте DBGridI свой-
ство Align равным aINone, увеличьте вертикальный размер формы и перенесите
на форму группу радиокнопок RadioGroup (назовите ее RGF), выпадающий спи-
сок ComboBox (назовите его CBDep), два элемента SpinEdit со страницы Samples
(назовите их SEmin и SEmax), кнопку, написав на ней «Обновить» и метки, разме-
стив все это примерно так, как показано на рис. 9.34.

Компонент CBDep будет позволять выбрать подразделение, по которому про-
водится фильтрация. В его свойство Items занесите список имен подразделений в
таблице. Компоненты SEmin и SEmax будут служить для задания диапазона воз-
раста при фильтрации по этому критерию. Задайте в них разумные значения
свойств MaxValue, Min Value и Value. В группе радиокнопок RGF введите соот-
ветствующие надписи (в свойствах Items и Caption), показанные на рис. 9.34, за-

Рис. 9.34

Приложение с возможностью фильтрации
записей