comboBox里显示的一种形式,但我要用户选择以后,得到的不是comboBox的text,而是对应的值。如显示的是“第一人名”,但值是一个ID号,如何对应起来呢?
用itemindex不行。请高手指点。

解决方案 »

  1.   

    可能你们没明白我的意思,如我有ID:01010003,对应的文字是:张三,要通过选ComboBox得到01010003怎么做?
    我肯定不能用index,那是有序的数字,也不能用text,那只能得到“张三”,应该怎么做呢?ComboBox本身好象没有这种对应关系,html都有啊。呵呵
      

  2.   

    dblookupcombobox设置正确的listsource和datasource
      

  3.   

    用ComboBox1.Items.AddObject();
    具体使用方法你在网上搜索一下或看Delphi的帮助就知道啦.
      

  4.   

    konhon(优华) 的方法可行,但代码并不简单.建议使用第三方控件.Developer express 的控件包.非常简单.
      

  5.   

    在combobox的onchange事件里写代码,对表按照人名进行搜索,得到对应的ID
      

  6.   

    要简单,也可以这么做,就不用麻烦了。
    你的combobox的长度在界面中可以只显示“张三李四”的长度,而大于这个长度的字符就不会看到,但还存在的,如:“张三李四   | 0108940245 ” 然后你就可以字符串处理得到后面的ID了,我以前也这么做过的,不错的 。很简单,只判断TEXT就可以了 :)
      

  7.   

    自己定一个存储的结构unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls,  IdTrivialFTPBase, ExtCtrls, DB, DBTables;type
      TForm1 = class(TForm)
        Button1: TButton;
        ComboBox1: TComboBox;
        procedure ComboBox1Change(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;  MyStructure = Class
        Id:string;
        Value:string;
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.ComboBox1Change(Sender: TObject);
    var a:string;
    begin
      a:=(ComboBox1.Items.Objects[ComboBox1.ItemIndex] as MyStructure).Value;
      showmessage(a);
    end;procedure TForm1.FormCreate(Sender: TObject);
    var
      AMystructure:MyStructure;
    begin
      AMystructure:=MyStructure.Create;
      AMystructure.Id := 'aa';
      AMystructure.Value := 'aaValue';
      ComboBox1.Items.AddObject('aa',AMystructure);
      AMystructure:=MyStructure.Create;
      AMystructure.Id := 'bb';
      AMystructure.Value := 'bbValue';
      ComboBox1.Items.AddObject('bb',AMystructure);
    end;end.
      

  8.   

    同意kaguo(▲) Guozhi(★★★★★)
      

  9.   

    while not 条件 do
               begin       combobox1.Items.Add("内容") ;
           dm.adoquery2.Next;
               end;
      

  10.   

    用dblookupcombobox,在数据控件里加入lookup字段,设置对应的参数就行了
    可以通过子查询来实现在combobox里的人物名字选择
      

  11.   

    如果是数据库的保存,可以选择用dblookupcombobox,这个控件显示的是名称,保存的是名称的编号(代码)
      

  12.   

    用消息函数CB_SETITEMDATA使用方法,可以查看下面这个MSDN的链接,很详细
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/listboxes/listboxreference/listboxmessages/lb_setitemdata.asp因为我以前问过一个listbox类似的用法,所以特别把所学供大家分享
      

  13.   

    获取值CB_GETITEMDATACB_SETITEMDATA      //用设置每个item的一个32位的程序值
    CB_SETITEMDATA      //用于获取........................
      

  14.   

    感谢各位,各位高手说得都很有道理,我一般的用法也是 张三|01010022 这样的处理方法,也用过写代码去查找,但总感觉美观和方便不能并重。感觉html里的下拉列表就有很好的处理方法,又简单又方便,delphi应该来说比html强大不知多少倍,却感觉在这个小地方不能很顺手,所以发此帖,感谢各位高手们的热情讨论,俺也好好学习了一番,呵呵!
      

  15.   

    可采用2个comboBox同时写2个字段通过comboBox的items.strings[itemindex]
      

  16.   

    用TStringList,当月添加combobox是就把Id添加到定义StringList中
    取数时,应从定义的StringList中取出