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

Вниз

Как обратиться к объекту, если еасть его имя.   Найти похожие ветки 

 
tazik ©   (2005-01-25 22:27) [40]

ЛАДНО! ВСЕМ БОЛЬШОЕ СПАСИБО ЗА ВНИМАНИЕ!!!! МНЕ ПОРА!!!!!


 
Gero ©   (2005-01-25 22:51) [41]


> Абсолютно уверен. Дело в том, что у меня перед собой открытый
> исходник, я от туда все беру.

Тогда что такое FindComponent?


 
tazik ©   (2005-01-26 09:05) [42]

> Gero

FindComponent - это стандартная функция, типа TComponent, возращающая Component по его имени.

Form.FindComponent("SomeComponent").свойства


 
ЮЮ ©   (2005-01-26 09:19) [43]

TComponent.FindComponent
Indicates whether a given component is owned by the component.

Чей FindComponent работает в так нызываемом "примере кода"?


 
ЮЮ ©   (2005-01-26 09:22) [44]

Коль ты строишт дерево объектов, то это должен быть не Form.FindComponent, а <Компонент, соответствующий узлу дерева, содержащий текуший>.FindComponent


 
begin...end ©   (2005-01-26 11:27) [45]

> tazik

У каждого компонента (экземпляра класса TComponent или его потомка) есть свойства Owner (владелец) и Parent (родитель).

Владелец отвечает за уничтожение компонента. Т.е. если, например, указать в качестве владельца какого-нибудь создаваемого компонента форму, то она, когда будет уничтожаться сама, автоматически уничтожит и этот компонент. Владельца при создании экземпляра можно вообще не указывать, но в этом случае об уничтожении объекта нужно заботиться самостоятельно.

Свойство Parent влияет на то, кто будет управлять данным компонентом (отображать его).

У каждого компонента есть также свойство-массив Components - в него заносятся все компоненты, для которых родителем является данный компонент.

Метод FindComponent компонента просто ищет в списке Components компонент с нужным именем.

Вот Вы пишете:

> tab := TTabSheet.Create(ParentPC);
> tab.PageControl := ParentPC;

В первой строке Вы указываете, кто будет владельцем tab - ParentPC. Это означает, что за уничтожение tab будет отвечать ParentPC. И что после создания tab ссылка на неё окажется именно в массиве ParentPC.Components. Вместо ParentPC можно было указать, например, форму, или объект Application, т.е. любой компонент, или вообще NIL.

Во второй строке, фактически, происходит назначение свойства tab.Parent (см. в исходниках VCL реализацию метода tab.SetPageControl).

Поэтому теперь есть два варианта:

1. Оставить создание tab в том виде, в каком оно было до сих пор. Но учесть то, что владельцем (owner"ом) этой tab будет не форма, а ParentPC. И потом искать tab не в списке компонентов формы, как Вы это делали до сих пор, а в списке ParentPC.Components, т.е. вызывать метод ParentPC.FindComponent.
2. Назначать владельцем tab форму, а не ParentPC. Искать также, как Вы искали раньше, т.е. среди компонентов формы.


 
tazik ©   (2005-01-26 21:54) [46]

> to begin...end

Милый Вы мой человек! Спасибо Вам большое! Я давно ждал такого пояснения ситуации! Теперь я понял, что к чему! Побольше бы таких ответов! Еще раз, спасибо Вам!


 
Юрий Зотов ©   (2005-01-26 22:14) [47]

> begin...end ©   (26.01.05 11:27) [45]

Весьма достойно. Уважаю. Искренне.


 
Skier ©   (2005-01-27 06:53) [48]


> У каждого компонента есть также свойство-массив Components
> - в него заносятся все компоненты, для которых родителем
> является данный компонент.


TComponent.Components - Lists all components owned by the component.


 
begin...end ©   (2005-01-27 08:41) [49]

> [48] Skier ©   (27.01.05 06:53)

Спасибо за поправку. Я как раз пытался показать разницу между родителем и владельцем, и...

В общем, читать следует так:

У каждого компонента есть также свойство-массив Components - в него заносятся все компоненты, для которых владельцем (owner"ом) является данный компонент.



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

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

Наверх




Память: 0.55 MB
Время: 0.051 c
6-1102169874
MicrObiolOg
2004-12-04 17:17
2005.02.13
Непойму механизма TTcpServer =(


14-1106295530
Григорьев Антон
2005-01-21 11:18
2005.02.13
Зима, кажется, вернулась. Надо этим воспользоваться.


4-1104081422
Inch
2004-12-26 20:17
2005.02.13
Внедрение кода в чужой процесс


3-1106035711
Bless
2005-01-18 11:08
2005.02.13
Можна ли сделать, чтобы внутри транзакции часть кода не откатывал


14-1106489571
SPeller
2005-01-23 17:12
2005.02.13
Добавление пользователя в группу из командной строки