538___________________________________________Глава 91

Теперь перейдем к рассмотрению правой части окна приложения. Ее занимает !
двухстраничный компонент PageControll класса TPageControI. Страница Отбор !
представлена на рис. 9.48. Фильтрация данных в несколько другом варианте уже '
была рассмотрена в разделе 9.5.5, где вы и можете посмотреть, как она осущест"
ляется. Окно Editi быстрого поиска фамилии имеет обработчик события OnChan
ge вида:

if (CBdep->Text == "все отделы")

Tabie2->FindNearest(bTVarRec(Editl->Text),0) ;

else
{
TLocateOptions SearchOptions;

Variant locvalues[] = (CBdep->Text, Editl->Text};

Table2->Locate("Dep;Fam", VarArrayOf(locvalues,1),

S ea r chOpt i ons« 1 о Par tialKey«loCase Insensitive) ;

}

Рассмотрим теперь вторую страницу компонента PageControll — страницу
Правка, представленную на рис. 9.49. Эта страница предназначена для редактиро-
вания текущей записи. В настоящем приложении такая страница, конечно, дол-
жна открываться только если пользователь сообщил пароль, допускающий его к
редактированию базы данных.

На этой странице пользователь может изменить значения полей текущей за-
писи, например, перевести сотрудника из одного отдела в другой (именно этот мо-
мент изображен на рисунке). Щелкнув на кнопке Больше... он может посмотреть и
изменить характеристику сотрудника. Изменение фиксируется программой по
значению свойства Modified компонента DBMemol, расположенного на дополни-
тельной форме (см. рис. 9.40), вызываемой этой кнопкой. На той же дополнитель-
ной форме пользователь может изменить фотографию сотрудника, занеся изобра-
жение из файла с этой фотографией в буфер Clipboard, а затем щелкнув на окне фо-
тографии DBImagel и скопировав файл из Clipboard быстрыми клавишами Ctr
Факт того, что пользователь изменил фотографию фиксируется по событию ОпС-
lick окна, содержащего ее изображение. Для этого в коде предусмотрена перемен-
ная ChangePhoto, которая при щелчке на фотографии устанавливается в true.

Все окна и другие компоненты отображения данных на странице Правка —
обычные компоненты, не связанные с данными. Т.е. используются, например,
компоненты Edit, а не DBEdit. Это позволяет развязать процесс редактирования
информации и процесс пересылки ее в базу данных. В таблице TPers в левой части
окна приложения задано в свойстве Options подсвойство dgEditing = false, что не
дает возможности пользователю непосредственно редактировать данные в таблице.

В компоненты страницы Правка заносятся значения полей таблицы ТаЫе2 с по-
мощью размещенного в обработчике события OnAfterScroll компонента ТаЫе2 кода:

if (PageControll->ActivePage == TabEdit)
(

RGF->ItemIndex = 0;

CBEDep->ItemIndex = CBEDep->Items->IndexOf(Table2Dep->AsString) ;

EFam->Text = Table2Fam->AsString;

ENam->Text = Table2Nam->AsString;

EPar->Text = Table2Par->AsString;

SEYear->Value = Table2Year_b->AsInteger;

if (Table2Sex->AsBoolean)
RGSex->ItemIndex = 0;

else RGSex->ItemIndex = 1;

}

В этом коде следует обратить внимание на оператор

CBEDep->ItemIndex =• CBEDep->Items->IndexOf(Table2Dep->AsString);