读书人

TEdit+TCombobox组合实现上拉框的模糊

发布时间: 2012-12-31 11:57:52 作者: rapoo

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会自动匹配的。

读书人网 >C++ Builder

热点推荐