32 Урока Borland Delphi



              

Урок 19 - часть 19


procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);

begin

if DataSource1.DataSet.State = dsBrowse then begin

DoSomething;

end;

end;

Событие OnStateChange событие происходит всякий раз, когда изменяется текущее состояние DataSet. DataSet всегда знает, в каком состоянии он находится. Если Вы вызываете Edit, Append или Insert, то TTable знает, что он теперь находится в режиме редактирования (dsEdit или dsInsert). Аналогично, после того, как Вы делаете Post, то TTable знает что данные больше не редактируется, и переключается обратно в режим просмотра (dsBrowse).

Dataset имеет шесть различных возможных состояний, каждое из которых включено в следующем перечисляемом типе:

TDataSetState = (dsInactive, dsBrowse, dsEdit, dsInsert,

dsSetKey, dsCalcFields);

В течение обычного сеанса работы, БД часто меняет свое состояние между Browse, Edit, Insert и другими режимами. Если Вы хотите отслеживать эти изменения, то Вы можете реагировать на них написав примерно такой код:

procedure TForm1.DataSource1StateChange(Sender: TObject);

var

S: String;

begin

case Table1.State of

dsInactive: S := 'Inactive';

dsBrowse: S := 'Browse';

dsEdit: S := 'Edit';

dsInsert: S := 'Insert';

dsSetKey: S := 'SetKey';

dsCalcFields: S := 'CalcFields';

end;

Label1.Caption := S;

end;

OnUpdateData событие происходит перед тем, как данные в текущей записи будут обновлены. Например, OnUpdateEvent будет происходить между вызовом Post и фактическим обновлением информации на диске.

События, генерируемые TDataSource могут быть очень полезны. Иллюстрацией этого служит следующий пример. Эта программа работает с таблицей COUNTRY, и включает TTable, TDataSource, пять TEdit, шесть TLlabel, восемь кнопок и панель. Действительное расположение элементов показано на рис.11. Обратите внимание, что шестой TLabel расположен на панели внизу главной формы.
 
 

Рис.11: Программа STATE показывает, как отслеживать текущее состояние таблицы.

Для всех кнопок напишите обработчики, вроде:

procedure TForm1.FirstClick(Sender: TObject);




Содержание  Назад  Вперед