Вниз
Скачать: CL | DM;

TreeView и Data в узлах   Найти похожие ветки 

 
Pahan_   (2004-02-17 14:51) [0]

Доброго времени суток, Мастера. Как сохранить/загрузить содержимое TreeView"a вместе с Data в узлах? Спасибо.


 
Семен Сорокин ©   (2004-02-17 14:57) [1]

Как сохранить/загрузить содержимое TreeView"a вместе с Data в узлах?
с указателями что-ли? а зачем?


 
Pahan_   (2004-02-17 15:09) [2]

> с указателями что-ли? а зачем?

Имеется ввиду TTreeNode.Data. Затем, чтобы даные там хранить.


 
Pahan_   (2004-02-17 15:33) [3]

up


 
Digitman ©   (2004-02-17 15:38) [4]


> Затем, чтобы даные там хранить


какие ?


 
VLAD-MAL   (2004-02-17 15:49) [5]

Ну, типа, 32-разрядное целое, что ли? Или ты имеешь в виду объекты, на которые могут ссылаться указатели в этих Data?


 
SergP ©   (2004-02-17 15:50) [6]

Digitman © (17.02.04 15:38)

Ну может человек собирается хранить там не указатели а что-нить другое... Мало ли чего можно в 4 байта засунуть....

Помню мне когда-то было нужно хранить число типа cardinal (т.е. не указатель, а просто допустим значение поля в БД, которому должен соотв. узел, или еще чего можно придумать).. Просто тогда я до другого способа не смог додуматься.

Ну и хранил cardinal так:

var i:cardinal;

...

//Сохранение в node.data
node.data:=pointer(i);
...
// Извлечение
i:=cardinal(node.data);


 
Pahan_   (2004-02-17 15:55) [7]

2 Digitman [4]

Ну к примеру что-то вроде:

type
PMyData=^TMyData;
TMyData=record
mystr:string[255]
mypoint:tpoint;
end;


 
Digitman ©   (2004-02-17 16:02) [8]


> Pahan_


без переделки классов, имеющих отношение к TreeView, очевидно, никак

для этого необходимо хотя бы сделать это св-во published
сделать это можно только в своем наследнике TTreeNode (или добавить некое дополнительное аналогичное св-во в секцию published наследника), а чтобы задействовать своего наследника придется наследовать еще и ряд других классов, которые отныне будут ссылаться на наследника TTreeNode везде где это требуется


 
Семен Сорокин ©   (2004-02-17 16:02) [9]

Pahan_ (17.02.04 15:55) [7]
тогда ручками, см. метод
procedure TTreeStrings.SaveTreeToStream(Stream: TStream);
в ComCtrls


 
Digitman ©   (2004-02-17 16:06) [10]

упс ... соврал ..

TTreeNode не есть наследник TComponent, и published здесь не поможет

только с пом. DefineProperties/Defineproperty


 
Digitman ©   (2004-02-17 16:11) [11]

ну уж коль "ручками", можно и так поступить в данном случае :

Stream.WriteComponent(TreeView);
for i:= 0 to TreeView.Items.Count - 1 do
Stream.WriteBuffer(PMyData(TreeView.Items[i].Data)^, SizeOf(TMyData));

...

Stream.ReadComponent(TreeView);
for i:= 0 to TreeView.Items.Count - 1 do
Stream.ReadBuffer(PMyData(TreeView.Items[i].Data)^, SizeOf(TMyData));

но это, конечно, способ через задницу



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

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.025 c
1-93898
Tatyana
2004-02-16 00:37
2004.02.29
Событие.


1-93856
Khabibulin
2004-02-16 17:02
2004.02.29
ScrollBars


14-94177
Soft
2004-02-06 22:34
2004.02.29
Что дyмают о pyсских пpогpаммистах их западные коллеги


14-94150
AZ
2004-02-03 06:22
2004.02.29
Нужна помощь в расчете пенсии (Украина).


1-93949
Grihan
2004-02-17 17:53
2004.02.29
ModalResult




   Наверх