老大,请教一下,如何让combobox实现像IE地址输入框那样的功能
谢谢.

解决方案 »

  1.   

    加一个Edit在ComboBox的上面,盖住ComboBox的输入部分,只露出下拉的箭头
    拼成一个假的ComboBox,然后分别响应Edit的OnKeyDown和OnChange事件
    ComboBox的OnClick事件:procedure TForm1.Edit1Change(Sender: TObject);
    var
      i:Integer;
      t:Boolean;
    begin
        t:=true;//设定找不到标志
        for i := 0 to ComboBox1.Items.Count - 1 do
        begin
          if Pos(Edit1.Text , ComboBox1.Items[i]) = 1 then //找到以Edit1.Text开头的
          begin
            ComboBox1.ItemIndex := i;//选中
            ComboBox1.DroppedDown:=true;//弹出
            t:=false;//找到
            Break;//跳出循环
          end;
        end;
        if t then ComboBox1.DroppedDown := false; //没找到,关闭弹出的下拉框
    end;
    procedure TForm1.ComboBox1Click(Sender: TObject);
    begin
      Edit1.OnChange := nil;
      Edit1.Text := ComboBox1.Text; //选中下拉框中的项目,反映到Edit中
      Edit1.OnChange := Edit1Change;
    end;procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      //弹出下拉框后,上下箭头和回车的事件发给Combobox处理
      if ComboBox1.DroppedDown then 
      if (Key = VK_UP) or (Key = VK_Down) or (Key = VK_Return) then
      begin
        PostMessage(ComboBox1.Handle,WM_KEYDOWN,Key,0);
        Key := 0;
      end;
    end;
      

  2.   

    建议:把angle097113(深思不解)所说的
    改写为一个新控件,提高日后的开发速度!
      

  3.   

    to angle097113(深思不解)
    IE地址输入框还有自动筛选功能,怎么实现?应该要有动态修改ComboBox的Items属性才对!
      

  4.   

    可以把一楼的edit换成一个输入IP的第三方控件
      

  5.   

    设置
    AutoComplete:= True;
    AutoDropDown:= True;
    在OnKeyPress中写
    if (Key = #13) and (TCombobox(Sender).Items.Indexof(TCombobox(Sender).Text)<0) then
      TCombobox(Sender).Items.add(TCombobox(Sender).Text);
      

  6.   

    to angle097113(深思不解)
    动态生成Edit控件,然后响应相应事件
      

  7.   

    在Combobox身上搞就行了啊,又必要搞那么复杂吗,呵呵,深思不是针对你哈
      

  8.   

    是啊,直接在Combobox上弄就行了
      

  9.   

    同意geyobing(大地), 呵呵, ~~~
      

  10.   

    我试试在combobox上搞搞啊 
      

  11.   

    我在combobox上搞过,不知道它的功能,无法实现,请各位大爷,帮一下,有空请你吃饭
      

  12.   

    dulei115() 同志说得对,我就是想这个功能!