![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Удаление ссылок на связанный компонент при удалении оного [D7, Win2k, WinXP]
OMGovdan © (2006-11-29 20:54:00)Здравствуйте, знатоки!
Подскажите пожалуйста, каким образом обрабатывать удаление связанного компонента, чтобы у основного не оставались битые ссылки? Если можно. с примером кода...
Заранее благодарен за помощь
OMGovdan (2006-11-29 22:47:00) [1]Спасибо большое. Пример очень помог. Уже все работает.
Юрий Зотов (2006-11-29 22:04:00) [2]Дополнение: если можно быть уверенным, что оба компонента всегда имеют общего Owner'а, то метод Set не нужен, достаточно только Notification.
Подробности см. в справке по TComponent (Notification, FreeNotification, RemoveFreeNotification).
Юрий Зотов (2006-11-29 21:52:00) [3]
type
TLink = class;
TOwner = class (...) // Обязательно потомок TComponent
private
FLink: TLink;
procedure SetLink(Value: TLink);
protected
procedure Notification (...); override;
...
end;
TLink = class (...) // Обязательно потомок TComponent
...
end;
procedure TOwner.SetLink(Value: TLink);
begin
if Value <> FLink then
begin
if FLink <> nil then
RemoveFreeNotification(FLink);
FLink := Value;
if FLink <> nil then
FreeNotification(FLink)
end
end;
procedure TOwner.Notification (...); override;
begin
inherited;
if (Operation = opRemove) and (AComponent = FLink) then
FLink := nil
end;