![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Наборы данных могут находиться в различных режимах. Текущий режим набора данных определяется свойством state типа TDataSetstate, которое доступно для чтения во время выполнения приложения. Для перевода набора данных в требуемый режим используются специальные методы. Они могут вызываться явно (указанием имени метода) или косвенно (путем управления соответствующими визуальными компонентами, например, навигатором DBNavigator ИЛИ сеткой DBGrid).
Выделим следующие основные режимы набора данных.
• dsinactive — неактивность; набор данных закрыт и доступ к его данным невозможен. В этот режим набор данных переходит после его закрытия, когда свойству Active установлено значение False.
• dsBrowse — осуществляется навигация по записям набора данных и просмотр данных. В этот режим набор данных переходит следующимобразом:
• из режима dsinactive — при установке свойству Active значения True;
• ИЗ режима dsEdit — При ВЫЗОВе методов Post ИЛИ Cancel;
• ИЗ режима dslnsert — при ВЫЗОВе Методов Post ИЛИ Cancel.
• dsEdit — редактирование текущей записи. В этот режим набор данных переходит из режима dsBrowse при вызове метода Edit.
• dsinsert — вставка новой записи. В данный режим набор данных переходит ИЗ режима dsBrowse при вызове методов Insert, InsertRecord, Append ИЛИ AppendRecord.
• dsCalcFields — расчет вычисляемых полей. Используется обработчиксобытия OnCalcFields.
• dsSetKey — поиск записи, удовлетворяющей заданному критерию. В этот режим набор данных переходит из режима dsBrowse при вызове методов SetKey, SetRangeXXX, FindKey, GotoKey, FindNearestИЛИ GotoNearest. Возможен только для компонента ттаЫе, так как для ком понента Query отбор записей осуществляется средствами языка SQL.
• dsFiiter — фильтрация записей. В этот режим набор данных автоматически переходит из режима dsBrowse каждый раз, когда выполняется обработчик события onFiiterRecord. В режиме блокируются все попытки изменения записей. После завершения работы обработчика события OnFiiterRecord набор данных автоматически переводится в режим dsBrowse.
Взаимосвязи между основными режимами наборов данных показаны на рис. 14, где приведены также некоторые методы и свойства, с помощью которых набор данных переходит из одного режима в другой.
Иногда при описании операций, выполняемых с записями набора данных, под режимом редактирования подразумевается не только режим dsEdit изменения полей текущей записи, но и режим dsinsert вставки новой записи. Тем самым режим редактирования понимается в широком смысле слова как режим модификации набора данных.
При выполнении программы определить режим набора данных можно с помощью одноименных свойств state типа TDataSetstate самого набора данных и связанного с ним источника данных DataSource. При изменении режима набора данных для источника данных DataSource генерируется событие OnStateChange типа TNotifyEvent.
Пример. Анализ режима набора данных.
procedure TForml.DataSourcelStateChange(Sender: TObject);
begin
case DataSourcel.State of
dslnactive: Labell.Caption:= 'Наборданныхзакрыт';
dsBrowse: Labell.Caption:=
'Просмотрнабораданных';
dsEdit: Labell.Caption:=
'Редактирование набора данных';
dsinsert: Labell.Caption:=
'Вставка записи в набор данных'
else Label1.Caption:=
' Режим набора данных не определен';
end;
end;
Здесь определяется режим набора данных, связанного с источником данных Datasourcei, и информация об этом режиме выводится в надписи Label1. При этом используется cвойство state источника данных. Код, выполняющий анализ режима, помещен в обработчик события onstateChange компонента DataSourcel.
Дата публикования: 2015-02-18; Прочитано: 561 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!