Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.31;
Скачать: CL | DM;

Вниз

Потомок от TObject и от TComponent   Найти похожие ветки 

 
3APA3A ©   (2003-07-17 12:04) [0]

Суть такова: У них разные конструкторы (да и не только конструкторы). У TComponent ...Create(Owner:TComponent).Что дает вот этот самый Owner?


 
Skier ©   (2003-07-17 12:05) [1]


> Что дает вот этот самый Owner?

Раболепие.


 
Юрий Федоров ©   (2003-07-17 12:07) [2]

При разрушении Owner"а будет разрушен и компонент.
Впрочем его можно разрушать и самому - он будет удален из списка в Owner"е


 
3APA3A ©   (2003-07-17 12:11) [3]

То есть, когда быдет вызван деструктор Owner"а, он сначала вызовет деструкторы всех "подчиненных", а потом выполнит свой код?


 
Skier ©   (2003-07-17 12:13) [4]

>3APA3A © (17.07.03 12:11)
Он прибъёт (вызовет им деструктор) те компоненты, которые находятся у него в св-ве Components, а потом выполнит свой код.


 
Юрий Зотов ©   (2003-07-17 12:45) [5]

> 3APA3A © (17.07.03 12:11)

> То есть, когда быдет вызван деструктор Owner"а, он сначала
> вызовет деструкторы всех "подчиненных", а потом выполнит свой
> код?

А почему бы не посмотреть в иходниках VCL, что там происходит ТОЧНО?

Раз Owner впервые появляется в классе TComponent - значит, смотрим метод TComponent.Destroy. И видим:

destructor TComponent.Destroy;
var
I: Integer;
begin
Destroying; // Выставить csDestroying у себя и по всей цепочке
if FFreeNotifies <> nil then // Оповестить о своем уничтожении
begin
for I := FFreeNotifies.Count - 1 downto 0 do
begin
TComponent(FFreeNotifies[I]).Notification(Self, opRemove);
if FFreeNotifies = nil then Break;
end;
FFreeNotifies.Free;
FFreeNotifies := nil;
end;
DestroyComponents; // Уничтожить всю "дочернюю" цепочку
if FOwner <> nil then // Удалить себя из списка своего Owner"а
FOwner.RemoveComponent(Self);
inherited Destroy; // Остальное
end;





Страницы: 1 вся ветка

Текущий архив: 2003.07.31;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.021 c
4-101029
dimonf
2003-05-28 19:45
2003.07.31
Народ, как определить что у меня курсор не на PopupMenu???


14-100945
` frizZ. `
2003-07-13 19:07
2003.07.31
Microsoft Win32 Software Development Kit


3-100622
Manfred
2003-07-10 09:41
2003.07.31
Вопрос по компоненту TQuery.


1-100713
Calm
2003-07-18 16:40
2003.07.31
Как создать TServiceApplication и нужно ли это делать?


3-100639
Vlad451
2003-07-10 16:08
2003.07.31
DBGrid - сделать активной строку, не прибегая к Click