Скажите как в ComboBox'е сделать чтобы было автозаполнение т.е. по первым буквам выскакивал лист с похожими вариантами...
Может это и легко,но я новичек,помогите советом...
Заранее всем благодарен.
Option Explicit
Public Enum WindowMessageConstants
cbFindString = &H14C&
lbFindString = &H18F&
End Enum
Private Declare Function SendMessage Lib "user32" _
Alias "SendMessageA" ( _
ByVal hWnd As Long, _
ByVal wMsg As WindowMessageConstants, _
ByVal wParam As Long, _
lParam As Any) _
As Long
Private LastComboKeyAscii As Long
Function FindByValue(ListControl As Control, Optional ByVal Value As String) As Long
Dim i As Long, msg As Long
If TypeOf ListControl Is ComboBox Then
msg = WindowMessageConstants.cbFindString
If Value = vbNullString Then Value = ListControl.Text
ElseIf TypeOf ListControl Is ListBox Then
msg = WindowMessageConstants.lbFindString
Else
Exit Function
End If
i = SendMessage(ListControl.hWnd, msg, -1&, ByVal Value)
FindByValue = i + 1
End Function
Private Sub Combo1_Change()
Dim i%
Dim p%
Select Case LastComboKeyAscii
Case 8, 46
Case Else
With Combo1
i = FindByValue(Combo1, .Text)
If (i) Then
p = .SelStart
.ListIndex = i - 1
.SelStart = p
.SelLength = Len(.Text) - p
End If
End With
End Select
LastComboKeyAscii = 0
End Sub
Private Sub Combo1_KeyDown(KeyCode As Integer, Shift As Integer)
LastComboKeyAscii = KeyCode
End Sub
Сейчас этот форум просматривают: Google-бот и гости: 18