![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как корректно уничтожить из дестрактора компоненты ScrollBar
Aleksandr © (2001-12-21 14:33:00)Компонента имеет ScrollBar, создающийся при ее создании:
constructor TWayTree.Create(AOwner : TComponent);
begin
Inherited;
FScrollBar:=TScrollBar.Create(AOwner);
FScrollBar.Parent:=Parent;
FScrollBar.OnScroll:=FWayTreeScroll;
...
end;
Parent ScrollBar"у я назначаю, чтобы он не мигал и не дергался при перерисовке компоненты (и вообще ей жить не мешал). То есть фактически он не принадлежит компоненте, просто скроллирует ее.
Все прекрасно, но при вызове дестрактора компоненты в этом месте:
if Assigned(FScrollBar) then
FScrollBar.Free
появляется Access Violation at 00000000...
Чего я не так делаю?
Alx2 (2001-12-21 14:46:00) [21]Вдогонку: в конструктор скроллу попробую передавать себя (т.е TWay).
Alx2 (2001-12-21 14:44:00) [22]Вот-вот...
Тогда просто его не грохай. Это сделает Owner, когда помирать будет (или Parent? - не помню. Но ведь позаботился кто-то уже?).
Aleksandr (2001-12-21 14:41:00) [23]Не знаю... Только если этот самый Parent раньше не вышибает СкроллБар, а уж потом компоненту... Только как проверить, если Assigned всего лишь сверяет с nil?
Alx2 (2001-12-21 14:39:00) [24]Может, его кто-то уже перед этим прибил?