[delphi]ComboBox实现显示文本与值不同的方法
来源:互联网 发布:最短路径优先算法 编辑:程序博客网 时间:2024/06/06 05:06
在html的select下拉框标签里,option选项可以单独设置一个值,可以和显示的文本不同,但在delphi中,下拉框组件ComboBox却无法直接像它一样,赋予一个单独的值,但是我们可以通过其他方法来实现,我们先来试试比较偏门的方法。
1.通过两个ComboBox组件来实现
演示图:
procedure TForm1.FormCreate(Sender: TObject);begin cbb1.items.Add('a'); cbb1.Items.Add('b'); cbb2.Items.Add('1'); cbb2.Items.Add('2');// cbb2.Visible := False;end;procedure TForm1.cbb1Select(Sender: TObject);var selecti: Integer;begin selecti := cbb1.ItemIndex; cbb2.ItemIndex := selecti; mmo1.Text := '文字为:' + cbb1.Items[selecti] + ' 值为:' + cbb2.Items[selecti];end;
在实际应用的时候,隐藏掉用于保存值的内容的combobox即可。
2.使用tstringlist或者数组来保存值
这种方法实际上跟用2个Combobox类似,只是效率上应该更高,因为使用了更少的界面控件。
var list: TStringList;procedure TForm1.FormCreate(Sender: TObject);begin list := TStringList.Create; cbb1.items.Add('a'); cbb1.Items.Add('b'); list.Add('1'); list.Add('2');end;procedure TForm1.cbb1Select(Sender: TObject);var selecti: Integer;begin selecti := cbb1.ItemIndex; mmo1.Text := '文字为:' + cbb1.Items[selecti] + ' 值为:' + list.Strings[selecti];end;
以上方法可以说是相对偏一些,我是基于一些网友提供的想法来实现的,另外其实还可以直接使用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/录音笔
效果演示:
- [delphi]ComboBox实现显示文本与值不同的方法
- ComboBox实现显示文本与值不同的方法
- Extjs editorgrid combobox 实现显示的值
- comboBox的Item选项值与文本的获取
- 利用if实现文本位置的不同显示
- easyui combobox text与value设置不同的值
- Java实现的比较两个不同的文本,在文本面板中显示不同文本的内容(完整源码)
- Ext ComboBox displayField 与 valueField 的不同
- delphi与flash通信交互的文本简单实现
- delphi Dbgrid 根据值的不同显示不同颜色
- 解决编辑时combobox显示编号而不是文本的问题
- MFC combobox增加显示行数的方法
- delphi中ComboBox的DataValue值
- Delphi DBGRID中 根据不同的字段值显示不同的小图标
- Delphi DBGRID中 根据不同的字段值显示不同的小图标
- 取得下列框(ComboBox)的 索引值,内容(文本),全部内容值,的方法
- 下拉框ComboBox的文本不允许更改的方法
- NotePad++实现16进制显示文本的方法
- Android 如何调用外部 jar 包中的 Service
- TOUCHINPUT 结构
- 优先级运算
- 子窗体
- 栈帧
- [delphi]ComboBox实现显示文本与值不同的方法
- 单链表反转 - 有序链表合并 - 子树包含
- sysv-rc-conf管理Ubuntu server开机启动服务
- MFC学习建议
- C#反射机制小运用
- Vim配置系列(二) —- 好看的statusline
- Java Class对象的引用
- Toast 通知(Windows 应用商店应用)
- 删除 setup.py 安装的 Python 软件包