Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Генерация TreeView в runtime [D6, WinXP]


Sergey_R ©   (2005-09-24 14:10:00) 

Народ, подскажите как заполнить TreeView в runtime!
Ну, например, мне нужно создать такое дерево

-Исполнитель
 -Группа1
    Песня1
    Песня2
    ...
 -Группа2
    Песня1
    Песня2
    ...
-Жанр
 -жанр1
 -жанр2
 ...



Поля 'исполнитель' и 'жанр' я знаю как добавить, а как к ним добавить вложенные списки (типа как в медиаплеере 9)?


TStas   (2005-09-24 20:26:00) [1]

>То есть TTreeNodes  это типа массив из TTreeNode?
Это не массив самих узлов, а указателей на них.


Eraser   (2005-09-24 18:05:00) [2]


> Sergey_R ©   (24.09.05 16:30) [6]

Типа того... только не массив.
Согласно справки TTreeNodes это object and maintains the collection of nodes in the tree view.


Sergey_R   (2005-09-24 16:30:00) [3]

То есть TTreeNodes  это типа массив из TTreeNode?


Eraser   (2005-09-24 15:49:00) [4]


> Sergey_R ©   (24.09.05 15:40) [4]
>
> По-моему надо создавать указатель на node.Item[0], но как
> это сделать, не пойму!

Идентификатор объекта в делфи и есть указатель на объект.

> В хелпе нашел типы TTreeNode и TTreeNodes. А чем они отличаются?

TTreeNode - класс который ппредставляет узел в дереве иерархии.
TTreeNodes представляет собой класс для манипуляциями узлами (TTreeNode) дерева.
Чтобы создать указатель на любой класс, просто объяви его как переменую:
var
 tn: TTreeNode;


> with TreeView1.Items do
>     begin
>            artist:=add(nil,'Исполнитель');
> addchild(node,'Группа1');
> addchild(node.Item[0],'Песня1');
> addchild(node.Item[0],'Песня2');
>
> addchild(node,'Группа2');
> addchild(node.Item[1],'Песня1');
> addchild(node.Item[1],'Песня2');
>
> end;

Можно так:
var
 tn: TTreeNode;
...
tn := addchild(node,'Группа1');
addchild(tn,'Песня1');
addchild(tn,'Песня2');
...


Sergey_R   (2005-09-24 15:40:00) [5]

Допустим, пишу я вот так:

with TreeView1.Items do
    begin
           artist:=add(nil,'Исполнитель');
addchild(node,'Группа1');
addchild(node.Item[0],'Песня1');
addchild(node.Item[0],'Песня2');

addchild(node,'Группа2');
addchild(node.Item[1],'Песня1');
addchild(node.Item[1],'Песня2');

end;


А нельзя ли сделать так, чтобы вместо addchild(node.Item[0],'Песня1'); было
что-то типа addchild(group1,'Песня1')?
По-моему надо создавать указатель на node.Item[0], но как это сделать, не пойму!
И еще. В хелпе нашел типы TTreeNode и TTreeNodes. А чем они отличаются?


Eraser   (2005-09-24 14:33:00) [6]


> Sergey_R ©   (24.09.05 14:31) [2]
>
>  Просто я не понимаю иереархию этого чертового дерева!

Иерархия сама что есть иерархическая, какой же ей быть ещё...?
Что конкретно непонятно ?


Sergey_R   (2005-09-24 14:31:00) [7]

Список функций я мог бы посмотреть и по нажатию Ctrl+Space. Просто я не понимаю иереархию этого чертового дерева!


Eraser   (2005-09-24 14:24:00) [8]


> Sergey_R ©   (24.09.05 14:10)

TreeView.Items.Add
AddChild
AddChildFirst
AddChildObject
AddChildObjectFirst
AddFirst
AddNode
и т.д.


Наверх

Титульная страница Поиск, карта сайта Написать письмо