TEdit+TCombobox组合实现下拉框的模糊匹配功能,该怎么解决
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平台下,请教各位大拿。
------解决方案--------------------
小弟现在有这么一个需求,在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平台下,请教各位大拿。
------解决方案--------------------
- C/C++ code
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会自动匹配的。