你可以使用TreeNode的Data属性,将text的地址保存到data里面

解决方案 »

  1.   

    没有这么复杂吧!太可怕了。
    我看了text是怎么搞成的,不过,嘿嘿,不好意思,没有看懂~~~能不能在
    propety text:string read Ftext write setText;
    后面加一个
    propety text2:string read xxx write setxxx;
    呢?
      

  2.   

    同意easypaper,但要注意保留text的值
      

  3.   

    data属性可以保存你的任何值,因为是指针类型,你可以将其做为任何类型的指针的,很好的保存,又可以很简单的取出,根本不必定义属性的
      

  4.   

    可以参照Text属性的方法,来加一个自己的属性;
    //
    在TTreeNode增加一个属性:
    private:   
      FExtract:boolean;//继承类不能用
      procedure SetExtract(fExtracted:boolean);
    public:
      bExpand:boolean;//继承类能用(是我增加的属性)
      property bExpand:boolean read bExtract write SetExtract;
    在implementation部分中加入:
    procedure TTreeNode.SetExtract(fExtracted:boolean);
    begin
        //public
        bExpand:=fExtracted;
    end;注意在TTreeNode.Create中初始自己的属性的值。
    constructor TTreeNode.Create(AOwner: TTreeNodes);
    begin
      inherited Create;
      FOverlayIndex := -1;
      FStateIndex := -1;
      //this is my property
      fExtract:=false;
      //
      FOwner := AOwner;
    end;
    完了,我增加的功能是为了实现:如果这个Node访问过了,那它的bExpand为true,
    否则 :false
    所以在:
    procedure TCustomTreeView.Change(Node: TTreeNode);
    begin
      if Assigned(FOnChange) then FOnChange(Self, Node);
      //在访问节点时,fExtract:=true;
      Node.bExtract :=true;
    end;
    最后,将编译的comctrls.dcu 拷贝到\borland\delphi50\lib\下,覆盖原来的dcu文件。
    over.
    此种方法加入的属性好像不能直接赋值。不然会出现死循环现象,还请各位帮忙。