Tnode2 := TVdept.Items.AddChild(Tnode,deptname);
       Tnode2.Data := Pointer(deptid);
如何取出deptid?  结构体,类啊就算了,我想简单点。先谢各位了!

解决方案 »

  1.   

    道理一样的,存的什么类型,就用什么类型转换string(Tnode2.Data);
      

  2.   

    应该这么用:
    var
      deptid:PChar 
    begin
      new(deptid, size);
       Tnode2 := TVdept.Items.AddChild(Tnode,deptname);
       Tnode2.Data := deptid;
    end;另外程序结束时别忘记释放
      

  3.   

    使用data需要分配、释放内存空间太麻烦
    我给Treenode增加了一个dataString,使用起来就无须分配、释放内存空间了
      

  4.   

    var
      deptid : PString;
    begin
      //...
      New(deptd);
      deptd^ := .....;
      Tnode2 := TVdept.Items.AddChild(Tnode,deptname);
      Tnode2.Data := Pointer(deptid);
      //增加过程不能对deptid释放
    end;取数据的时候
    var
      deptid : PString;
    begin
      //...
      deptid := Tnode2.Data;
      ShowMessage(deptid^);
      //
    end;//释放的时候
    procedure TForm1.TreeView1Deletion(Sender: TObject; Node: TTreeNode);
    begin
      Dispose(PString(Node.Data));
    end;
    不过我偏好,在Form上定义一个array of xxx
    然后在Node.Data中写入序号,取出序号,然后在array中即可取得数据
    这样就可以不管释放的问题.