关于ComBoBox的问题.急.

大鸟的小天空 2003-11-10 02:53:05
有个数据集有ID,姓名,在ComBoBox中显示姓名,但是取出的时候要获得ID,怎么操作.不能用LookUp那个控件来做.
...全文
67 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
大鸟的小天空 2003-11-10
  • 打赏
  • 举报
回复
谢谢大侠的指点.哈哈,sncel(地狱情人-杨勇) 的方法挺好,但是我的记录姓名可能重复,而且那样做代码量有点大.所以还是用Veeve() 的,谢过.不过TMyObj *obj = new TMyObj(id,name); 需要delete吗?
sncel 2003-11-10
  • 打赏
  • 举报
回复
用上面的就增加内存就多了。如果你有上万条记录,上面的运行起内存占用是相当大的,用我的方法做的,很方便就可以做到了。
Veeve 2003-11-10
  • 打赏
  • 举报
回复
取的时候;
AnsiString id = ((TMyObj*) ComboBox->Items->Objects[ComboBox->ItemIndex])->id;
Veeve 2003-11-10
  • 打赏
  • 举报
回复
示例:

class TMyObj: public TObject
{
public:
AnsiString id;
AnsiString name;
TMyObj(AnsiString id, AnsiString name);
}
......

while (!DataSet->Eof) //DataSet为数据集
{
AnsiString id=...根据数据集取
AnsiString name=...根据数据集取
TMyObj *obj = new TMyObj(id,name);
ComboBox->Items->AddObject(name,obj);
DataSet->Next();
}
sncel 2003-11-10
  • 打赏
  • 举报
回复
第一可以使用比较,将Combobox取出的name一条一条和原数据集进行比较取出name对应的ID。
第二可以使用name =combobox.text的值进行过滤,当前过滤出来的就是你要的记录了。取出id就可以了。
第三可以使用如adoquery.moveby[combobox.itemindex],移到adoquery记录游标到你combobx所选的itemindex就可以值,取出当前记录的id就是了,这个可能你不理解。
Veeve 2003-11-10
  • 打赏
  • 举报
回复
你可以包装一个包含id和姓名字段的对象(继承自TObject),然后用数据集记录的id、姓名创建该对象并赋给ComboBox->Items->Objects数组。

703

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder ActiveX/COM/DCOM
社区管理员
  • ActiveX/COM/DCOM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧