'Пример 1. 'Когда пользователь начинает вводить текст, вручную, в объекте ComboBox '(Combo1) - ему автоматически подсвечиваются возможные варианты слов '(содержащиеся в списке ComboBox'а)
Dim J As Integer Dim Letter As String
Private Sub Combo1_Change() Letter = Mid$(Combo1.Text, 1, J) For i = 0 To Combo1.ListCount - 1 If Letter = Mid$(Combo1.List(i), 1, J) Then Combo1.Text = Combo1.List(i) Exit For End If Next i Combo1.SelStart = J Combo1.SelLength = Len(Combo1.Text) End Sub
Private Sub Combo1_Click() Letter = "" J = 0 End Sub
Private Sub Combo1_KeyPress(KeyAscii As Integer) Select Case KeyAscii Case 8 J = J - 1 If J < 0 Then J = 0 Exit Sub Case Else J = J + 1 Exit Sub End Select End Sub
'Пример 2. 'Разместите на форме элемент ComboBox. Запустите проект на выполнение и 'попробуйте набрать в ComboBox'е "ext". 'Как вы понимаете, за быстрый поиск отвечает событие Combo1_KeyUp.
Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long Private Declare Function RegEnumKey Lib "advapi32.dll" Alias "RegEnumKeyA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, ByVal cbName As Long) As Long
Function GetAllExts() As Variant Dim lRegResult As Long Dim lCounter As Long Dim hCurKey As Long Dim strBuffer As String Dim lDataBufferSize As Long Dim intZeroPos As Integer
lCounter = 0 lRegResult = RegOpenKey(&H80000000, "", hCurKey) Do lDataBufferSize = 255 strBuffer = String(lDataBufferSize, " ") lRegResult = RegEnumKey(hCurKey, lCounter, strBuffer, lDataBufferSize) If lRegResult = 0& Then intZeroPos = InStr(strBuffer, Chr$(0)) If Left(strBuffer, 1) = "." Then Form1.Combo1.AddItem LCase(Right(strBuffer, Len(strBuffer) - 1)) End If lCounter = lCounter + 1 Else Exit Do End If Loop End Function
Private Sub Form_Load() GetAllExts End Sub
Private Sub Combo1_KeyUp(KeyCode As Integer, Shift As Integer) Dim st As Long
If KeyCode <> vbKeyReturn And KeyCode <> vbKeyBack And KeyCode <> vbKeySpace Then st = Len(Combo1.Text) If st < 3 Then For x = 0 To Combo1.ListCount - 1 If Left(Combo1.List(x), st) = Combo1.Text Then Combo1.ListIndex = x Combo1.SelStart = st Combo1.SelLength = Len(Combo1.Text) - st Exit For End If Next x End If End If End Sub
Если Вас заинтересовала или понравилась информация программирование на Visual Basic - "Быстрый поиск элемента в списке", Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу: Так же Вы можете задать вопрос по работе этого модуля или примера через форму обратной связи, в сообщение обязательно указывайте название или ссылку на статью!