我知道COMBOBOX控件的combobox1.text是选中当前的值,combobox1.item.add('test')可以把test加入选项,我现在是想从数据表中读出数据,如test表有两个字段,第一个是BH(编号),第二个是name(名称),我希望读从test表读出数据并加载在COMBOBOX中,前台显示的是Name,但后台取值是BH,这怎么实现?

解决方案 »

  1.   

    赋值
      ComboBox.Properties.Items.Clear;
      ComboBox.Properties.Items.BeginUpdate;
      adoquery.first;
      while not adoquery.Eof do
      begin
           ComboBox.Properties.Items.AddObject(adoquery.FieldByName('Name').AsString,Pointer(adoquery.FieldByName('BH').AsInteger));
        adoquery.Next;
      end;
      ComboBox.Properties.Items.EndUpdate;取值:
      Result := Integer(ComboBox.Properties.Items.Objects[ComboBox.ItemIndex]);
      

  2.   

    这是DELPHI定法吗?DELPHI没有ComboBox.Properties.item这个呀只有combobox.item
      

  3.   

    有一个方法
    if adotable.locate('name',combobox.text,[]) then 
    取出编号后台用=adotable.fieldbyname('bh').asinteger;
      

  4.   

    你可以用cxLookupComboBox控件可以实现
      

  5.   

    procedure TMAIN.ComboChange(Sender: TObject);
    Var
      CurrRecNo :Integer;
    begin
      CurrRecNo:=DataSet.RecNo;
      DataSet.MoveBy(CmbNsrxx.ItemIndex+1-CurrRecNo); 
    end;
      

  6.   

    procedure TMAIN.ComboBoxChange(Sender: TObject);
    Var
      CurrRecNo :Integer;
    begin
      CurrRecNo:=DataSet.RecNo;
      DataSet.MoveBy(ComboBox.ItemIndex+1-CurrRecNo); 
    end;
      

  7.   

    combobox1.items.AddObject('xxx',Pointer(IntValue))
    and
    selvalue = Integer(combobox1.items.Objects[combobox1.ItemIndex])
      

  8.   

    用DATA control 面板下的DBLookupComboBox1控件
      

  9.   

    combobox的item不是有一个data属性吗?是一个指针,爱指啥指啥,你分配一个地址来存你每个item的数据,然后取的时候直接取对应指针指向的内容不就行了?哪还用那么麻烦另外搞一个控件啊?
      

  10.   

    Type
    TCCC = class
      BH:integer;
      name:string;
    end;OBJ:= TCCC.Create;
    OBJ.BH:=...
    OBJ.name:=...
    combobox1.item.addObject(OBJ.name,OBJ);
    前台当然显示:OBJ.name
    后台取的时候 bh:= TCCC(combobox1.object[combobox1.itemindex]).BH;
    另外,你给的问题实在是太寒蝉了鄙视一下!