如何在Combox中自動找到對應的選項?
解决方案 »
- 可以使窗体上的的控件实现半透明效果吗?像半透明窗体一样!
- 请教一个思路如何实现?保存用户在文本框中搜索记录。
- 请高手指教:控件类型不匹配的问题
- 資料導出至txt失敗
- 在excel中,怎样得到光标所在的当前单元格行列号或单元格的具体地址?急!
- RichTextbox与ComboBox配合使用,Richtext中选定的文字点击ComboBox后不能保持?求助
- html如何设置网页不显示滚动条?
- 件可否自动调整大小的问题,如何将一些不支持height、left控件跳过?为什么On Error Resume Next不管用?
- 用VB如何开发票据打印程序?
- 从高中生到CEO,看一个程序员的成长经历
- 007剧场【中国最好的免费影院】激情大片,完全免费!
- 如何在vb中使用数码摄像头?怎样实现直接在vb程序中直接摄像?
'
'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 SubPrivate Sub Form_Load()
Combo1.AddItem "abc"
Combo1.AddItem "baby"
Combo1.AddItem "bike"
Combo1.AddItem "boy"
Combo1.AddItem "box"
End Sub
'----------------------------------------------------------------------------
'
'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 LongConst 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
Global Const ENABLE_COLOR = &H80000005
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Sub ComboBoxChange(ByRef CB As ComboBox)
Dim iStart As Integer
Dim sString As String
iStart = CB.SelStart
If iStart = 0 Then
Exit Sub
End If
sString = CStr(Left(CB.Text, iStart))
CB.ListIndex = SendMessage(CB.hwnd, CB_FINDSTRING, 0, ByVal sString) CB.SelStart = iStart
CB.SelLength = Len(CB.Text) - iStart
End Sub
然后在你的combobox_change事件中调用这个过程