II. Практическая часть

Begin

Begin

Удаление записей

Удаление текущей записи выполняет метод Delete, который работает только с модифицируемым НД. В случае успешного удаления записи текущей становится следующая запись, если же удалялась последняя запись, то курсор перемещается на предыдущую запись, которая после удаления становится последней.

При удалении записи генерируются события BeforeDelete и AfterDelete.

Если при удалении записи требуется подтверждение удаления, то можно написать следующий обработчик события OnClick для кнопки Button «Удалить запись»:

 

procedure TForm1.Button1Click(Sender: TObject);

if MessageDlg ('Удалить запись?',

mtConfirmation, [mbYes, mbNo], 0) = mrYes then

Table1.Delete;

end;

Удаление нескольких последовательно расположенных записей имеет особенность, связанную с тем, что при вызове метода Delete в цикле по перебору удаляемых записей не нужно вызывать методы, перемещающие указатель текущей записи. после удаления текущей записи указатель автоматически перемещается на соседнюю (обычно следующую) запись. Так можно удалить все записи НД:

 

procedure TForm1.Button1Click(Sender: TObject);

var n:longint;

 

Table1.Last;

For n:= Table1.RecordCountdownto1doTable1.Delete;

end;

В примере перебор записей выполняется с конца НД. После удаления текущей записи указатель снова оказывается на последней записи.

 

Перед удалением записи часто предварительно выполняется поиск записи, удовлетворяющей заданным условиям. Для отбора группы удаляемых записей используется фильтрация. Метод Delete позволяет удалить записи, видимые в НД. Поэтому с помощью фильтрации можно временно оставить в НД записи, которые подлежат удалению, а после удаления фильтрацию отключить.

Создадим приложение для добавления, вставки, удаления записей таблицы Chitateli.db. В программе предусмотреть блокировку изменения записей.

Расположите на форме компоненты в соответствии с рисунком:

 

 

Для блокировки редактирования НД используется компонент CheckBox1 «Редактирование НД запрещено». Если флажок компонента установлен, то в НД невозможно внести какие-либо изменения. Для компонента CheckBox1 напишите следующий обработчик события OnClick:

 

procedure Tform1.CheckBox1Click(Sender: TObject);