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

TEdit+TCombobox组合实现上拉框的模糊匹配功能

2012-12-31 
TEdit+TCombobox组合实现下拉框的模糊匹配功能小弟现在有这么一个需求,在TEdit中输入一个string,每输入一

TEdit+TCombobox组合实现下拉框的模糊匹配功能
小弟现在有这么一个需求,在TEdit中输入一个string,每输入一个字符,则在TEdit的输入框下面的下拉框中模糊匹配相同字符的string,TCombobox中添加进入的是一个TStringList链表。
在网上搜索到的资料是数据库应用程序,如下所示:
edit中OnChange事件

view plain
procedure TfrmMain.edit1Change(Sender: TObject);  
begin  
  with qry1 do  
  begin  
    SQL.Clear;  
    SQL.Add(查询语句);  
    Open;  
    cbo1.Items.Clear;  
    while not Eof do  
    begin  
      cbo1.Items.Add(FieldByName('字段').AsString);  
      Next;  
    end;  
  end;  
end;  

combox的选中事件,要激活edit控件,并将数据写到edit控件

view plain
procedure TfrmMain.cbo1Select(Sender: TObject);  
begin  
  edt1.Text:=cbo1.Text;  
  edt1.SetFocus;  
end;  

如何将它移植到c++builder平台下,请教各位大拿。
[解决办法]


void __fastcall TForm1::edt1Change(TObject *Sender)
{
   qry1->Close();
   qry1->SQL->Clear();
   qry1->SQL->Add("查询语句");
   qry1->Open();
   cbo1->Items->Clear();
   while( !qry1->Eof)
   {
     cbo1->Items->Add(qry1->FieldByName("字段")->AsString);
     qry1->Next();
   }
}
//---------------------------------------
void __fastcall TForm1::cbo1Select(TObject *Sender)
{
   edt1->Text=cbo1->Text;
   edt1->SetFocus();
}

[解决办法]
“TEdit的输入框下面的下拉框”这个是没有得,有第三方控件或TEdit+listview模拟。sql语句要看你有什么字段和查询条件。
[解决办法]
自己用个Edit和combobox去做一个就是了
在Edit的onchange里写
    String str = Edit1->Text;
    TStringList *sg = new TStringList;
    sg->Text = ComboBox1->Items->Text;
    for(int i = 0; i < sg->Count; i++)
    {
        if(sg->Strings[i].Pos(str) > 0)
        {
            ComboBox1->DroppedDown = true;
            ComboBox1->ItemIndex = i;
        }
    }
    delete sg;
[解决办法]
不知道你用的是什么版本的C++,在VCL2010版本中,COMBOBOX会自动匹配的。

热点排行