comboBox里如何得到值?

birdhaha 2004-02-26 01:55:11
comboBox里显示的一种形式,但我要用户选择以后,得到的不是comboBox的text,而是对应的值。如显示的是“第一人名”,但值是一个ID号,如何对应起来呢?
用itemindex不行。请高手指点。
...全文
359 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
漂白猪 2004-08-25
  • 打赏
  • 举报
回复
获取值CB_GETITEMDATA

CB_SETITEMDATA //用设置每个item的一个32位的程序值
CB_SETITEMDATA //用于获取........................
漂白猪 2004-08-25
  • 打赏
  • 举报
回复
用消息函数CB_SETITEMDATA

使用方法,可以查看下面这个MSDN的链接,很详细
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/listboxes/listboxreference/listboxmessages/lb_setitemdata.asp

因为我以前问过一个listbox类似的用法,所以特别把所学供大家分享
birdhaha 2004-08-25
  • 打赏
  • 举报
回复
感谢各位,各位高手说得都很有道理,我一般的用法也是 张三|01010022 这样的处理方法,也用过写代码去查找,但总感觉美观和方便不能并重。

感觉html里的下拉列表就有很好的处理方法,又简单又方便,delphi应该来说比html强大不知多少倍,却感觉在这个小地方不能很顺手,所以发此帖,感谢各位高手们的热情讨论,俺也好好学习了一番,呵呵!
moonstar1014 2004-08-25
  • 打赏
  • 举报
回复
用TStringList,当月添加combobox是就把Id添加到定义StringList中
取数时,应从定义的StringList中取出
dxhdxh 2004-08-25
  • 打赏
  • 举报
回复
可采用2个comboBox同时写2个字段通过comboBox的items.strings[itemindex]
julong88 2004-08-24
  • 打赏
  • 举报
回复
dblookupcombobox
kmzmy 2004-08-24
  • 打赏
  • 举报
回复
konhon(优华) 的方法可行,但代码并不简单.建议使用第三方控件.Developer express 的控件包.非常简单.
konhon 2004-08-24
  • 打赏
  • 举报
回复
用ComboBox1.Items.AddObject();
具体使用方法你在网上搜索一下或看Delphi的帮助就知道啦.
loveghb 2004-08-24
  • 打赏
  • 举报
回复
大不了自己做一张对应的表,具体看你的程序了。
qizhanfeng 2004-08-24
  • 打赏
  • 举报
回复
dblookupcombobox设置正确的listsource和datasource
Tensionli 2004-08-24
  • 打赏
  • 举报
回复
dblookupcombobox
jijl2001 2004-08-24
  • 打赏
  • 举报
回复
这要你自己写程序的,这可不是做网页或
qizhanfeng 2004-08-24
  • 打赏
  • 举报
回复
用dblookupcombobox就行
birdhaha 2004-08-24
  • 打赏
  • 举报
回复
可能你们没明白我的意思,如我有ID:01010003,对应的文字是:张三,要通过选ComboBox得到01010003怎么做?
我肯定不能用index,那是有序的数字,也不能用text,那只能得到“张三”,应该怎么做呢?ComboBox本身好象没有这种对应关系,html都有啊。呵呵
lionlsl 2004-08-24
  • 打赏
  • 举报
回复
如果是数据库的保存,可以选择用dblookupcombobox,这个控件显示的是名称,保存的是名称的编号(代码)

cbice2004 2004-08-24
  • 打赏
  • 举报
回复
用dblookupcombobox,在数据控件里加入lookup字段,设置对应的参数就行了
可以通过子查询来实现在combobox里的人物名字选择
dawei213 2004-08-24
  • 打赏
  • 举报
回复
while not 条件 do
begin

combobox1.Items.Add("内容") ;
dm.adoquery2.Next;
end;
lh983508 2004-08-24
  • 打赏
  • 举报
回复
同意kaguo(▲) Guozhi(★★★★★)
kaguo 2004-08-24
  • 打赏
  • 举报
回复
自己定一个存储的结构

unit Unit1;

interface

uses
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.
wanghome 2004-08-24
  • 打赏
  • 举报
回复
要简单,也可以这么做,就不用麻烦了。
你的combobox的长度在界面中可以只显示“张三李四”的长度,而大于这个长度的字符就不会看到,但还存在的,如:“张三李四 | 0108940245 ” 然后你就可以字符串处理得到后面的ID了,我以前也这么做过的,不错的 。很简单,只判断TEXT就可以了 :)
加载更多回复(1)

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧