首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

怎么实现上拉列表

2012-12-29 
如何实现下拉列表?数据库表group{groupid number(5)groupname varchar(100)}我想将表中的数据读取到一个下

如何实现下拉列表?
数据库表
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]));
    }
}

热点排行