ComboBox实现显示文本与值不同的方法
以上方法可以说是相对偏一些,我是基于一些网友提供的想法来实现的,另外其实还可以直接使用Combobox本身的东西来实现,这个感觉上更正宗一点,也不需要用到’额外'的控件了。
使用Combobox提供的AddItem的方法:
- procedure AddItem(Item: String; AObject: TObject);
Item:添加项的字符串值。
AObject:关联的对象。
AddItem方法添加项目,并同时与AObject对象进行关联,并可以读取、修改被关联对象,这里我们就利用它这一特性,把项目的真实值给关联到每一个项去,就实现了显示内容与值的不同了。
- procedure TForm1.FormCreate(Sender: TObject);
- var
- classid: TStrings;
- i: Integer;
- begin
- classid := TStringList.Create;
- classid.LoadFromFile('d:\document\desktop\classid.txt');
- for i:=0 to classid.Count -1 do
- begin
- //添加项,关联值
- cbb1.AddItem(classid.ValueFromIndex[i], TObject(StrToInt(classid.Names[i])));
- end;
- classid.Free;
- end;
- procedure TForm1.cbb1Select(Sender: TObject);
- begin
- edt1.Text := IntToStr(Integer(cbb1.Items.Objects[cbb1.ItemIndex]));
- edt2.Text := cbb1.Items[cbb1.itemIndex];
- end;
classid.txt的部分内容为:
- 11=电脑硬件/显示器/电脑周边
- 1101=笔记本电脑
- 1201=MP3/MP4/iPod/录音笔
效果演示:
全文:http://blog.csdn.net/none01/article/details/8965436 //更详细。
附://这个也可以实现同样的功能。
ComboBox的DataValue值CND8学院 Delphi教程 发布日期:2008年07月09日 收藏至我的CND8
procedure TForm1.Button1Click(Sender: TObject);
var s : string;
begin
combobox1.Clear;
s := '01';
combobox1.Items.AddObject('北京',TObject(s));
s := '02';
combobox1.Items.AddObject('天津',TObject(s));
s := '03';
combobox1.Items.AddObject('上海',TObject(s));
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
edit1.Text := string(combobox1.Items.Objects[combobox1.ItemIndex]);
end;