Форум: "Начинающим";
Текущий архив: 2018.06.03;
Скачать: [xml.tar.bz2];
ВнизКак в TTreeView компоненту присвоить свой идентификатор. Найти похожие ветки
← →
Andrey K (2016-06-27 13:35) [0]Имею редактор в котором создаётся проект из файлов с различным назначением.
Сделал дерево с помощью TTreeView котрое выводит всю структуру проекта. Дерево получилось достаточно ветвистое.
Хотел сделать, что бы тыкнуть по компоненту в дереве и открылся файл связанный с этим компонентом или показалась информация связанная с процессом.
Проблема: если бы у каждого нода был бы свой tag то присваивая в нём идентификатор я бы знал что надо с ним делать. Пробовал ориентироваться по тексту нода, получается фигня, слишком не определённо.
← →
iop © (2016-06-27 13:46) [1]ttreenode.data : pointer
← →
sniknik © (2016-06-27 13:48) [2]ответ в последней обсуждаемой теме-
> Как узнать сколько байт в памяти занимает TreeView.Items[n].Data?
человек там в ноду стринглит пихает... а вообще любой объект/указатель можно
← →
iop © (2016-06-27 13:55) [3]если бы у каждого нода был бы свой tag
если бы у каждого нода был бы свой таг, то ноды были бы наследниками TComponent и их можно было бы кидать на форму.
Причем отдельно без самого дерева.
нода есть, а дерева нет. здорово, правда?
← →
Andrey K (2016-06-27 13:58) [4]Я про Data читал, но так ничего и не понял, как им пользоваться.
К примеру в tvSE.Items.Item[n].Data хочу поместить идентификатор id
id: nteger;
begin
id :=1;
Как поместить туда id
← →
iop © (2016-06-27 14:04) [5]Pointer(id)
← →
sniknik © (2016-06-27 14:20) [6]> хочу поместить идентификатор id
а нужно тебе скорее всего по -
> открылся файл связанный с этим компонентом или показалась информация связанная с процессом.
помещать туда свой объект, с разными данными и обработчиками... (файл - имя файла, действие открыть. данные - данные, действие получить и показать, и т.д.) т.е. то что ты сейчас думаешь сделать в функции разделяя по id, делать в разных объектах, вообще.
← →
Andrey K (2016-06-27 14:24) [7]Всё, снялся с ручника. Спасибо всем.
← →
Andrey K (2016-06-27 15: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);
← →
iop © (2016-06-27 16:18) [9]тип данных слева от := не судьба посмотреть?
← →
имя (2016-06-28 00:45) [10]Удалено модератором
← →
Andrey K (2016-06-28 09:47) [11]Не не снялся с ручника.
Ставил эксперименты:
Записывал tvSE.Items.Item[n].Data := TObject(id);
Считывал:
n:=tvSE.Selected.AbsoluteIndex;
id := integer(tvSE.Items[n].Data);
и наоборот. Это одна область памяти.
← →
sniknik © (2016-06-28 10:30) [12]> Это одна область памяти.
???
это вообще не область, так как ты пишешь ты пишешь число в "указатель на объект", само собой оно ни объектом, ни областью не стало, так и осталось числом.
← →
Andrey K (2016-06-28 18:22) [13]Суть в том, что таким образом можно записать туда и считать то что мне надо. Я не профисеонал, пишу программы исключительно для собственного пользования. И конечно могу ляпнуть какую нить глупость. :)
← →
Eraser © (2016-06-29 01:42) [14]
> 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-29 07:27) [15]Я уже добился нужного результата. Но за совет спасибо. Обязательно почитаю. Всё равно буду наращивать функционал дерева. Ведь удобство в дереве очевидно. Странно, что я раньше этим вопросом не занялся.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2018.06.03;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.001 c