Есть подозрение, что (Self.Collection as TTables).GetOwner у тебя не является объектом типа TAvgClassifierForm. В этом случае на строчке:| Код | NC:=TAvgClassifierForm((Self.Collection as TTables).GetOwner);
|
AV может не появиться, но и соответственно TAvgClassifierForm.Notification не сработает.
Цитата(Beltar @ 27.12.2006, 21:08 ) | | Проблема в том, что при удалении таблицы Notification не вызывается, таблица остается на месте и при попытке обращения AV. Что не так? |
Таблица уничтожается, но поскольку TAvgClassifierForm.Notification не сработал и соответственно из коллекции элемент, ссылающийся на уничтоженную таблицу не был удален, то при обращении к этому элементу и получается AV.
Может тебе пример и не нужен, но вот простой вариант, в котором Notification срабатывает: | Код | type TForm1 = class(TForm) Button3: TButton; ADOTable1: TADOTable; Memo1: TMemo; procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } procedure Notification(AComponent: TComponent; Operation: TOperation); override; end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button3Click(Sender: TObject); begin ADOTable1.FreeNotification(Form1); ADOTable1.Free; end;
procedure TForm1.Notification(AComponent: TComponent; Operation: TOperation); begin inherited; if Operation = opRemove then Memo1.Lines.Add(AComponent.Name); end;
end.
|
|