Главная страница
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.47 MB
Время: 0.022 c
14-84517
Rafik
2003-06-05 15:32
2003.06.26
Кто нибудь скажет где можно купить АЦП


1-84402
kull
2003-06-09 11:09
2003.06.26
FormatDateTime...


14-84722
Kladov
2003-02-14 22:59
2003.06.26
---|Ветка была без названия|---


1-84141
NailMan
2003-06-10 16:32
2003.06.26
Отключение скринсейвера


7-84808
new comer and co
2003-04-16 16:27
2003.06.26
эмуляция нажатия клавиш