Текущий архив: 2005.02.06;
Скачать: CL | DM;
Вниз
Свой TTreeView Найти похожие ветки
← →
Profi © (2005-01-24 03:05) [0]Народ, я чего-то не пойму, как добавить к TTreeNode еще один параметр? Мне надо что бы в tTreeNode еще хранился TstringList! Реально ли это сделать?
← →
Юрий Зотов © (2005-01-24 08:45) [1]Реально, причем для этого даже и не надо писать свой компонент. Посмотрите свойство TTreeNode.Data - оно специально предназначено для таких вещей.
← →
jack128 © (2005-01-24 09:05) [2]1)создать наследника TTreeNode и реализовать в нем свое свойство
2) Перекрыть TCustomTreeView.CreateNode и создавать в нем узлы своего типа.
К сожелению по крайней мере для Delphi5 тебе каждый раз придется полозоватьься приведением типа для того чтобы добраться до нового свойства
← →
Style © (2005-01-24 10:40) [3]
> К сожелению по крайней мере для Delphi5 тебе каждый раз
> придется полозоваться приведением типа для того чтобы добраться
> до нового свойства
Почему?? Если как-раз создать наследника, то можно добавить свое свойство TStringList, и приведение типа реализовать только
в его методах read, write...
← →
Profi © (2005-01-24 14:46) [4]Юрий Зотов © (24.01.05 8:45) [1]
Это-то я знаю, но там тип Pointer. В общем, если sl:TStringList, тоTTreeNode.date:=@sl;
я так понимаю?
← →
Profi © (2005-01-24 14:56) [5]Profi © (24.01.05 14:46) [4]
Ок, сохранять он сохраняет, а как достать-то?
← →
P.N.P. © (2005-01-24 15:50) [6]>Profi © (24.01.05 14:56) [5]
TStringList(TTreeNode.Data)
← →
GuAV © (2005-01-24 16:23) [7]Profi © (24.01.05 14:46) [4]
Нет. Я так понимаю отдельной переменной для каждого Node нет, да ? так @sl будет указывать на текущее значение sl, что в случае локальной переменной можетбыть даже совсем не TStringList.
любая переменная типа класс по сути указатель на экземпляр класса. И значение этого указателя уже соотвествует экземпляру класса в отличие от указателя на него.
Т.е.TreeNode.data:=sl;
без @ и тогда "доставать" как в [6].
← →
jack128 © (2005-01-24 19:55) [8]Style © (24.01.05 10:40) [3]
Почему?? Если как-раз создать наследника, то можно добавить свое свойство TStringList, и приведение типа реализовать только
в его методах read, write...
Это get и set методы класса TTreeNodes. То есть тебе нужно создать наследника TTreeNodes и переобъявить свойство Item чтобы оно возвращало TMyTreeNode. Оки, а теперь вопрос знатокам - Как TreeView заставить создовать наш новый TMyTreeNodes ? Для дельфи5 только ковырянием в исходниках VCL. Как в старших версиях - не знаю..
← →
Profi © (2005-01-24 20:07) [9]Юрий Зотов © (24.01.05 8:45) [1]
P.N.P. © (24.01.05 15:50) [6]
GuAV © (24.01.05 16:23) [7]
Спасибо большое! Все ок! Теперь только осталось все это в файл запихнуть для сохранения и загрузки и все.
← →
SergP © (2005-01-24 20:18) [10]
> Как TreeView заставить создовать наш новый TMyTreeNodes
> ? Для дельфи5 только ковырянием в исходниках VCL. Как в
> старших версиях - не знаю..
А нельзя самому создавать новую ноду, а потом подсовывать ее тривьюю?
← →
jack128 © (2005-01-24 20:44) [11]SergP © (24.01.05 20:18) [10]
А нельзя самому создавать новую ноду, а потом подсовывать ее тривьюю?
можно. см [2]
← →
jack128 © (2005-01-24 20:46) [12]А. Собственно эта ветка переместилась в Основную.. Тогда отвечу так:
Можно. В старших версиях дельфей, AFAIK, есть событие OnCreateNode :-)
← →
Гаврила © (2005-01-24 22:21) [13]
> [12] jack128
OnCreateNodeClass
procedure TForm1.TreeView1CreateNodeClass(Sender: TCustomTreeView;
var NodeClass: TTreeNodeClass);
begin
NodeClass:=TMyTreeNode;
end;
← →
Style © (2005-01-25 12:02) [14]
> А. Собственно эта ветка переместилась в Основную.. Тогда
> отвечу так:
> Можно. В старших версиях дельфей, AFAIK, есть событие OnCreateNode
> :-)
Да в 5-ке не получится :(
Я почему-то думал, что TTreeNodes это TCollection, в котором при создании можно указать класс его элементов.
Наверное лучше будет инкапсулировать две функции в класс самого наследника дерева.
function GetStringList(Node: TTreeNode): TStringList;
begin
result := TStringList(Node.Data);
end;
procedure PutStringList(Node: TTreeNode; List: TStringList);
begin
Node.Data := @List;
end;
Но тогда надо будет обязать себя не работать с Node.Data :)))
Страницы: 1 вся ветка
Текущий архив: 2005.02.06;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.046 c