15
Любое перемещение по набору, находящемуся в состоянии dsEdit, ав-
томатически вызывает метод Post, который пересылает текущую запись, если
она была изменена, в базу данных. И после этого уже невозможно применить
метод Cancel для уничтожения изменений. Поэтому надо принимать меры,
чтобы в наборе данных, находящемся в состоянии dsEdit, перед любым пе-
ремещением происходила проверка правильности данных, или перемещаться
по набору в каком-то другом состоянии (например, в dsBrowse).
При перемещениях можно совершить ошибку, выйдя за пределы
имеющихся записей. Например, если вы находитесь на первой записи и вы-
полняете метод Prior, то вы выйдете за начало таблицы, а если вы находи-
тесь на последней записи и выполняете метод Next, то вы окажетесь после
последней записи. Чтобы контролировать начало и конец таблицы, сущест-
вуют два свойства: EOF (end-of-file) — конец данных, и BOF (beginning of
file) — начало данных. Эти свойства становятся равными true, если делается
попытка переместить курсор соответственно за пределы последней или пер-
вой записи, а также после выполнения методов соответственно Last и First.
Приведем пример. Пусть в вашем приложении имеется выпадающий
список с именем CBdep, который вы хотите заполнить данными, содержа-
щимися в полях Dep всех записей таблицы, соединенной с компонентом Tab-
lel. Это можно сделать следующим кодом:
CBdep.Clear;
Tablel.First;
while not Tablel.EOF do
begin
CBdep.Items.Add(Tablel.FieldByName{'dep').AsString);
Tablel.Next;
end;
Первый оператор кода очищает список CBdep. Второй — устанавлива-
ет курсор таблицы на первую запись. Далее следует цикл по всем записям,
пока не достигнута последняя, что проверяется выражением Tablel.EOF. Для
каждой записи в список заносится значение поля Dep, после чего методом
Next курсор перемещается на следующую запись.