combobox控件自动模糊查询

'----------------------------------------------------------------------------  
  '  
  'Author:lihonggen0  
  'Date:2003-6-19  
  '功能:listbox   模糊查询  
  '----------------------------------------------------------------------------  
   
  Option   Explicit  
   
  '申明API函数  
  Private   Declare   Function   SendMessage   Lib   "user32"   Alias   "SendMessageA"   (ByVal   hwnd   As   Long,   ByVal   wMsg   As   Long,   ByVal   wParam   As   Integer,   ByVal   lParam   As   Any)   As   Long  
   
  Const   LB_FINDSTRING   =   &H18F   '常数  
   
  Private   Sub   Form_Load()  
   
          Text1   =   ""   '令文本框为空  
          List1.AddItem   "abc"  
          List1.AddItem   "bike"  
          List1.AddItem   "baby"  
          List1.AddItem   "boy"  
          List1.AddItem   "box"  
  End   Sub  
   
   
  Private   Sub   Text1_KeyUp(KeyCode   As   Integer,   Shift   As   Integer)  
          Dim   intLong   As   Integer  
          If   KeyCode   =   vbKeyBack   Then   Exit   Sub  
       
          List1.ListIndex   =   SendMessage(List1.hwnd,   LB_FINDSTRING,   -1,   ByVal   CStr(Text1.Text))  
          intLong   =   Len(Text1.Text)  
          Text1.Text   =   List1.Text  
          Text1.SelStart   =   intLong  
          Text1.SelLength   =   Abs(Len(Text1.Text)   -   intLong)  
   
  End   Sub  

 

 

 

'----------------------------------------------------------------------------  
  '  
  'Author:lihonggen0  
  'Date:2003-6-19  
  '功能:   Combo   模糊查询  
  '----------------------------------------------------------------------------  
   
   
  '申明API函数  
  Private   Declare   Function   SendMessage   Lib   "user32"   Alias   "SendMessageA"   (ByVal   hwnd   As   Long,   ByVal   wMsg   As   Long,   ByVal   wParam   As   Integer,   ByVal   lParam   As   Any)   As   Long  
  Private   Const   WM_SETREDRAW   As   Long   =   &HB&  
  Private   Const   CB_FINDSTRING   As   Long   =   &H14C&  
  Public   Sub   SearchCombo(InControl   As   Object)  
          On   Error   GoTo   trap  
             
          Dim   StrPos   As   Long  
          Dim   lPos   As   Long  
          Dim   SearchStr   As   String  
             
            If   TypeOf   InControl   Is   ComboBox   Then  
            StrPos   =   InControl.SelStart  
            SearchStr   =   Left$(InControl.Text,   StrPos)  
             
            lPos   =   SendMessage(InControl.hwnd,   CB_FINDSTRING,   0,   ByVal   SearchStr)  
             
            If   lPos   >=   0   Then  
            InControl.Text   =   InControl.List(lPos)  
            InControl.ListIndex   =   lPos  
            End   If  
             
            With   InControl  
            .SelStart   =   StrPos  
            .SelLength   =   Len(InControl.Text)  
            End   With  
            End   If  
            Exit   Sub  
  trap:  
            MsgBox   Err.Description  
          End   Sub  
             
   
  Private   Sub   Combo1_KeyUp(KeyCode   As   Integer,   Shift   As   Integer)  
          If   KeyCode   =   vbKeyBack   Then   Exit   Sub  
          Call   SearchCombo(Combo1)  
  End   Sub  
   
  Private   Sub   Form_Load()  
           
          Combo1.AddItem   "abc"  
          Combo1.AddItem   "baby"  
          Combo1.AddItem   "bike"  
          Combo1.AddItem   "boy"  
          Combo1.AddItem   "box"  
  End   Sub  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值