TTreeView的节点中能不能邦定多个属性,最好给出源码

解决方案 »

  1.   

    定义一个记录类型来保存各种属性,然后用节点的Data属性来保存指向该记录的指针。
      

  2.   

    Data指针可以榜定。呵呵,来晚了
      

  3.   

    可以自定义 TTreeNode 类:  TMyTreeNode = class(TTreeNode)
      private
        FTag: Integer;
        ……
      public
        property Tag: Integer read FTag write FTag;
        ……
      end;procedure TfrmTables.tvTablesCreateNodeClass(Sender: TCustomTreeView;
      var NodeClass: TTreeNodeClass);
    begin
      NodeClass := TMyTreeNode;
    end;
      

  4.   

    使用的时候 把 TTreeNode 转换为 TMyTreeNode 即可!
      

  5.   

    首先定义一个指针类型
    type
    PMyRec = ^TMyRec;
    TMyRec = record
      FName: string;
      LName: string;
    end;绑定指针
    procedure TForm1.Button1Click(Sender: TObject);
    var
      MyRecPtr: PMyRec;
      TreeViewIndex: LongInt;
    begin
      New(MyRecPtr);
      MyRecPtr^.FName := Edit1.Text;
      MyRecPtr^.LName := Edit2.Text;
      TreeViewIndex := StrToInt(Edit3.Text);
      with TreeView1 do
      begin
        if Items.Count = 0 then
          Items.AddObject(nil, 'Item' + IntToStr(TreeViewIndex), MyRecPtr)
        else if (TreeViewIndex < Items.Count) and (TreeViewIndex >= 0) then      Items.AddObject(Items[TreeViewIndex], 'Item' + IntToStr(TreeViewIndex), MyRecPtr);
      end;
    end;使用指针
    procedure TForm1.Button2Click(Sender: TObject);
    begin
      Label1.Caption := PMyRec(TreeView1.Selected.Data)^.FName + ' ' +
                      PMyRec(TreeView1.Selected.Data)^.LName;
    end;
      

  6.   

    budded(System is bussy!) 的方法也行.
      

  7.   

    to ahuige(灰不遛秋(前半身学医后半身学统计)) 
      呵呵,英雄所见略同嘛。^_^用mastersky(浪)的方法是比较好的,但是要记得删除节点前先Dispose相关联的指针。
      

  8.   

    如果我要实现一个的话过程是这样
    1:定义需要绑定的属性的record,把所有需要绑定的属性都放到这个record里面
     type BindData=record
       PA:integer;
       PB:rea;
       PC:string;
      end;
    2:Treeview中所有的节点对象都是一个TTreeNode对象,这一个对象有一个Data属性,可以指向一个对象。通过这一个属性可以为每一个Node绑定一个delphi“对象”,在这里我们绑定为BindData类型的对象,通过这个就可以了。
    3:在需要属性的时候,通过Data获得所需要的数据就OK了。
    这其中最需要注意的就是:对象的construct&dispose操作了,一定要注意,否则会有不少的麻烦。
      

  9.   

    PMyRec((Tree as TTreeView).Selected.Data)^.FName取的不是当前节点的值,而是最后面一个节点的值是怎么回事呀?
      

  10.   

    删除节点前先Dispose相关联的指针?是怎么做呀?能给出源码吗?
      

  11.   

    在Delete之前,先Dispose(ListView.Items[Index].Data)
      

  12.   

    type
      Pnode=^Tnode;
      Tnode=record
        dm,mc:string;
      end;var
      bb:Pnode;
    new(bb);
    bb.dm:='';
    bb.mc:='';
    self.treeview1.items.addchildObject(nil,'ddd',bb);就这样就可以了
    你再发挥发挥。
      

  13.   

    比较好的做法,用TList保存Treeview的Data属性指向的指针,form的destory事件中再全部释放;
      

  14.   

    我看是 budded(System is bussy!) 的做法最好
    省去许多释放问题