ComboBox实现显示文本与值不同的方法

以上方法可以说是相对偏一些,我是基于一些网友提供的想法来实现的,另外其实还可以直接使用Combobox本身的东西来实现,这个感觉上更正宗一点,也不需要用到’额外'的控件了。

 

使用Combobox提供的AddItem的方法:

 

[delphi] view plaincopyprint?
 
  1. procedure AddItem(Item: String; AObject: TObject);  

Item:添加项的字符串值。
AObject:关联的对象。

AddItem方法添加项目,并同时与AObject对象进行关联,并可以读取、修改被关联对象,这里我们就利用它这一特性,把项目的真实值给关联到每一个项去,就实现了显示内容与值的不同了。

 

[delphi] view plaincopyprint?
 
  1. procedure TForm1.FormCreate(Sender: TObject);  
  2. var  
  3.   classid: TStrings;  
  4.   i: Integer;  
  5. begin  
  6.   classid := TStringList.Create;  
  7.   classid.LoadFromFile('d:\document\desktop\classid.txt');  
  8.   for i:=0 to classid.Count -1 do  
  9.   begin  
  10.     //添加项,关联值  
  11.     cbb1.AddItem(classid.ValueFromIndex[i], TObject(StrToInt(classid.Names[i])));  
  12.   end;  
  13.   classid.Free;  
  14. end;  
  15.   
  16. procedure TForm1.cbb1Select(Sender: TObject);  
  17. begin  
  18.   edt1.Text := IntToStr(Integer(cbb1.Items.Objects[cbb1.ItemIndex]));  
  19.   edt2.Text := cbb1.Items[cbb1.itemIndex];  
  20. end;  


classid.txt的部分内容为:

 

 

  1. 11=电脑硬件/显示器/电脑周边  
  2. 1101=笔记本电脑  
  3. 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;

posted @ 2014-01-20 15:09  stma  阅读(1404)  评论(0)    收藏  举报