Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.017 c
7-84781
MortalScorpion
2003-04-16 18:36
2003.06.26
Выключить/включить микрофон


1-84297
Doc
2003-06-14 20:51
2003.06.26
Как скачать DFM работающего приложения?


1-84257
zolotov
2003-06-12 12:20
2003.06.26
Customize ToolBar


3-83969
NewD
2003-05-29 08:51
2003.06.26
Как избавиться от слова (Memo) и добавить кнопку.


1-84093
Doc
2003-06-10 14:21
2003.06.26
Имею C: path file.exe, надо получить C: path




   Наверх