Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Удаление ссылок на связанный компонент при удалении оного [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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо