include("../include.php"); writeHeader("Combobox autocomplete", "Programming » Visual Basic 6 » Visual Basic 6 Code » Controls » Combobox » ");?>
'Example for the combobox keypress Private Sub MyCombo_KeyPress(KeyAscii As Integer) KeyAscii = AutoFind(MyCombo, KeyAscii, False) End Sub 'Put this In the Declarations Section: Public Const CB_FINDSTRING = &H14C Public Const CB_ERR = (-1) 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 Function AutoFind(ByRef cboCurrent As ComboBox, _ ByVal KeyAscii As Integer, _ Optional ByVal LimitToList As Boolean = False) Dim lCB As Long Dim sFindString As String On Error GoTo Err_Handler If KeyAscii = 8 Then If cboCurrent.SelStart <= 1 Then cboCurrent = "" AutoFind = 0 Exit Function End If If cboCurrent.SelLength = 0 Then sFindString = UCase(Left(cboCurrent, Len(cboCurrent) - 1)) Else sFindString = Left$(cboCurrent.Text, cboCurrent.SelStart - 1) End If ElseIf KeyAscii < 32 Or KeyAscii > 127 Then Exit Function Else If cboCurrent.SelLength = 0 Then sFindString = UCase(cboCurrent.Text & Chr$(KeyAscii)) Else sFindString = Left$(cboCurrent.Text, cboCurrent.SelStart) & Chr$(KeyAscii) End If End If lCB = SendMessage(cboCurrent.hWnd, CB_FINDSTRING, -1, ByVal sFindString) If lCB <> CB_ERR Then cboCurrent.ListIndex = lCB cboCurrent.SelStart = Len(sFindString) cboCurrent.SelLength = Len(cboCurrent.Text) - cboCurrent.SelStart AutoFind = 0 Else If LimitToList = True Then AutoFind = 0 Else AutoFind = KeyAscii End If End If End Function