EXPANDIR COMBOBOX COM ENTER

ADILSOO 26/06/2012 13:17:19
#404913
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.
LUIZCOMINO 26/06/2012 13:38:09
#404919
Resposta escolhida

Private Sub Combo_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
SendKeys ([Ô]{F4}[Ô])
End If
End Sub
ADILSOO 26/06/2012 13:41:15
#404920
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?
LUIZCOMINO 26/06/2012 13:45:51
#404922
bastava deixar


Private Sub Combo_KeyPress(KeyAscii As Integer)
SendKeys ([Ô]{F4}[Ô])
End Sub
ADILSOO 26/06/2012 13:48:02
#404924
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.
LUIZCOMINO 26/06/2012 13:52:33
#404925
mas foi o que você pediu a cima..., quando ele digitar alguma coisa dentro da combo já expandir
ADILSOO 26/06/2012 13:59:35
#404928
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.
OMAR2011 26/06/2012 14:26:16
#404932
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.
OMAR2011 26/06/2012 14:29:59
#404934
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
ADILSOO 26/06/2012 16:02:31
#404945
OMAR2011, desculpa a pergunta, sendo que eu nem testei, mas, isso seria pra abrir e já filtrar?
OMAR2011 26/06/2012 16:13:19
#404946
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
Página 1 de 2 [11 registro(s)]
Tópico encerrado , respostas não são mais permitidas