读书人

怎么实现上拉列表

发布时间: 2012-12-29 10:28:09 作者: rapoo

如何实现下拉列表?
数据库表
group
{
groupid number(5)
groupname varchar(100)
}

我想将表中的数据读取到一个下拉列表中,显示groupname。当用户选择了某一项后得到选中的那一项的groupid。
[解决办法]
用ComboBox就可以实现了。例子:
添加项目到下拉列表中

void __fastcall TForm1::Button1Click(TObject *Sender)
{
ComboBox1->Items->AddObject("GroupName1", (TObject *)1);
ComboBox1->Items->AddObject("GroupName2", (TObject *)2);
ComboBox1->Items->AddObject("GroupName3", (TObject *)3);
ComboBox1->Items->AddObject("GroupName4", (TObject *)4);
ComboBox1->Items->AddObject("GroupName5", (TObject *)5);
}


选择了某个项以后:
void __fastcall TForm1::ComboBox1Change(TObject *Sender)
{
int nIndex = ComboBox1->ItemIndex;
if (nIndex > -1)
{
ShowMessage(String().sprintf(TEXT("选择的项是:%s, ID是%d"),
ComboBox1->Items->Strings[nIndex],
(int)ComboBox1->Items->Objects[nIndex]));
}
}

[解决办法]
妖哥,你也下手忒狠了吧,让我们也拣点分罗

typedef struct _TAB_GROUP
{
int number;
char groupname[100];
}GROUP;

vector<GROUP *>vec_data;
vec_data.push(……);
//把数据都压到vec_data
//调用push_date(vector<GROUP *>vec_data)初始化ComboBox1

void __fastcall TForm1::push_date(vector<GROUP *>vec_data)
{
ComboBox1->Items->Clear();
for (unsigned int i=0; i<vec_data.size(); i++){
ComboBox1->Items->AddObject(vec_data[i]->groupname, (TObject *)vec_data[i]->number);
}
}

//借用妖哥的代码
void __fastcall TForm1::ComboBox1Change(TObject *Sender)
{
int nIndex = ComboBox1->ItemIndex;
if (nIndex > -1)
{
ShowMessage(String().sprintf(TEXT("选择的项是:%s, ID是%d"),
ComboBox1->Items->Strings[nIndex],
(int)ComboBox1->Items->Objects[nIndex]));
}
}

读书人网 >C++ Builder

热点推荐