Полезные советы

Быстрое наполнение элемента управления 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
Юрасов Михаил Написать письмо 

   
Hosted by uCoz