procedure TForm3.ComboBox1Change(Sender: TObject);
var
i:integer;
str:string;
begin
str:=combobox1.Text;
with dm.ADOQuery1 do
begin
dm.ADOQuery1.Close;
dm.ADOQuery1.SQL.Clear;
dm.ADOQuery1.SQL.Add('select * from xue where index like '''+'%'+str+'%'+'''');
dm.ADOQuery1.Open;
combobox1.Items.Clear;
end;
while not(dm.ADOQuery1.Eof) do
begin
combobox1.Items.Add(dm.ADOQuery1.Fields[1].AsString);
dm.ADOQuery1.Next ;
end;
end;
这段程序是实现的功能就是跟据combobox中text的改变在数据库中实现模糊查询,查询到的记录全部显示在下拉的item中,但是选中想要的记录时,text中就被清空了,请问这个问题如何解决?
var
i:integer;
str:string;
begin
str:=combobox1.Text;
with dm.ADOQuery1 do
begin
dm.ADOQuery1.Close;
dm.ADOQuery1.SQL.Clear;
dm.ADOQuery1.SQL.Add('select * from xue where index like '''+'%'+str+'%'+'''');
dm.ADOQuery1.Open;
combobox1.Items.Clear;
end;
while not(dm.ADOQuery1.Eof) do
begin
combobox1.Items.Add(dm.ADOQuery1.Fields[1].AsString);
dm.ADOQuery1.Next ;
end;
end;
这段程序是实现的功能就是跟据combobox中text的改变在数据库中实现模糊查询,查询到的记录全部显示在下拉的item中,但是选中想要的记录时,text中就被清空了,请问这个问题如何解决?
2.ComboBox1Change 过程中有代码
combobox1.Items.Clear;
所以 Text 就被清空了,这是当然的。解决办法:
在这个过程的最后面加上一句:ComboBox1.Text := str;
procedure TForm3.ComboBox1Change(Sender: TObject);
var
i:integer;
str:string;
begin
str:=combobox1.Text;
combobox1.Items.Clear;//把这个写在这里
with dm.ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('select * from xue where index like '''+'%'+str+'%'+'''');
Open;
end;
while not(dm.ADOQuery1.Eof) do
begin
combobox1.Items.Add(dm.ADOQuery1.Fields[1].AsString);
dm.ADOQuery1.Next ;
end;
end;
2.ComboBox1Change 过程中有代码
combobox1.Items.Clear;
所以 Text 就被清空了,这是当然的。 解决办法:
在这个过程的最后面加上一句:ComboBox1.Text := str;
------------------------------------------------------------
解决办法是:
combobox1.Items.Add(dm.ADOQuery1.Fields[1].AsString); 'select * from xue where index like '''+'%'+str+'%'+''''
这两个字段是同一个才行。也就是 dm.ADOQuery1.Fields[1] 就是 index 字段。
执行操作