Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.26;
Скачать: CL | DM;

Вниз

TTreeNode   Найти похожие ветки 

 
Rel_   (2003-06-11 12:05) [0]

Народ, подскажите будет ли корректным сл. приём.
У меня trv : TTreeView.
Необходимо сохранять данные выбранной ноды. Уровней вложенности может быть сколь угодно.

посему я решил сделать т.н. рекурсивное сохранение:
1) объявил тип и в нём 2 процедурки

TMyNode = class(TTreeNode)
private
procedure SaveTask(AFS : TFileStream; ATask : TTask);
public
procedure SaveData(AFS : TFileStream);
end;

procedure SaveTask(AFS : TFileStream; ATask : TTask);
begin
здесь пишу в поток некий класс TTask;
end;

procedure SaveData(AFS : TFileStream);
var i : Integer;
begin
SaveTask(AFS, TTask(Data^));
for i:=0 to Conut-1 do Item[i].SaveData(AFS);
end;

2) Вызываю TMyNode(trv.Selected).SaveData(FS) - и все ноды рекурсивно сохраняют и себя и все вложения.

вопрос: имею ли я право делать такое приведение типов и вызывать проц. SaveData, если я добавляю (т.е. создаю) ноду стандартным способом : trv.AddChild, кот возвращает указатель не на TMyNode, а на TTreeNode ???


 
Rel_   (2003-06-11 12:20) [1]

Ну, сильные мира сего !!!


 
MBo   (2003-06-11 12:21) [2]

новый класс не нужен, достаточно такой процедуры:
procedure SaveNode(Node:TTreeNode; Stream:TStream);


 
Rel_   (2003-06-11 12:42) [3]

Не понял! проясни


 
Юрий Федоров   (2003-06-11 12:46) [4]

вопрос: имею ли я право делать такое приведение типов и вызывать проц. SaveData, если я добавляю (т.е. создаю) ноду стандартным способом : trv.AddChild, кот возвращает указатель не на TMyNode, а на TTreeNode ???


Имеешь, если ты определил событие OnCreateNodeClass:

procedure TForm1.TreeView1CreateNodeClass(Sender: TCustomTreeView;
var NodeClass: TTreeNodeClass);
begin
NodeClass:= TMyNode
end;


 
Rel_   (2003-06-11 12:47) [5]

Хочешь сказать, что можно написать нечто вроде

procedure SaveNode(Node:TTreeNode; Stream:TStream);
begin
--- процедура сохранения Node.Data;

for i:=0 to Node.Count-1 do
SaveNode(Node.Item[i], Stream)
- т.е. проц-ра будет вызывать сама себя.
end;

- а сработает?


 
Rel_   (2003-06-11 12:48) [6]

to Юрий Федоров - ага, спасибо!



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

Текущий архив: 2003.06.26;
Скачать: CL | DM;

Наверх




Память: 0.45 MB
Время: 0.027 c
1-84158
Child
2003-06-11 13:37
2003.06.26
BackGround формы


1-84333
Maxx
2003-06-16 09:47
2003.06.26
Drag-n-Drop


6-84473
LOM
2003-04-10 14:59
2003.06.26
Вопрос по TTcpServer


9-83836
Адмирал Бенбоу
2003-01-15 18:30
2003.06.26
Спрайты


3-83959
kanat
2003-05-29 13:15
2003.06.26
Dbase как работать с NTX





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский