Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.06.26;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.025 c
7-84779
MortalScorpion
2003-04-16 18:57
2003.06.26
Поиск в реестре


1-84361
Chlavik
2003-06-16 17:02
2003.06.26
Как мне поступить ? (классы)


1-84363
Joker
2003-06-16 12:52
2003.06.26
Запуск Word


14-84742
Soft
2003-06-05 14:22
2003.06.26
Начальный возраст для работы с компьютером


1-84152
McSimm2
2003-06-11 10:33
2003.06.26
Плавный переход цвета из одного в другой





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