Быстрое наполнение элемента управления ComboBox.
Обычно для заполнения элемента управления ComboBox используется стандартный метод AddItem, который является неприемлемо медленным при необходимости отображения большого количества данных. Этот код произвочит быстрое заполнения ComboBox'а. Вызо производится при событии KeyUp, но при этом исключаются клавиши возврата каретки, ввод, стрелки и т.д.:
Select Case KeyCode
Case 32, &H30 To &H6F, Is > &H7F
ComboBoxSpeedFill Combo1
End Select
А этот код нужно разместить в модуле или в форме:
Private 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 ComboBoxSpeedFill(cmboBox As ComboBox)
Dim rtn As Long, lngPos As Long
With cmboBox
lngPos = Len(.Text)
If lngPos <> 0 Then
rtn = SendMessage(.hwnd, &H14C, -1&, ByVal .Text)
.ListIndex = rtn
.SelStart = lngPos
.SelLength = Len(.Text) - lngPos
End If
End With
End Sub
Юрасов Михаил
|