procedure TForm3.ComboBox1Change(Sender: TObject);
var
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;
每次输入后 光标都会跳到第一列的位置,而且输入的如果是abc,现实的就是cba 请问我的程序问题在那 谢谢

解决方案 »

  1.   

    我觉得要查询数据库中的数据进行比较,那就最好不要写在change事件里,
    写在keydown事件比较好,用户输入完成之后敲回车键再进行数据库查询
      

  2.   

    var
      n: Integer;
      str: String;
    begin
      n := ComboBox1.SelStart;
      str := ComboBox1.Text;
      //................
      ComboBox1.Text := str;
      ComboBox1.SelStart := n;
    end;
      

  3.   

    var
      AStr: string;
    begin
      AStr := Combobox.text;
      Combobox.selstart := lenth(AStr);
    end;原理同楼上