Форум: "Основная";
Текущий архив: 2004.02.29;
Скачать: [xml.tar.bz2];
Вниз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 вся ветка
Форум: "Основная";
Текущий архив: 2004.02.29;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c