SELECIONAR REGISTRO DE COMBOBOX AO DIGITAR

CEDAHMER 20/06/2010 10:34:34
#345293
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
MARCELO.TREZE 20/06/2010 10:52:45
#345295
[ô]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
CEDAHMER 20/06/2010 11:01:47
#345296
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...
MARCELO.TREZE 21/06/2010 19:46:13
#345413
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