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

эти имена, работая с Редактором Полей. Конечно, вы можете изменить это имя на
любое другое. Обращение к объекту по имени не требует, в отличие от предыдущих
вариантов, ссылки на таблицу. Вы можете просто написать TablelDep и это будет
необходимый вам объект-

Автоматически создаваемые объекты имени не имеют — их свойство Name пу-
сто. Поэтому для них обращение по имени невозможно.

Среди рассмотренных способов доступа к полям наиболее быстрым, конечно,
является доступ по имени объекта. Его недостатком является жесткая кодировка
поля, к которому производится обращение. Если надо, чтобы строка кода в разных
ситуациях обращалась к разным полям, то надо использовать или доступ по ин-
дексу Fields[i] (тогда индекс i можно сделать переменным), или по имени поля ме-
тодом FieldByName(s) (s можно сделать переменной).

Вы уже видели множество свойств объектов класса TField и производных от
них классов. Это свойства Readonly, DispIayLabel, CustomConstraint и многие
другие. Сейчас рассмотрим, как добраться до главного свойства объекта — храня-
щегося в нем значения поля текущей записи.

Значение поля хранится в свойстве Value. Тип этого свойства — Variant, т.е
тип определяется типом поля. Например, Tablel->FieldByName("Fam")-> Va-
lue — это строка, a Tablel->FieldByName("Year_b")->Value — это целое число.

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

EDep->Text = Tablel->FieldByName("Dep")->AsString;

EYear->Text = Tablel->FieldByName("Year_b")->AsString;

ESex->Text = Tablel->FieldByName("Sex")->AsString;

и в окна редактирования EDep, EYear и ESex будут занесены в текстовом виде зна-
чения в текущей записи полей Dep, Year_b и Sex, хотя поле Dep имеет тип строки,
поле Year_b — целое значение, а поле Sex — булево. Если для поля Sex вы не зада-
вали значений Display Values, то в окне редактирования ESex будут отображены
значения «true» или «false». Если же вы задали значения свойства DisplayValues,
например «м;ж» или «мужск;женск», то отобразятся именно эти заданные значения.

То же свойство AsString работает и как обратное преобразование типов. Про-
должая предыдущий пример вы можете после того, как пользователь отредактиро-
вал значения в полях редактирования EDep, EYear и ESex, внести эти значения в
текущую запись, например, следующим кодом:

Tabiel->Edit() ;

Tablel->FieldB.yName("Dep")->AsString = EDep->Text;

Tablel->FieldByName("Year_b")->AsString = EYear->Text;

Tablel->FieldByName("Sex")->AsString = ESex->Text;

Tablel->Post () ;

Для полей Year_b и Sex текст будет преобразован соответственно в целое и бу-
лево значение. При этом не обязательно, чтобы пользователь в окне ESex писал
полностью обозначение пола сотрудника. Ему достаточно написать только первую
букву: «t» или <<f», если отображаемые значения true и false, и «м» или «ж», если
отображаемые значения «мужск» и «женск».

Описанный выше способ, заключающийся в использовании для ввода и ото-
бражения данных компонентов (в этом примере — Edit), не связанных непосредст-
венно с данными, — один из наиболее надежных для редактирования записи в
базе данных. Прежде, чем вносить отредактированные данные в таблицу, вы мо-
жете их всесторонне проверить, запросить у пользователя подтверждение записи и
только после этого заносить изменения в базу данных. При этом вы в процессе ре-
дактирования и проверки не связаны ни с какими событиями и состояниями базы
данных.