COMBO COMPLETA AUTOMATICAMENTE
Boa noite a todos!
Tenho um combo com vários nomes. Gostaria que no hora de digitar a letra A, começa a listar os nomes que começam com a letra a, depois digitar o M lista os nomes com AM, depois a letra E, lista todos que começam com AME..., e ssim por diante. Quando aparecer o nome procurado click em enter , seleciona o texto e pula para o próximo campo.
Grato
Tenho um combo com vários nomes. Gostaria que no hora de digitar a letra A, começa a listar os nomes que começam com a letra a, depois digitar o M lista os nomes com AM, depois a letra E, lista todos que começam com AME..., e ssim por diante. Quando aparecer o nome procurado click em enter , seleciona o texto e pula para o próximo campo.
Grato
[ô]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
Public Sub AutoProcura(cbo As ComboBox, KeyAscii As Integer)
Dim sBuffer As String
Dim lRetVal As Long
sBuffer = Left(cbo.Text, cbo.SelStart) & _
Chr(KeyAscii)
lRetVal = SendMessage((cbo.hwnd), CB_FINDSTRING, -1, ByVal sBuffer)
If lRetVal <> CB_ERR Then
cbo.ListIndex = lRetVal
cbo.Text = cbo.List(lRetVal)
cbo.SelStart = Len(sBuffer)
cbo.SelLength = Len(cbo.Text)
KeyAscii = 0
End If
End Sub
Chame se assim:
No evendo key press do combo.
Ex.
Private Sub CBO_Cliente_KeyPress(KeyAscii As Integer)
AutoProcura Cbo_Cliente, KeyAscii
End Sub
Espero ter ajudado.
Dim sBuffer As String
Dim lRetVal As Long
sBuffer = Left(cbo.Text, cbo.SelStart) & _
Chr(KeyAscii)
lRetVal = SendMessage((cbo.hwnd), CB_FINDSTRING, -1, ByVal sBuffer)
If lRetVal <> CB_ERR Then
cbo.ListIndex = lRetVal
cbo.Text = cbo.List(lRetVal)
cbo.SelStart = Len(sBuffer)
cbo.SelLength = Len(cbo.Text)
KeyAscii = 0
End If
End Sub
Chame se assim:
No evendo key press do combo.
Ex.
Private Sub CBO_Cliente_KeyPress(KeyAscii As Integer)
AutoProcura Cbo_Cliente, KeyAscii
End Sub
Espero ter ajudado.
Tópico encerrado , respostas não são mais permitidas