![](https://cv01.studmed.ru/view/f17038b5a82/bg32.png)
50
Автоматически создаваемые объекты имени не имеют — их свойство Name
пусто. Поэтому для них обращение по имени невозможно.
Среди рассмотренных способов доступа к полям наиболее быстрым, конечно,
является доступ по имени объекта. Его недостатком является жесткая кодировка
поля, к которому производится обращение. Если надо, чтобы строка кода в разных
ситуациях обращалась к разным полям, то надо использовать или доступ по индексу
Fields[i] (тогда индекс i можно сделать переменным), или по имени поля методом
FieldByName(s) (переменную s можно сделать переменной).
Вы уже видели множество свойств объектов класса TField и производных от
них. Это свойства Read-Only, DisplayLabel, CustomConstraint и многие другие.
Сейчас рассмотрим, как добраться до главного свойства объекта — хранящегося в
нем значения поля текущей записи.
Значение поля хранится в свойстве Value. Тип этого свойства определяется
типом поля. Например, Tablel.FieldByName('Fam').Value — это строка, 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 имеет тип
строки, поле Yearjb — целое значение, а поле Sex — булево. Если для поля Sex вы
не задавали значений DisplayValues, то в окне редактирования ESex будут
отображены
Значения «true» или «false». Если же вы задали значения свойства
DisplayValues, например «м; ж» или «мужск; женск», то отобразятся именно эти
заданные значения.
То же свойство AsString работает и как обратное преобразование типов.
Продолжая предыдущий пример вы можете после того, как пользователь
отредактировал значения в полях редактирования EDep, EYear и ESex, внести эти
значения в текущую запись, например, следующим кодом:
Tablel.Edit;
Tablel.FieldByName('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, и «м» или «ж», если отображаемые значения
«мужск» и «женск».