比如我数据库有编号和名称,tree显示的是名称,我怎样在点击node时得到编号,以前我在pb中用全局数组,delphi有什么好方法,我急需,请大家不吝赐教。

解决方案 »

  1.   

    var 
      templist:TStringList;begin
      templist:=TStringList.Create;
      templist.values['相应的编号']:='对应的值' 
    end;
      

  2.   

    YAMABACK(CODE到郁闷……) :templist没有赋值呢。
      

  3.   

    使用TTreeNode的Data属性,Data是一个指针,可以指向自定义数据。
      

  4.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
        ps:^string;
    begin
        new(ps);    //用完之后要Free,在此只是举例
        ps^:='Attached';
        TreeView1.Items.AddObject(nil,'Text',ps);
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
        ShowMessage(string(TreeView1.Selected.Data^));
    end;
      

  5.   

    还是用数组: 
      Tdept= RECORD
        deptcode:string;
        dept_int:integer;
      end ;Fdeptinfo:array of Tdept;
     property deptinfo[Index :integer]:Tdept Read GetDeptInfo; 在创建的时候     
     Fdeptinfo[i].deptcode:='';
     Fdeptinfo[i].dept_int:=i;
     Node.Data := Pointer(deptinfo[i].dept_int);
      

  6.   

    使用TTreeNode的Data属性,Data是一个指针,可以指向自定义数据。我们一直在用这个方法。同样支持esu(ESU)。
      

  7.   

    同样支持esu(ESU),我也是这样做的。
      

  8.   

    procedure Tjhglmain.TreeView1MouseDown(Sender: TObject;
      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    var
      HT:THitTests;
      node:TTreenode;
    begin
      with sender as Ttreeview do
      begin
        HT:=gethittestinfoat(x,y);
        if (htonitem in ht) then
        begin
          node:=getnodeat(x,y);
          if Button=mbRight then
          begin
            showmessage(node.Text);
            showmessage(string(node.Data^));
          end;
      end;
    end;
    用楼上指针作了,看我这段代码,我每次右键点击都能得到不同的node.text,但node.data^
    都一样,都是最后赋值得结果,why???
    while not adoquery1.Eof do
      begin
        tmpjhlxjm:=adoquery1.Fieldbyname('计划类型简码').Value;
        Psxmbh^:=tmpjhlxjm;
        tmptreenode:=treeview1.Items.AddObject(nil,tmpjhlx,psxmbh);
        adoquery1.Next;
      end;