树的数据来源是取xml文件里数据,xml里的一个节点有分类名称、分类代码、和显示名称这样三组数据。其中显示名称是用来在界面上显示的,分类代码和分类名称是用户选择后最终要记录的值。请问要怎样才能把这些信息同时记录在树的节点上??因为我不想再次去遍历xml取值。有没有什么方法或者属性能承载这些信息的。比如说hint啊什么之类的。树的子节点好像没有hint这个属性。希望各位大侠给个建议。先谢了~!

解决方案 »

  1.   

    把你需要的信息定义一个Reocrd或其它对象,然后保存其指针Tree的Node有一个Data,你可以在其中保留指针
      

  2.   

    1楼方法之前也有想到过,但对我可能不适用。因为xml的信息不是每个都全有的。万一有个节点的分类代码是没有的,那在取值的时候就会出错。2楼的方法看起来可以实现,但小弟我只能在理论上理解这个方法,应用上还是空白一片。不知道能否再详细点解答一下?
      

  3.   

    树节点有data属性,可以保存pointer,
    可以把信息用以个class表现出来,树节点可以记住这些,一直到点击树的是可以,通过(data as TObject).prep来获得数据如果仅仅显示用,那么可以考虑按照自己的规则组装成一个字段
    或者考虑用cxtree,dxtree等dev的控件
      

  4.   


    PREC = ^TREC;
    TREC = record
      aa:string; 
      ...
    end;==应用时==
    var
      p:Prec;
    ...  new(p);
      p^.aa := 'hello';
      treelist.node.data := p;
      dispose(p);==要去的时候==
    var
      pr:pointer;
      t:trec;  p:= treelist.node.data;
      t := trec(p^);  showmessage(t.aa);
      

  5.   


    //定义多个全局变量var
    strlst1: tstringlist;//放分类代码
    //在建树的时候
    strlst1.add('分类代码'); //每加一个树节点,strlst1.add('分类代码');
    //这样可以同步//读分类代码 
    strlst1.stings[treeView.Selected.AbsoluteIndex]