Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
6-94059
Zvik
2003-12-25 18:19
2004.02.29
WinInet (InternetErrorDlg) Ошибка


3-93787
Санек
2004-02-03 18:43
2004.02.29
Как создать вычисляемое поле в рантайме ?


4-94233
DillerXX
2003-12-22 17:12
2004.02.29
Сообщения


11-93822
R
2003-06-06 18:10
2004.02.29
TPopUpMenu


1-93915
Mox Fulder
2004-02-15 11:58
2004.02.29
ТПанель





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский