TreeViewNode1.data的指针内容为3,怎么给一个整形的数?用igroup_id :=@(treeview1.selected.data);不对呀?我对指针不是很明白..

解决方案 »

  1.   

    igroup_id := treeview1.selected.data^;试试
      

  2.   

    type
      PMyRecord = ^MyRecord;
      MyRecord = record
               ID : integer;
               name:string;
               ParentID : integer;
               end;//end of recordvar
      p : PMyRecord;
    begin
      ...
      new(p);
      p.ID := ...;
      p.name := ...;
      p.ParentID := ..;
      TreeView1.Items.AddChildObject(Node,p.name,p);
      //dispose(p);//一定要去掉这条语句,不然的话,Treeview中的Data也被dispose掉了。
      ...
    end;//use PMyRecord(Treeview1.Selected.Data).name
      

  3.   

    igroup_id := treeview1.selected.data^;试了不对!
    我是这样往TreeView中添加的:
    leaf_node:=treeview1.Items.addchild(Anode,'aa')
    leaf_node.data:= Pchar(id);
      

  4.   

    var
      Node: TTreeNode;
      id: integer;
    begin
      id := 123;
      Node := TreeView1.Items.AddChild(TreeView1.Selected, 'aa');
      Node.Data := @id;
      showmessage(inttostr(integer(Node.Data^)));
    end;
      

  5.   

    //字符串
    var
      Node: TTreeNode;
      id: string;
    begin
      id := 'abcdefg';
      Node := TreeView1.Items.AddChild(TreeView1.Selected, 'aa');
      Node.Data := @id;
      showmessage(string(Node.Data^));
    end;
      

  6.   

    你这是取吗?是往Treeview中添加!!
      

  7.   

    我是想显示前加完,当用户在用的时候,点击treeView上的某个结点,我想在这时取得该点的data.用igroup_id := treeview1.selected.data^;试了不对!该怎么得到igroup_id ?
      

  8.   

    showmessage(inttostr(integer(treeview1.selected.Data^)));
    showmessage(string(treeview1.selected.Data^));
      

  9.   

    var
      Node: TTreeNode;
      id: integer;
    begin
      id := 123;
      Node := TreeView1.Items.AddChild(TreeView1.Selected, 'aa');
      Node.Data := @id;
      //你添加的时候就有问题leaf_node.data:= Pchar(id);
      showmessage(inttostr(integer(Node.Data^)));
      //这里不就是取Data是什么!自己没看明白之前不要瞎说!
    end
      

  10.   

    给TreeViewNode1.data的简单赋整形值可用:
    treeview1.selected.data:=Pointer(k);  // k=3;相反操作:
    K:=Integer(treeview1.selected.data);  // 之后 k=3;对data赋复杂数据就需用记录了
      

  11.   


    赋整形值用:
    treeview1.selected.data:=Pointer(k);
      

  12.   


    赋整形值用:
    treeview1.selected.data:=Pointer(k);已经可以了,但我还想问一下,为什么赋data值时用
    Pchar(k) 和 @k 就不对呢?
      

  13.   

    Pchar(k) 和 @k 也行,只是处理时要注意:
    1、Pchar(k)也行(k为整形),和Pointer(k) 一样操作 把K强制转换成Pointer类型
    2、@k是k的地址直接赋给Data,反过来赋值只需k=Integer(TreeView1.Selected.data)^),但这个最好别用,给Data赋值时k可能为局部变量,再给k赋值时Data所对应的地址所指向的值可能改变,用k=Integer(TreeView1.Selected.data)^)得出的值就完全变样,而1只是强制转换,其所对应的地址有效无效都无所谓