Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.02.13;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.036 c
1-1107033406
Ser_max
2005-01-30 00:16
2005.02.13
работа с TChart


3-1105934085
Fantasy
2005-01-17 06:54
2005.02.13
SQL Помогите написать


14-1106210264
Чеширский_Кот
2005-01-20 11:37
2005.02.13
Gmail.com


6-1101878057
VAV
2004-12-01 08:14
2005.02.13
Скачивание данных и инета


1-1107175812
MakedoneZ
2005-01-31 15:50
2005.02.13
Вопрос по Графике параллельное и последовательное рисование.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский