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

Delphi Combobox字符处理故障排除与解决方案 本文还有配套的精品资源,点击获取 简介:在Delphi中,Combobox控件用于显示可供用户选择的下拉列表。用户在删除字符时可能会遇到乱码问题,这与字符编码不一致、控件属性设置、代码处理不当、数据库或文件交互以及系统设置等因素有关。文章深入探讨了这些问题的原因并提供了相应的解决方案,以确保Combobox在处理字符串时能够正确显示,避免出现乱码。 1. 字符编码... 阅读详情

在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/录音笔

效果演示:



基于强化学习的多无人机路径规划 我们使用了Dueling Double Deep Q-Network(DDDQN)算法来训练智能体,这个算法在深度Q学习算法的基础上进行了升级,具有更快的收敛速度和更好的性能。本文提出了一种基于强化学习的算法,实现了多无人机路径规划,并提供相应的MATLAB代码。通过基于强化学习的多无人机路径规划算法,我们能够高效地解决复杂环境下的任务需求,并在实际应用中取得了良好的效果。首先,我们定义了状态空间和动作空间。实验结果表明,我们的方法能够有效地解决多无人机路径规划问题,提高了任务完成的效率和准确率。 阅读详情

相关推荐

飞书+扣子+DeepSeek三件套:5分钟搞定公众号文章批量改写(附完整配置截图)

本文详细介绍了如何利用飞书、扣子和DeepSeek三款工具,无需编程即可搭建一个高效的公众号文章批量改写自动化工作流。通过飞书多维表格管理链接与成果,扣子平台串联整个流程,并调用DeepSeek智能体进行内容润色与改写,实现从内容抓取到智能处理的完整自动化,大幅提升新媒体运营效率。

python9snake的博客 209

DelPhi 动态给ComBoBox赋值,从ComBoBox中取值

1、把数据库中的项目信息(项目名称、项目编号)动态赋给ComBoBox  cbProjectName.Items.Clear;   with adoQryProject do   begin     First;     while not Eof do     begin       ProjectNameStr := fieldByName('ProjectName').AsSt

xiongmao000738 2万+

Aurora 8B/10B IP核介绍 —— Xilinx 技术文档Pg046

一、概述该IP核与用户接口之间支持AXI4-Stream协议,且基于ZYNQ SOC、A7、K7、V7以及UltraScale、UltraScale+系列FPGA的高速收发器(the high-speed serial transceivers)进行实现。多达 16 个连续绑定4 个连续绑定的 GTP 收发器framingstreaming以及全双工或单工加扰消扰CRC校验热插拔Aurora 8B/10B核心(图1-1)是一种可扩展的、轻量级的、用于高速串行通信的链路层协议;

qq_32147275的博客 1640

Delphi 的combobox 从数据库获取下拉菜单内容

ComboBox1.Items.Add(ADOQuery1.FieldByName('产地').AsString);ComboBox1.Items.Add(ADOQuery1.FieldByName('产地').AsString);SQL.Add('select * from WZ原料产地');SQL.Add('order by 产地');

gqwrg的博客 1059

计算机考研408复试题汇总

TCP连接是全双工的,两端都可以先挥手 其中一端完成数据发送任务后,发送一个FIN包来终止,另一端针对这个FIN包回复确认包, 直到另一端也发送请求终止数据包FIN,另一端作出确认应答,并且还要发送一个ACK=1表示确认号有效,如果没有收到这个就可以进行重传.

ca1m4n的博客 1万+

workbench谐响应

定义材料 打开Engineering Data定义材料,在分析时不同部分选择不同材料 建模 打开Geometry建模,我举的例子很简单就一根光秃秃的轴 因为要加轴承,在轴上创建imprint face 因为要用point mass代替轴上原来的盘,在轴上盘的位置新建一个Plane,用Slice方法将轴从XYPlane3分成两段 施加边界条件以及谐响应分析 打开Model 1.在两段轴的交界面处,创建Point Mass,输入质量与转动惯量,位置在轴线上 2.mass point promote to.

my blogs include programming, math, physics.回首过去,放眼未来。 leslielee.blog.youkuaiyun.com 5885

delphi 控件 combobox常识

ComboBox包括一个编辑框和一个可滚动列表 属性 ItemIndex  当前选择项 items 提供显示信息在组合框的列表部分  text   读取控件的文本或指定的文本值的一个新的字符串    tag  没有固定的含义,存储一个整形做为组成部分

吾日三省的专栏 2980

保姆级教程:用YOLOv8n模型在RKNN和Horizon平台完成目标检测(附C++部署代码与性能实测)

本文提供了一份详尽的YOLOv8n模型在RKNN和Horizon平台上的部署指南,涵盖环境配置、模型优化、跨平台适配及性能调优。通过实战案例和C++部署代码,帮助开发者在嵌入式设备上高效实现目标检测,显著提升推理性能。

weixin_42659194的博客 468

TComboBox组件的重要属性

TComboBox组件的重要属性 CharCase--------此属性用于设置编辑框内文字的大小写 DropDownCount---此属性用于设置当用户下拉组合框时不需要加滚动条就能显示的项的个数 DroppedDown-----如组合框当前被下拉,此属性返回True ItemHeight------此属性用于设置项的高度 ItemIndex-------此属性返回组合框中被选择的

kyfvc的专栏 1万+

FPGA:UART串口接收(高干扰情况)

在上一篇文章中介绍过UART串口接收模块,其中一个需要优化的方向就是在高干扰情况下,如何实现可靠的UART串口接收任务。

weixin_50164178的博客 1672

标准论文参考文献添加方法——Zotero入门使用教程

第一篇论文投出去了,写一下最后一步的参考文献修饰润色吧! 论文的参考文献,即References,是论文的最后一步,相信不管是写毕设论文还是期刊论文都遇到过需要修改参考文献的情况,非常之麻烦。而且参考文献中经常会与生僻奇怪气体出现,一个一个修改非常浪费时间,这里介绍一下一个非常好用的软件Zetero。 第一步:软件的下载安装及绑定Word 尽量使用客户端吧,

MISAYAONE的博客 20万+

怎么得到Delphi中ComboBox选中的值

unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) ComboBox1: TComboBox; Edit1: TEdit; procedure ComboBox1Change(Sender: TObject); p.

男神的专栏 2033

【数据集】3D-GloBFP:全球首个三维建筑轮廓数据集

【数据集】3D-GloBFP:全球首个三维建筑轮廓数据集

WW、forever的博客 1689

实现 Combobox 显示内容与值不同

使用Combobox提供的AddItem的方法: procedure AddItem(Item: String; AObject: TObject); Item:添加项的字符串值。 AObject:关联的对象。 AddItem 方法添加项目同时与AObject对象进行关联,并可以读取、修改被关联对象。 就实现了显示内容与值的不同了。 procedure TForm1.FormCreate(Sender: TObject); var eStrs: TStrings; i: Integer; be..

zdwcmy的专栏 1546

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

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

在html的select下拉框标签里,option选项可以单独设置一个值,可以和显示的文本不同,但在delphi中,下拉框组件ComboBox却无法直接像它一样,赋予一个单独的值,但是我们可以通过其他方法来实现,我们先来试试比较偏门的方法。 1.通过两个ComboBox组件来实现 演示图: [delphi] view plaincopyprint?

wozengcong的专栏 8823

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Delphi的ComBobox控件下拉内容显示不全的解决方法

procedure TForm1.rzbtbtn1Click(Sender: TObject); var _I,_MaxWidth :integer; begin cbb1.Items.Add('abcd'); cbb1.Items.Add('abcdefghijqlmxopqrst'); cbb1.Items.Add('https://blog.youkuaiyun.com/...

踏雪寻梅 3119

【经验】delphi 列表组件ComboBox

delphi列表组件ComboBox TComboBox组件的重要属性 CharCase--------此属性用于设置编辑框内文字的大小写 DropDownCount---此属性用于设置当用户下拉组合框时不需要加滚动条就能显示的项的个数 DroppedDown-----如组合框当前被下拉,此属性返回True ItemHeight------此属性用于设置项的高度 ItemIndex------...

慢动作 9701

DELPHI COMBOBOX 显示最近几个月份

想了解DELPHI COMBOBOX 显示最近几个月份,如当前是20090103,在COMBOBOX.ITEMS里显示'200810、200811、200812、200901'等四个选项。不对数据库访问。//返回最近几个年月 ...

cuiweigk19423的博客 166

delphi COMBOBOX里显示DBGRID列名

COMBOBOX里显示DBGRID列名。{ DBGRID1里有三个列名(编号,名称,备注)查询语句:select * from tb where combobox1.text = edit1.textDBGRID所有列名都作为了...

cuiweigk19423的博客 512

Delphi制作图形化的ComboBox

从Delphi5开始,Delphi集成开发环境中的Object Inspector就使用了图形化的风格来显示某些属性。比如Cursors、Colors、Fonts和Image List等等属性就是这种类型。第一次看到这样的效果,的确令人感到神奇,各种字体的名称可以直接以这种字体的样式显示出来,在选择字体的时候真是很方便。这种效果是如何实现的呢,其实就是使用了组件的“自绘”(Ower-drawing

1170

Combobox显示值、实际值

NET 2.0 Web控件的ComboBox就比WinForm的ComboBox好,可以同时储存显示值和实际值。这个很重要,比如有个下拉框选择工作人员,显示的是姓名,实际交给系统处理是工号。 以前都是特地用个DataTable辅助的,比较麻烦。首先复制DataTable里的每一行的某个字段(比如姓名)到ComboBox的每一项,然后在omboBox1_SelectedIndexChanged事件

kone666 2844

bcb combobox 加载text 和value

<br />今天用到的,积累下来供下次使用。<br />一直想实现类似网页中select的那种功能,显示一个值同时对应一个隐含的值。<br />要用到combobox的一个方法:<br />virtual int __fastcall AddObject(const AnsiString S, System::TObject* AObject)<br />也就是说你可以将想要加载到ComboBox的对象转成一个Object。<br />举例说明:<br /> <br />我想要为ComboBox1加载:<b

huigezi123的专栏 3430

combobox和listbox的文字可以右对齐显示

combobox和listbox的文字可以右对齐显示么?答案是可以的,但是必须使用ComboBox1DrawItem,自行画内容。unit Unit1;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls;type 

SUNSTONE的Delphi笔记 6825

如何获取combobox显示的值

ComboBox1.Text;ComboBox1.Items.Strings[ComboBox1.ItemIndex];//ComboBox1.ItemIndex>=0的时候才能用 转载于:https://www.cnblogs.com/Little-Star/p/7485295.html

aprfnge03122的博客 2133
上一篇: [delphi]ssl connection closed gracefully
下一篇: [delphi]调用外部程序并等待其运行结束
怪才
博客等级 码龄18年 30粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值