Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 7.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.04 Mб
Скачать

If not CheckBoxl.Checked then Abort;

end;

Если переключатель CheckBoxl, управляющий возможностью открытия набора данных, не установлен, то открытие набора данных Table1 блокируется. Для этого с помощью вызова процедуры Abort генерируется "тихая" исключительная ситуация. В результате операции, связанные с открытием набора данных, отме­няются, а пользователю не выдается никаких сообщений об ошибках. В подоб­ных случаях выдача предупреждающих сообщений должна обеспечиваться про­граммистом, как это реализуется, например, в приводимой ниже процедуре:

procedure TForml.TablelBeforeOpen(DataSet: TDataSet);

begin

If not CheckBoxl.Checked then begin

MessageDlg('Данные таблицы '+ Tablel.TableName+' недоступны!',

mtError, [mbOK], 0);

Abort;

end;

end;

Событие AfterOpen генерируется сразу после открытия набора данных. Это со­бытие можно использовать, например, для выдачи пользователю сообщения о возможности работы с данными.

В примере демонстрируется открытие набора данных с выдачей соответствую­щего сообщения:

procedure TForml.TablelAfterOpen(DataSet: TDataSet);

begin

If CheckBox2.Checked then

MessageDlg('Данные таблицы '+Tablel.TableName+ ' доступны для работы.',

mtWarning, [mbOK], 0);

end;

Если переключатель CheckBox2, управляющий возможностью выдачи сообще­ний, включен, то при открытии набора данных Tablel пользователю выдается сообщение.

Как уже говорилось, при закрытии набора данных возникают события BeforeClose и AfterClose. Они так же, как и события BeforeOpen и AfterOpen, имеют тип TDataSetNotifyEvent.

Отметим, что закрытие набора данных автоматически не сохраняет текущую запись, т. е. если набор данных при закрытии находился в режимах редактиро­вания или вставки, то произведенные изменения данных в текущей записи бу­дут потеряны. Поэтому перед закрытием набора данных нужно проверять его режим и при необходимости принудительно вызывать метод Post, сохраняющий сделанные изменения. Одним из вариантов сохранения изменений является вы­зов метода Post в обработчике события BeforeClose, возникающего непосредст­венно перед закрытием набора данных.

Рассмотрим следующий пример:

procedure TForml.TablelBeforeClose(DataSet: TDataSet);

begin

if (Tablel.State = dsEdit) or (Tablel.State = dsInsert) then Tablel.Post;

end;

Если набор данных Tablel находится в режиме редактирования или вставки, то перед его закрытием внесенные изменения сохраняются.

Замечание

При закрытии приложения событие Beforeciose не генерируется, и несохра-ненные изменения теряются.

Событие Afterciose возникает сразу после закрытия набора данных, и его мож­но использовать для вьщачи пользователю соответствующих сообщений, как это сделано в приведенной ниже процедуре:

procedure TForml.TablelAfterClose(DataSet: TDataSet);

begin

If CheckBox2.Checked then begin

Beep;

MessageDlg('Таблица '+Tablel.TableName+' закрыта.', mtWarning, [mbOK], 0);

end; , ;

end;

Если включен переключатель CheckBox2, управляющий режимом выдачи сооб­щений, то после закрытия набора данных Tablel выдается сообщение о закры­тии таблицы, связанной с этим набором данных.

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