Как заставить произвольный компонент реагировать на изменения в TDataSource
Автор: Nomadic
type
TMyForm = class(TForm)
{...}
Table1: TTable;
DataSource1: TDataSource;
private
FDL: TFieldDataLink;
procedure RecChange(Sender: TObject);
public
{...}
end;
procedure TMyForm.FormCreate(Sender: TObject);
begin
FDL := TFieldDataLink.Create;
FDL.OnDataChange := RecChange;
FDL.DataSource := DataSource1;
FDL.FieldName := 'MyFieldName';
end;
procedure TTabEditDlg.FormDestroy(Sender: TObject);
begin
FDL.Free;
end;
procedure TTabEditDlg.MasterChange(Sender: TObject);
begin
{... тут pеагиpуй на изменения ...}
end;
|
За отслеживание различных событий, происходящих с TDataSource, в
иерархии VCL отвечает класс TDataLink. TFieldDataLink - наследник,
который выполняет маскирование событий, не относящихся к конкретному столбцу
набора данных.
Если надо отслеживать изменения в любом столбце набора, используйте
TDataLink. Если необходимо отслеживать события для некоторого
подмножества строк набора данных, посмотрите на реализацию TGridDataLink.
|