SELECIONAR REGISTRO DE COMBOBOX AO DIGITAR
Bom dia...
Possuo um ComboBox com 100 registros fixos. Precisso que ao momento que digito o texto seja listada o registro correspondente, sem que os demais sejam apagadas. Obrigado
Possuo um ComboBox com 100 registros fixos. Precisso que ao momento que digito o texto seja listada o registro correspondente, sem que os demais sejam apagadas. Obrigado
[ô]Em um módulo:
Declare Function SendMessage Lib [Ô]User32[Ô] Alias [Ô]SendMessageA[Ô] (ByVal hWnd As Long, ByVal wMsg As Long, ByVal WParam As Long, lParam As Any) As Long
Global Const CB_ERR = -1
Global Const CB_FINDSTRING = &H14C
[ô]No form
Private Sub Combo1_KeyPress(KeyAscii As Integer)
Dim Buffer As String
Dim Ret As Long
Buffer = Left(Combo1.Text, Combo1.SelStart) & Chr(KeyAscii)
Ret = SendMessage((Combo1.hWnd), CB_FINDSTRING, -1, ByVal Buffer)
If Ret <> CB_ERR Then
Combo1.Text = Combo1.List(Ret)
Combo1.SelStart = Len(Buffer)
Combo1.SelLength = Len(Combo1.Text)
End If
KeyAscii = 0
End Sub
Declare Function SendMessage Lib [Ô]User32[Ô] Alias [Ô]SendMessageA[Ô] (ByVal hWnd As Long, ByVal wMsg As Long, ByVal WParam As Long, lParam As Any) As Long
Global Const CB_ERR = -1
Global Const CB_FINDSTRING = &H14C
[ô]No form
Private Sub Combo1_KeyPress(KeyAscii As Integer)
Dim Buffer As String
Dim Ret As Long
Buffer = Left(Combo1.Text, Combo1.SelStart) & Chr(KeyAscii)
Ret = SendMessage((Combo1.hWnd), CB_FINDSTRING, -1, ByVal Buffer)
If Ret <> CB_ERR Then
Combo1.Text = Combo1.List(Ret)
Combo1.SelStart = Len(Buffer)
Combo1.SelLength = Len(Combo1.Text)
End If
KeyAscii = 0
End Sub
Muito bom Marcelo... testei seu código, e funcionou, mas eu precisso que a tecla Backspace funcione, no caso de errar a digitação, ou do registro não ser encontrado... se puder continuar me ajudando eu agradeço...
tenta esta modificação
Private Sub Combo1_KeyPress(KeyAscii As Integer)
Dim Buffer As String
Dim Ret As Long
Buffer = Left(Combo1.Text, Combo1.SelStart) & Chr(KeyAscii)
Ret = SendMessage((Combo1.hWnd), CB_FINDSTRING, -1, ByVal Buffer)
If Ret <> CB_ERR Then
Combo1.Text = Combo1.List(Ret)
Combo1.SelStart = Len(Buffer)
Combo1.SelLength = Len(Combo1.Text)
End If
If Not (KeyAscii = 8) Then
KeyAscii = 0
End If
End Sub
Tópico encerrado , respostas não são mais permitidas