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

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

Как в TTreeView компоненту присвоить свой идентификатор. [D6, XP]


Andrey K ©   (2016-06-27 13:35:00) 

Имею редактор в котором создаётся проект из файлов с различным назначением.
Сделал дерево с помощью TTreeView котрое выводит всю структуру проекта. Дерево получилось достаточно ветвистое.
Хотел сделать, что бы тыкнуть по компоненту в дереве и открылся файл связанный с этим компонентом или показалась информация связанная с процессом.
Проблема: если бы у каждого нода был бы свой tag то присваивая в нём идентификатор я бы знал что надо с ним делать. Пробовал ориентироваться  по тексту нода, получается фигня, слишком не определённо.


Andrey K   (2016-06-29 07:27:00) [1]

Я уже добился нужного результата. Но за совет спасибо. Обязательно почитаю. Всё равно буду наращивать функционал дерева. Ведь удобство в дереве очевидно. Странно, что я раньше этим вопросом не занялся.


Eraser   (2016-06-29 01:42:00) [2]


> Andrey K   (28.06.16 18:22) [13]

Если не хватает Data, то глянь вот на событие OnCreateNodeClass. Через него можно создавать узлы пользовательского класса, в котором можно объявить все что угодно.
http://delphi.about.com/od/ttreeview/a/store-more-custom-data-into-tree-node-tree-view-delphi.htm


Andrey K   (2016-06-28 18:22:00) [3]

Суть в том, что таким образом можно записать туда и считать то что мне надо. Я не профисеонал, пишу программы исключительно для собственного пользования. И конечно могу ляпнуть какую нить глупость. :)


sniknik   (2016-06-28 10:30:00) [4]

> Это одна область памяти.
???
это вообще не область, так как ты пишешь ты пишешь число в "указатель на объект", само собой оно ни объектом, ни областью не стало, так и осталось числом.


Andrey K   (2016-06-28 09:47:00) [5]

Не не снялся с ручника.
Ставил эксперименты:
Записывал tvSE.Items.Item[n].Data := TObject(id);
Считывал:
 n:=tvSE.Selected.AbsoluteIndex;
 id := integer(tvSE.Items[n].Data);
и наоборот. Это одна область памяти.


  (2016-06-28 00:45:00) [6]

Удалено модератором


iop   (2016-06-27 16:18:00) [7]

тип данных слева от := не судьба посмотреть?


Andrey K   (2016-06-27 15:00:00) [8]

Ещё маленький вопрос:
Если создаю
tvSE.Items.AddChild(tvSE.Items.Item[n],TProReg(PodList.Items[i])^.sps);
Как будет правильно занести id
tvSE.Items.Item[n].Data := TObject(id);
или
tvSE.Items[n].Data := TObject(id);


Andrey K   (2016-06-27 14:24:00) [9]

Всё, снялся с ручника. Спасибо всем.


sniknik   (2016-06-27 14:20:00) [10]

> хочу поместить идентификатор id
а нужно тебе скорее всего по -
> открылся файл связанный с этим компонентом или показалась информация связанная с процессом.
помещать туда свой объект, с разными данными и обработчиками... (файл - имя файла, действие открыть. данные - данные, действие получить и показать, и т.д.) т.е. то что ты сейчас думаешь сделать в функции разделяя по id, делать в разных объектах, вообще.


iop   (2016-06-27 14:04:00) [11]

Pointer(id)


Andrey K   (2016-06-27 13:58:00) [12]

Я про Data читал, но так ничего и не понял, как им пользоваться.
К примеру в tvSE.Items.Item[n].Data хочу поместить идентификатор id
id: nteger;

begin
 id :=1;

Как поместить туда id


iop   (2016-06-27 13:55:00) [13]

если бы у каждого нода был бы свой tag

если бы у каждого нода был бы свой таг, то ноды были бы наследниками TComponent и их можно было бы кидать на форму.
Причем отдельно без самого дерева.
нода есть, а дерева нет. здорово, правда?


sniknik   (2016-06-27 13:48:00) [14]

ответ в последней обсуждаемой теме-
> Как узнать сколько байт в памяти занимает TreeView.Items[n].Data?
человек там в ноду стринглит пихает... а вообще любой объект/указатель можно


iop   (2016-06-27 13:46:00) [15]

ttreenode.data : pointer


Наверх

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