SaveToFile我最先就是用它的,但它只能保存树上节点的标题而已。是的,SaveToFile不能保存Object,包括TStringList,Tstrings等等都是这样.
自己处理吧,应该没有难度.

解决方案 »

  1.   

    不好意思,在你刚才的问题里,因为网络缘故我的文章发了三次,现在看你的代码,我想我们差别不太大,我的做法和你的区别在于你每次加入对象,我通常是将你的PresNodeRec指针赋给节点的DATA属性,DATA可以保存一个指针,当然结构指针也一样,我是这样来操作树的。下面我再发一次我的看法:
    我曾经这样来记录我的TREEVIEW,不知道和你的想法是否一致:
    {伪代码}
    {假设表中有一个TREEVIEW,这里定义一个结构做为节点关联的DATA}
    type PitemData=^TItemData;
         TItemData=record
         caption:string;
         data:integer;
    end;
    ----------------------------------------
    建树的过程:
    循环:
      新建一个PITEMDATA的指针,
      为指针的域赋值,
      新建一个节点,
      节点的DATA=新指针,保存文件的过程:
    创建一个新文件:
    得到当前树节点的最顶层节点数,向文件中写节点数,开始循环节点数,遍历每个节点
    然后向文件中分别写入是否有子节点,有多少个子节点,每个节点下指针的数据.根据层次的增加可能会使用递归(类似于读目录树一样)将所有数据写入文件.------------------------------------
    导入文件的过程:
    打开相应文件,
    依照上面保存的方法得到树结构节点数,然后使用导入数的过程,为它们分配指针,填充适当的数据.记住:在程序退出时,要记得释放为每一个节点分配的指针.其实这个做法和TREEVIEW的SAVETOFILE差不多,但是是以二进制保存,而且相当于使用一个自己定义结构的数据表.这个虽然不是依照上面意思所做的工作,但是有些类似.
    他简单在层次固定,数据格式固定,但是如果要修改,照上面的结构也很容易,如果你愿意告诉我你想记录你的什么样的树图,我可以写源码给你.
      

  2.   

    我是这样处理的;(思路)
      将treeview的内容(标题和其data)以流的方式保存到一个文件。该文件结构分两部分:
      1、视图部分,即treeview的标题和结构,并写入其总长度;
      2、数据部分,即treeview的Object;
     装载时,找到视图的长度,按视图的长度读入视图结构和标题,再依次读入各个Node的数据。