Форум: "Компоненты";
Текущий архив: 2008.01.13;
Скачать: [xml.tar.bz2];
ВнизУдаление ссылок на связанный компонент при удалении оного Найти похожие ветки
← →
OMGovdan © (2006-11-29 20:54) [0]Здравствуйте, знатоки!
Подскажите пожалуйста, каким образом обрабатывать удаление связанного компонента, чтобы у основного не оставались битые ссылки? Если можно. с примером кода...
Заранее благодарен за помощь
← →
Юрий Зотов © (2006-11-29 21:52) [1]
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;
← →
Юрий Зотов © (2006-11-29 22:04) [2]Дополнение: если можно быть уверенным, что оба компонента всегда имеют общего Owner"а, то метод Set не нужен, достаточно только Notification.
Подробности см. в справке по TComponent (Notification, FreeNotification, RemoveFreeNotification).
← →
OMGovdan © (2006-11-29 22:47) [3]Спасибо большое. Пример очень помог. Уже все работает.
Страницы: 1 вся ветка
Форум: "Компоненты";
Текущий архив: 2008.01.13;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c