EXPANDIR COMBOBOX COM ENTER
Boas gente, blz? Então a duvida agora é, como expandir um ComboBox com o Enter sem que eu precise clicar na setinha pra baixo pra aparecer os itens do mesmo, desde já obrigado.
Private Sub Combo_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
SendKeys ([Ô]{F4}[Ô])
End If
End Sub
Olha não testei ainda porque estou no trabalho, então já pergunto depois eu testo, como seria se no caso eu voce querer que na hora do usuario comecar a digitar 1 letra ja expandisse?
bastava deixar
Private Sub Combo_KeyPress(KeyAscii As Integer)
SendKeys ([Ô]{F4}[Ô])
End Sub
Private Sub Combo_KeyPress(KeyAscii As Integer)
SendKeys ([Ô]{F4}[Ô])
End Sub
sim mas ele não iria chamar essa rotina toda vez que eu digitasse algo? bom, faz o seguinte, chegando em casa eu testo e te falo, mas muito obrigado pela ajuda, até mais, abracos.
mas foi o que você pediu a cima..., quando ele digitar alguma coisa dentro da combo já expandir
Cara, peco desculpas, nem to testando também e to falando bobagem, assim que chegar em casa faco os testes do jeito que eu preciso e posto aqui, obrigado, valeu.
O que está acima postado pelos demais e completando.
Private Sub Combo1_KeyPress(KeyAscii As Integer)
Dim cb As Long
Dim FindString As String
Const CB_ERR = (-1)
Const CB_FINDSTRING = &H14C
If KeyAscii < 32 Or KeyAscii > 127 Then Exit Sub
If Combo1.SelLength = 0 Then
FindString = Combo1.Text & Chr$(KeyAscii)
Else
FindString = Left$(Combo1.Text, Combo1.SelStart) & Chr$(KeyAscii)
End If
cb = SendMessage(Combo1.hwnd, CB_FINDSTRING, -1, ByVal FindString)
If cb <> CB_ERR Then
Combo1.ListIndex = cb [ô] na lógica seria aqui mais não vem
Combo1.SelStart = Len(FindString)
Combo1.SelLength = Len(Combo1.Text) - Combo1.SelStart
End If
KeyAscii = 0
End Sub
Achado aqui no VBMANIA.
Private Sub Combo1_KeyPress(KeyAscii As Integer)
Dim cb As Long
Dim FindString As String
Const CB_ERR = (-1)
Const CB_FINDSTRING = &H14C
If KeyAscii < 32 Or KeyAscii > 127 Then Exit Sub
If Combo1.SelLength = 0 Then
FindString = Combo1.Text & Chr$(KeyAscii)
Else
FindString = Left$(Combo1.Text, Combo1.SelStart) & Chr$(KeyAscii)
End If
cb = SendMessage(Combo1.hwnd, CB_FINDSTRING, -1, ByVal FindString)
If cb <> CB_ERR Then
Combo1.ListIndex = cb [ô] na lógica seria aqui mais não vem
Combo1.SelStart = Len(FindString)
Combo1.SelLength = Len(Combo1.Text) - Combo1.SelStart
End If
KeyAscii = 0
End Sub
Achado aqui no VBMANIA.
Tem que colocar.
Private Declare Function SendMessage Lib [Ô]user32[Ô] _
Alias [Ô]SendMessageA[Ô] (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, _
lParam As Any) As Long
Private Sub Combo1_KeyPress(KeyAscii As Integer)
Dim cb As Long
Dim FindString As String
Const CB_ERR = (-1)
Const CB_FINDSTRING = &H14C
If KeyAscii < 32 Or KeyAscii > 127 Then Exit Sub
If Combo1.SelLength = 0 Then
FindString = Combo1.Text & Chr$(KeyAscii)
Else
FindString = Left$(Combo1.Text, Combo1.SelStart) & Chr$(KeyAscii)
End If
cb = SendMessage(Combo1.hwnd, CB_FINDSTRING, -1, ByVal FindString)
If cb <> CB_ERR Then
Combo1.ListIndex = cb [ô] na lógica seria aqui mais não vem
Combo1.SelStart = Len(FindString)
Combo1.SelLength = Len(Combo1.Text) - Combo1.SelStart
End If
KeyAscii = 0
End Sub
Private Declare Function SendMessage Lib [Ô]user32[Ô] _
Alias [Ô]SendMessageA[Ô] (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, _
lParam As Any) As Long
Private Sub Combo1_KeyPress(KeyAscii As Integer)
Dim cb As Long
Dim FindString As String
Const CB_ERR = (-1)
Const CB_FINDSTRING = &H14C
If KeyAscii < 32 Or KeyAscii > 127 Then Exit Sub
If Combo1.SelLength = 0 Then
FindString = Combo1.Text & Chr$(KeyAscii)
Else
FindString = Left$(Combo1.Text, Combo1.SelStart) & Chr$(KeyAscii)
End If
cb = SendMessage(Combo1.hwnd, CB_FINDSTRING, -1, ByVal FindString)
If cb <> CB_ERR Then
Combo1.ListIndex = cb [ô] na lógica seria aqui mais não vem
Combo1.SelStart = Len(FindString)
Combo1.SelLength = Len(Combo1.Text) - Combo1.SelStart
End If
KeyAscii = 0
End Sub
OMAR2011, desculpa a pergunta, sendo que eu nem testei, mas, isso seria pra abrir e já filtrar?
Adilsoo;aqui ele recebe o foco e abri.Digitando faz o filtro.
Private Declare Function SendMessage Lib [Ô]user32[Ô] _
Alias [Ô]SendMessageA[Ô] (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, _
lParam As Any) As Long
Private Sub Combo1_KeyPress(KeyAscii As Integer)
Dim cb As Long
Dim FindString As String
Const CB_ERR = (-1)
Const CB_FINDSTRING = &H14C
If KeyAscii < 32 Or KeyAscii > 127 Then Exit Sub
If Combo1.SelLength = 0 Then
FindString = Combo1.Text & Chr$(KeyAscii)
Else
FindString = Left$(Combo1.Text, Combo1.SelStart) & Chr$(KeyAscii)
End If
cb = SendMessage(Combo1.hwnd, CB_FINDSTRING, -1, ByVal FindString)
If cb <> CB_ERR Then
Combo1.ListIndex = cb [ô] na lógica seria aqui mais não vem
Combo1.SelStart = Len(FindString)
Combo1.SelLength = Len(Combo1.Text) - Combo1.SelStart
End If
KeyAscii = 0
End Sub
Private Sub Combo1_GotFocus()
SendKeys [Ô]%[Ô] & [Ô]{DOWN}[Ô]
End Sub
Private Declare Function SendMessage Lib [Ô]user32[Ô] _
Alias [Ô]SendMessageA[Ô] (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, _
lParam As Any) As Long
Private Sub Combo1_KeyPress(KeyAscii As Integer)
Dim cb As Long
Dim FindString As String
Const CB_ERR = (-1)
Const CB_FINDSTRING = &H14C
If KeyAscii < 32 Or KeyAscii > 127 Then Exit Sub
If Combo1.SelLength = 0 Then
FindString = Combo1.Text & Chr$(KeyAscii)
Else
FindString = Left$(Combo1.Text, Combo1.SelStart) & Chr$(KeyAscii)
End If
cb = SendMessage(Combo1.hwnd, CB_FINDSTRING, -1, ByVal FindString)
If cb <> CB_ERR Then
Combo1.ListIndex = cb [ô] na lógica seria aqui mais não vem
Combo1.SelStart = Len(FindString)
Combo1.SelLength = Len(Combo1.Text) - Combo1.SelStart
End If
KeyAscii = 0
End Sub
Private Sub Combo1_GotFocus()
SendKeys [Ô]%[Ô] & [Ô]{DOWN}[Ô]
End Sub
Tópico encerrado , respostas não são mais permitidas