如果仅仅是保存树的结构信息,为什么不直接用ttreeview.saveTostream,在保存到数据库呢?

解决方案 »

  1.   

    1、读入时以编码排序;
    2、记住当前节点,并将当前;
    3、开始时,当前节点为空,则直接加入(当前节点 := TreeView.Items.Add(nil, '编码'));
    4、将当前节点的编码的右边的0去掉,如:01000000-->01,看当前要处理的编码是否以它打头,如:01010000以它打头,如果,则加入为它的子节点)(当前节点 := TreeView.Items.AddChild(当前节点, '编码'));如果不是,若当前节点有父节点,则将父节点设置为当前节点,并重复4;如果没有父节点(Parent=nil),则加在当前节点的后面(当前节点 := TreeView.Items.Add(当前节点, '编码') );
    5、在此没有说明异常情况,如没有02000000就有02010000,你可进行判断和处理;
    6、如果需要加入额外数据,则将AddXXX方法改为AddXXXObject方法。__________________________________________________________________________
    http://i58.boy.net.cn/ (抱歉,未建好)
    邮件列表,大家互助, 请来信: [email protected]
    如果是Yahoo!用户,请访问: http://cn.groups.yahoo.com/group/delphi_sky/
    或: http://agui.delphibbs.com/
      

  2.   

    当前节点就是一个TTreeNode对象实例变量,你把它看成即可。如:var
      CurrNode: TTreeNode;
    begin
      CurrNode := nil; // 初始化为空
      ... 其它操作
      CurrNode :=  TreeView1.Items.Add(nil,  '01000000')); // 第一次赋值
      ...
      CurrNode :=  TreeView1.Items.Add(CurrNode,  '02000000')); // 更替当前节点
      ...
      CurrNode :=  TreeView1.Items.AddChild(CurrNode,  '02010100')); // 更替当前节点//***************************************
    以上仅是示例
      

  3.   

    有本书《delphi企业级应用解析》,里面就有如何根据编码的值生成treeview树
    不递归快多了
    www.tech521.com上有的下载