combobox的值属性
combobox控件为什么没有值属性,毕竟多数的list内容显示内容与值是不一样的.
目前这样要多谢很多代码来实现,挺麻烦的.有个值多方便啊?
莫非有什么别的更好的解释?
[解决办法]
ComboBox.Items.AddObject
看看帮助中的AddObject的用法。
[解决办法]
这种问题说过N遍了~
procedure TForm1.FormCreate(Sender: TObject);
begin
with QryCustType do
begin
Close;
sql.Clear;
sql.Text:='select * from CUSTTYPE';
open;
while not Eof do
begin
ComboBox1.Items.AddObject(fieldbyname('name').AsString,Pointer(fieldbyname('custtypeid').AsInteger));
next;
end;
end;
end;
显示Value
procedure TForm1.Button2Click(Sender: TObject);
var
A_Value:integer;
begin
A_Value:=integer(ComboBox1.Items.Objects[ComboBox1.ItemIndex]);
Showmessage(inttostr(A_Value));
end;
[解决办法]
还是多看一下TStrings的AddObject方法!
另一种办法是用第三方控件
直接用CxLookupCOMBOBOX
在Dev Express包中
[解决办法]
虽然可以用AddObject方法,但是还是比较麻烦。2楼的方法对于数字才可以直接Add,如果是字符串,就得先New一个字符串指针,再Add进去了(ComboBox释放还要记得自己释放Objects)
raize 4.0的rzcombobox好像支持value列了,我没记错的话。或者自己扩充个也行。
[解决办法]
如果Tag或Hint未做他用,整数值使用Tag属性即可,字符串值或浮点值可用Hint代替!
根本不要写什么代码,编程就要灵活性。
[解决办法]
楼上你用combobox的hint来保存100项的value值?
[解决办法]
自己去封装个函数取要列出来的内容
如:
function getTableList(tableName:string;sCon:string;sFileds:string):string;
var
sSQL:string;
tmpquery:tAdoquery;
stmpstr:string;
begin
sSQL := 'select ' + sFileds + ' from ' + tableName + ' where 1=1 '+ sCon;
tmpquery := tAdoquery.create(nil);
with Adoquery do
try
Adoquery.connectstring := '数据库连接串' ;
Adoquery.sql.add(sSQL);
Adoquery.open;
if not eof then
begin
first;
while eof do
begin
stmpstr := fieldByName(sFileds).asstring + #10;
result:= result + stmpstr;
next;
end;
end else result := '';
finally
Adoquery.close;
Adoquery.free;
end;
end;
二、给combobox赋值
combobox1.items.text := getTableList('tableName','l_id <=20 ','colName');
上面的代码没有经过调试,大致给个思路;
以后每次填充combobox1的时候就可以省一点事情。