Главная страница
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.03 c
1-84219
DJ Vano
2003-06-13 01:04
2003.06.26
TMemo


1-84129
Maxim Pshevlotsky
2003-06-11 07:39
2003.06.26
Как узнать каталог Windows?


4-84836
Akvilon
2003-04-24 11:45
2003.06.26
уникальность окна, в чем?


3-83914
Инна
2003-06-03 14:41
2003.06.26
почему может не работать?


9-83841
Supreme
2002-12-28 23:50
2003.06.26
Исходники разных игрушек