Я разрабатываю компонент DataAware и выполняю некоторый код после открытия базы данных.Обнаружение события компонента в Delphi
Это код, у меня есть на данный момент:
TMyDataAwareComponent = class(TDataAwareComponent)
private
{ Private declarations }
procedure ToBeExecutedOnAfterOpen(DataSet: TDataSet);
protected
{ Protected declarations }
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
end;
constructor TMyDataAwareComponent.Create(AOwner: TComponent);
begin
inherited;
if Assigned(Self.DataSource) then
begin
Self.DataSource.DataSet.AfterOpen := ToBeExecutedOnAfterOpen;
end;
end;
procedure TMyDataAwareComponent.ToBeExecutedOnAfterOpen(DataSet: TDataSet);
var
i: Integer;
begin
// Do something here
end;
код работает правильно, но событие AfterOpen набора данных, связанного с компонентом не уволили больше. Как я могу убедиться, что событие AfterOpen запущено сначала в наборе данных, а затем в моем компоненте?
Есть ли решение, действующее для всех событий в наборах данных (BeforeOpen, AfterOpen, BeforeCancel, BeforeDelete, AfterCancel, AfterDelete, ... и т. Д.)?
* Код работает правильно, но событие AfterOpen набора данных, связанного с компонентом не уволили больше. * Вы угнали его! –
Написание компонентов, относящихся к данным, относится к уже завершенному разработчикам Delphi. Для редактора одного поля смотрите 'TDBEdit' и его поле' FDataLink'; для grid-подобных компонентов также смотрите поле «TDBGrid» и его поле «FDataLink». – Abelisto
Вам необходимо проверить, что Self.DataSource.DataSet также назначен, fwiw. – MartynA