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

Вниз

Почему ComponentCount не включает в себя динамические объекты?   Найти похожие ветки 

 
lipskiy ©   (2004-09-15 23:20) [0]

Требуется найти на форме все компоненты данного типа. Почему-то несколько физически существующих (видимых) экземпляров динамически созданного визуального компонента (VirtualTreeView) таким образом не обнаруживаются. Это в принципе так для всех динамически создаваемых объектов, или это глюки какие-то? А если не глюки, то как обнаружить динамически созданные объекты?


 
jack128 ©   (2004-09-15 23:26) [1]

lipskiy ©   (15.09.04 23:20)
в массив Components[] входят все компоненты, _владельцем_ которых является данный компонент.


 
default ©   (2004-09-15 23:27) [2]

динамическим компонентам присваивай владельца того что присв-ся комп-ам размещённым в рантайм и всё будет тип-топ


 
lipskiy ©   (2004-09-16 00:24) [3]

Че-то я не понял, а вложенность не поддерживается что-ль???
Когда стал искать непосредственно на владельце - нашлось.
А когда на владельце владельца - не находится.

Подскажите, как правильно сделать:
На форме PageControl, у него три TabSheet, на каждом из которых лежит динамический TreeView, мне надо в одном цикле найти все TreeView. Причем при дальнейшей разработке проекта число табшитов и деревьев будет расти, а к этой процедуре поиска деревьев я больше возвращаться не хочу, мне нужна здесь полная автоматика, не зависящая от того сколько и где этих деревьев лежат, главное, что все они одного типа.


 
jack128 ©   (2004-09-16 01:30) [4]

lipskiy ©   (16.09.04 0:24) [3]
Че-то я не понял, а вложенность не поддерживается что-ль???

в том виде, в каком ты се это представляешь - нет. Если те так нужна - напиши рекурсивную процедурку - делов на 10 минут..


 
Fedia   (2004-09-16 02:53) [5]

lipskiy ©   (16.09.04 00:24) [3]
Я сталкивался с подобной проблемой: нужно было работать с динамически создаваемыми компонентами, также как у тебя, на закладках PageControl-а.
Для получения доступа к ним после их создания, я завел динамический массив записей. Нечто на подобии такого:
 Compon = record
   TV,          //номер компонента TreeView  
   L1: integer; //номер компонента Label  
 end;

 Compon1: array of Compon;

Количество элементов массива соответствовало количеству TabSheet - ов. Перый элемент массива содержал данные по компонентам, содержащимся на PageControl1.Pages[0], второй на .. Pages[1] и т.д.
Номера компонентов заносил в массив при создании компонента, например:
 NewTreeView:=TTreeView.Create(PageControl1.ActivePage);
 NewTreeView.Parent:=PageControl1.ActivePage;
 Compon1[PageControl1.ActivePageIndex].TV:=Integer(NewTreeView);

после этого доступ к ним можно получить так:
for i:=0 to Length(Compon1)-1 do
TTreeView(Compon1[i].TV).Color:=clLime;


 
jack128 ©   (2004-09-16 03:25) [6]

Fedia   (16.09.04 2:53) [5]
TV:=Integer(NewTreeView);
TTreeView(Compon1[i].TV).Color:=clLime


Это сильно.. А почему бы сразу не объявить поле TV как TTreeView??


 
Fedia   (2004-09-16 03:35) [7]

jack128 ©   (16.09.04 03:25) [6]
И что, содержать массив компонентов? Зачем?

>>TV:=Integer(NewTreeView);
>>TTreeView(Compon1[i].TV).Color:=clLime;
Эти две строчки ты к чему привел?


 
lipskiy ©   (2004-09-16 09:36) [8]


> И что, содержать массив компонентов? Зачем?

Ну, насколько я понимаю, это будет не массив компонентов, а массив указателей на объекты, так что, имхо, jack128, прав.

Такой подход, конечно, возможен, но я стараюсь не наворачивать там, где можно не наворачивать. Решил проблему проще - владельцем искомых потом объектов при создании сделал главную форму, а не табшиты, как раньше. Теперь все рулит. Правда не уверен в верности такого решения...


 
NAlexey ©   (2004-09-16 09:45) [9]

>lipskiy ©   (16.09.04 09:36) [8]
Владелец это тот, который освобождает память занимаемую теми кем владеет.


 
lipskiy ©   (2004-09-16 10:01) [10]


> Владелец это тот, который освобождает память занимаемую
> теми кем владеет.

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


 
default ©   (2004-09-16 16:11) [11]

lipskiy ©   (16.09.04 09:36) [8]
". Решил проблему проще - владельцем искомых потом объектов при создании сделал главную форму, а не табшиты, как раньше."
в [2] об этом и было написано


 
KSergey ©   (2004-09-16 16:24) [12]

> [10] lipskiy ©   (16.09.04 10:01)

Различайте Owner и Parent - это разные вещи, хотя и при непосредственном расположении компонент на форме в дезигн-тайм они и совпадают. А вот для динамически созданных - уж как укажете...


 
Digitman ©   (2004-09-16 16:44) [13]


> lipskiy


а действительно - см. [12] - ты не путаешь назначение Parent- и Owner- свойств искомого компонента ? если, конечно же, искомый компонент наследует TWinControl ?


 
lipskiy ©   (2004-09-16 21:00) [14]


> в [2] об этом и было написано

Да? Тогда спасибо! Если честно, несколько раз перечитывал ту фразу, но смысл ее до меня так и не дошел :))

Parent и Owner не путаю, родитель у меня табшит, на нем же отрисовывается - значит он, а владелец теперь главная форма.



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

Форум: "Основная";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.156 c
11-1081321098
Delphi5.01
2004-04-07 10:58
2004.10.03
[Error] Never-build package CoolForm_D6 requires always-build p


1-1095255534
Gemini
2004-09-15 17:38
2004.10.03
Ширина кнопки


6-1090502551
AllDer
2004-07-22 17:22
2004.10.03
Открытый порт+троян


1-1095659097
Комбинатор
2004-09-20 09:44
2004.10.03
Как создать собственную службу?


14-1095078333
bsa
2004-09-13 16:25
2004.10.03
как узнать кодировку страниц на http с помощью WinAPI





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский