如何保存TTreeView和它的Data指针中的数据到一个文件中?并能够恢复?(无内容)(200分)

  • 主题发起人 主题发起人 renwei
  • 开始时间 开始时间
你可以把这个TTreeView构件作为一个流(Stream)存放到
一个文件中,下次要用的时候,把这个流读取出来就行了。
 
TreeView.SaveToFile/SaveToStream保存Treeview的数据,data的数据应根据
其具体的类型另外保存。可能要定义一个有格式的文件来保存吧。
 
自己保存Data吧
 
大家好:

各位大虾的答案我已收到,非常感谢你们对我的支持!


对于答案,saintor大虾说的比较详细,delphiwolf也没有回答错.

至于使用SaveToStream, SaveToFile,就请各位试试看,能不能保存?


我使用BCB4.0,现在开发的一个项目使用了树控件,同时,对于每一个新生成的节点附加有一个数据结构,其中包含了AnsiString和TStringList数据类型.在项目中
我将项目的所有信息都保存在树控件的数据指针中,这样就出现了我上述提出的问题.

现在,经过我三天的加班,我自定义了一种文件结构,通过递归调用的方式浏览所
有树节点,将其数据保存到文件中,同时可以在需要时将其读回来,今天刚做完.(声明
是在没有看saintor的回答之前完成的).

真的很累,生成节点时动态分配内存,删除节点时回收内存,不能出错,否则就....

在此之前,我考虑过使用流文件的方式来保存,但各位大虾,仔细想想,你 new 的
数据在内存的哪里?


我不想耍赖,但三位大虾的回答不能使我很满意,我允诺的分数就......

(注:这个问题我早去过Inprise公司的BCB.VCL讨论组,他们也没什么好办法)
 
很有兴趣,继续》
我觉得 Date 的数据……
对不起,还没能理解题意……
 
renwei你的问题也是我现在想要解决的一个问题之一。也就是通过
data指针可以得到对应的附加信息。但在删除是会出现很多的问题?
不知道你现在解决了没有。
我也可以帮你出一部分的分数!
 
我是这样写删除节点及其孩子节点data信息的:
请各位指教,
procedure TFileForm.DeleteTreeNodedata(Node :TTreeNode);
var
workNode :TTreeNode;
child,child_bak :TTreeNode;
begin
workNode :=Node;
if workNode <> nil then
begin
if not workNode.HasChildren then
begin
DisPose(workNode.Data);
workNode.Delete;
end
else
begin
Child :=workNode.getFirstChild;
Child_bak :=workNode.GetNextChild(child);
DeleteTreeNodeData(child);
child :=child_bak;
if Child<> nil then
begin
Child_bak :=workNode.GetNextChild(Child);
DeleteTreeNodeData(workNode.GetNextChild(Child));
Child :=Child_bak;
end;
DeleteTreeNodeData(workNode);
end;
end;
end;
 
多人接受答案了。
 
各位大哥,如果重名,怎样来保存节点的data及下次程序启动时读出来呢?我看了很多这里关于
treeview的回答了,但是没有一个有讲到怎样保存一个节点的data及读出的问题,可是如
果text相同怎么办
 
后退
顶部