AutoComplete v Combu

Postup:
Na formulář přidejte ComboBox. Pojmenujte jej cboAuto.
Do deklararční části formuláře zapište:

Option Explicit
Dim BackSpaced As Boolean

Na událost Load formuláře zapíšeme naplnění Comba:

With cboAuto
   .AddItem "http://www.vbthunder.com"
   .AddItem "http://www.mvps.org/vb/"
   .AddItem "http://www.mvps.org/vbnet/"
   .AddItem "http://www.zonecorp.com"
   .AddItem "http://www.microsoft.com"
   .AddItem "http://www.mvps.org/ccrp/"
End With

Pro události na Combu:

Private Sub cboAuto_KeyDown(KeyCode As Integer, Shift As Integer)

   If KeyCode = vbKeyBack Or KeyCode = vbKeyDelete Then
      If cboAuto.Text <> "" Then
          'Důležité pro událost Change
          'jinak neodpoví na mazání znaku.
         BackSpaced = True
      End If
   End If

End Sub

Private Sub cboAuto_Change()

   'Pokud byla stisknuta klávesa Backspace
   'nebo Delete, nelze spustit AutoComplete
   'Jinak se nebudete schopni vrátit
    If BackSpaced = True Or cboAuto.Text = "" Then
      BackSpaced = False
      Exit Sub
   End If

   Dim i As Long
   Dim nSel As Long
   'Proběhneme skrz položky comba
   'a nalezneme první výskyt řetězce.

   For i = 0 To cboAuto.ListCount - 1
      If InStr(1, cboAuto.List(i), cboAuto.Text, vbTextCompare) = 1 Then
         'uložení SelStart
         nSel = cboAuto.SelStart
         cboAuto.Text = cboAuto.List(i)
          'Nastavení výběru v Combu
         cboAuto.SelStart = nSel
         cboAuto.SelLength = Len(cboAuto.Text) - nSel
         Exit For
      End If
   Next

End Sub

A teď aplikaci spusťte. Zkuste psát do comba.

Zpět

Autor: The Bozena