PESQUISA NUMA COMBOBOX
Boa tarde!
Alguém sabe como posso pesquisar numa combobox pelo teclado?
Vou explicar melhor, tenho uma combobox, e por exemplo carrego na tecla [Ô]M[Ô] e ele mostra o primeiro que começa com a letra M...
Alguém sabe como consigo fazer isso?
Alguém sabe como posso pesquisar numa combobox pelo teclado?
Vou explicar melhor, tenho uma combobox, e por exemplo carrego na tecla [Ô]M[Ô] e ele mostra o primeiro que começa com a letra M...
Alguém sabe como consigo fazer isso?
boas,
veja se isto o ajuda
se não é isto é algo parecido...
té +
veja se isto o ajuda
Private Sub Combo1_Change()
Dim i As Integer
For i = 0 To Me.Combo1.ListCount - 1
If Left$(Me.Combo1.List(i), 1) = Me.Combo1.Text Then Me.Combo1.Text = Me.Combo1.List(i)
Next [ô]i
End Sub
se não é isto é algo parecido...
té +
coloque em um modulo o comando:
[txt-color=#0000f0]Public Sub[/txt-color] AutoMatch(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
[txt-color=#0000f0]End Sub[/txt-color]
Para chamar o comando use:
[txt-color=#0000f0]Private Sub[/txt-color] comboBox_KeyPress(KeyAscii As Integer)
AutoMatch cboProduto, KeyAscii
[txt-color=#0000f0]End Sub[/txt-color]
[txt-color=#0000f0]Public Sub[/txt-color] AutoMatch(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
[txt-color=#0000f0]End Sub[/txt-color]
Para chamar o comando use:
[txt-color=#0000f0]Private Sub[/txt-color] comboBox_KeyPress(KeyAscii As Integer)
AutoMatch cboProduto, KeyAscii
[txt-color=#0000f0]End Sub[/txt-color]
eu estou a utilizar o Access 2010...e estou com um problema
diz que o .Hwnd - Method not found
consegues me ajudar?
diz que o .Hwnd - Method not found
consegues me ajudar?
Citação:Public Sub AutoMatch([txt-color=#e80000]cbo As ComboBox[/txt-color], KeyAscii As Integer)
Dim sBuffer As String
Dim lRetVal As Long
sBuffer = Left(cbo.Text, cbo.SelStart) & Chr(KeyAscii)
lRetVal = SendMessage(([txt-color=#e80000]cbo.hwnd[/txt-color]), CB_FINDSTRING, -1, ByVal sBuffer)
Vejá só...
Na primeira linha ele pede o nome do ComboBox.
Na quinta linha ele usa o nome que você informou ([txt-color=#e80000][b] cbo.hwnd[/b[/txt-color]] )
Então informe o nome da ComboBox.
No exemplo que te passei o meu Combo é o cboProduto.
Já consegui...obrigado
cumps
Hélio Miranda
cumps
Hélio Miranda
Favor fechar o Tópico e pontuar que lhe ajudou, se for o caso.
Amigo, não sei se deu certo, mas o Proprio combobox tem a fucnao de filtrar, agora seria bem interessante voce colocar um autocompletar no combo, eu uso assim e fica show, ele filtra e auto completa com os dados do banco, se quiser posta aii..
Private Sub combobox1_GotFocus()
SendKeys [Ô]{F4}[Ô]
End Sub
Private Sub combobox1_KeyUp(KeyCode As Integer, Shift As Integer)
On Error GoTo tratar:
If combobox1.Text = [Ô][Ô] Then
Exit Sub
End If
If KeyCode = 8 Then
Exit Sub
End If
Dim i As Integer
Dim xt As Integer
Dim xn As String
Dim xAxou As Integer
xAxou = 0
inicio:
For i = 0 To combobox1.ListCount - 1
xt = Len(combobox1.Text)
If Mid(combobox1.List(i), 1, Len(combobox1.Text)) = combobox1.Text Then
combobox1.Text = combobox1.List(i)
combobox1.SelStart = xt
combobox1.SelLength = Len(combobox1.Text) - xt
xAxou = 1
Exit Sub
End If
Next
If xAxou = 0 Then
xn = Mid(combobox1.Text, 1, Len(combobox1.Text) - 1)
combobox1.Text = xn
GoTo inicio:
End If
Exit Sub
tratar:
combobox1.Text = [Ô][Ô]
End Sub
Observe que no Função [Ô]combobox1_GotFocus()[Ô] ele Abrirá o Combo Para visualização em tempo de execução.
e na função [Ô]combobox1_KeyUp[Ô] ele Auto-Completa indicando se existe ou não, se no caso não existir ele não deixará prosseguir!!!
Espero ter Ajudado!!!
SendKeys [Ô]{F4}[Ô]
End Sub
Private Sub combobox1_KeyUp(KeyCode As Integer, Shift As Integer)
On Error GoTo tratar:
If combobox1.Text = [Ô][Ô] Then
Exit Sub
End If
If KeyCode = 8 Then
Exit Sub
End If
Dim i As Integer
Dim xt As Integer
Dim xn As String
Dim xAxou As Integer
xAxou = 0
inicio:
For i = 0 To combobox1.ListCount - 1
xt = Len(combobox1.Text)
If Mid(combobox1.List(i), 1, Len(combobox1.Text)) = combobox1.Text Then
combobox1.Text = combobox1.List(i)
combobox1.SelStart = xt
combobox1.SelLength = Len(combobox1.Text) - xt
xAxou = 1
Exit Sub
End If
Next
If xAxou = 0 Then
xn = Mid(combobox1.Text, 1, Len(combobox1.Text) - 1)
combobox1.Text = xn
GoTo inicio:
End If
Exit Sub
tratar:
combobox1.Text = [Ô][Ô]
End Sub
Observe que no Função [Ô]combobox1_GotFocus()[Ô] ele Abrirá o Combo Para visualização em tempo de execução.
e na função [Ô]combobox1_KeyUp[Ô] ele Auto-Completa indicando se existe ou não, se no caso não existir ele não deixará prosseguir!!!
Espero ter Ajudado!!!
Tópico encerrado , respostas não são mais permitidas