如何获得combobox1的值?(抱歉全部家档用上了只有10元)? (10分)

W

webug

Unregistered / Unconfirmed
GUEST, unregistred user!
我在用combobox时要求下拉列表框显示中文而内部程序要获取的是代码:
如combobox显示为(注以下的列表项,是动态生成的不一定是固定的)
语文
数学
英语
而当用户选取数学时内部程序要获得"sx",如何设置才能实现?
checklistbox控件又如何实现类似功能呢?
(注不用dblookupbobox)
就如网页的功能就很好:
<select size="10" name="D1">
<option value="sx">数学</option>
<option value="yw">语文</option>
</select>
为什么delphi不提供这样的功能呢???
 
直接赋值:
if combobox.text='语文' then
value:=1
else
if combobox.text='数学' then
value:=2
else
if combobox.text='英语' then
value:=3
......
end.
 
楼上的,这样的太烦了,有没好的办法,如果我的是动态生成的combobox那就更没办法了
 
简单的方法:
在初始化Combox1时,所显示的数据格式如下:
yw=语文
yy=英语
sx=数学
......
要获取sx只要从字符串中提取即可。
 
ComboBox1.Items.AddObject('vsIcon', TObject(vsIcon));
ComboBox1.Items.AddObject('vsList', TObject(vsList));
ComboBox1.Items.AddObject('vsReport', TObject(vsReport));

ComboBox1.Items.AddObject('vsSmallIcon', TObject(vsSmallIcon));
// Display first item in the Combo Box
ComboBox1.ItemIndex := 0;
帮助上的一段话,
基本上能实现你的想法,
 
楼上xiao_zx的, 你的做法是可以实现,但显示不合我的要求,也不好看,特别是用在checklistbox时更不好看
有其它办法吗?
 
用addobject也能实现你说得,不过我想你会嫌麻烦的。
 
dhl2001,能说说具体的实现方式吗?
 
用动态数组,对应赋值
动态记录
a=record
sa:string;
sb:string;
end;
ab:array of a;
这样动态赋值,
 
同意楼上的。
 
使用TStrings类型:
var lstSub:TStrings;
在窗口的Create事件中初始化;
lstSub:=TStringList.Create;
lstSub.Clear;
lstSub.Add('语文=yw');
lstSub.Add('数学=sx');
.................

在combobox的change事件中取出代码:
Code:=lstSub.Values[combobox.Text];

在窗口的Destroy事件中释放变量;
lstSub.Free;
 
给combobox添加项目一这样的格式
语文 yw
数学 sx
取值时用copy分解
 
你在程序内,定义一个cdLst: TStrings;
with Query do begin
sql.add('select code,chinese from table');
try open except end;
while not eof do begin
combobox1.items.add(fields[1].asstring);
cdLst.add(fields[0].asstring);
next
end;
close;
end;
如果你combobox1中选的是第一项,对应的代码就是cdLst中的第一项。
delphi中一般这样,一对一。
用完了,cdLst.free就可以了,比较方便
 
给combobox的控件添加一个Tstringlist的属性,
可以省确掉好多麻烦与twos的用法相似
 
对!同意楼上
 
基于你的列表项是动态的,而且你要得到的是.TEXT 的每个字的第一个字母,
你可以去找一个获得汉字第一个字母的函数,这样就很方便的实现了。
这样的代码我有,可是不在上网的这台电脑上,无法贴上,不过网上有很多的,
DFW里也肯定有。
 
建立一表TB,字段名为 Contents ContentsBm
数学    xx
将表中的内容加入COMBOBOX中
TB.OPEN;
TB.FIRST
WHILE NOT TB.EOF DO
COMBOBOX1。ITEMS。ADD(TABLE1.FIELDBYNAME('CONTENTS').VALUE)
NEXT
END;
DB.CLOSE;
然后用combobox.onchange事件进行判断
IF TB。LOCATE(‘CONTENTS’,COMBOBX。TEXT) THEN
  TEMPSTR:=tb.fieldbyname('contentsbm').value
LISTBOX。ITMES。ADD(tempstr)
 
顶部