Edson_vb6
|
SÃO JOÃO DEL REI MG - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 21/04/2008 11:18 hs
Bom dia!
Estou usando um código de auto-completar os registros em uma combobox, só que ao começar digitar a 1ª letra ela dá o seguinte erro:
Compile error: Sub or Function not defined
Os código que estou usando são esses:
Esse é para auto completar (O erro acusa nesse código).
Private Sub cboNome_KeyPress(KeyAscii As Integer) KeyAscii = Combo_AutoCompletar(cboNome, KeyAscii) End Sub
Esse é para buscar os dados de outro form (Este está tudo certo).
Private Sub Form_Load() DadosDadosP.Refresh DadosDadosP.Recordset.MoveMin Do While DadosDadosP.Recordset.EOF = False cboNome.AddItem DadosDadosP.Recordset.Fields("Nome") DadosDadosP.Recordset.MoveNext Loop End Sub
|
|
|
|
Treze
|
SÃO VICENTE SP - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 21/04/2008 14:52 hs
Vamos desde o principio, primeiro cole o seguinte código em um módulo Option Explicit Private Const CB_FINDSTRING As Long = &H14C 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 Public Function Combo_AutoCompletar(xCombo As ComboBox, ByVal xKeyAscii As Long, Optional ByVal xUpperCase As Boolean = True) As Long Dim lngFind As Long, intPos As Long, intLength As Long, tStr As String With xCombo If xKeyAscii = 8 Then If .SelStart = 0 Then _ Exit Function .SelStart = .SelStart - 1 .SelLength = Len(.Text) .SelText = vbNullString Else intPos = .SelStart tStr = .Text .SelText = IIf(xUpperCase, _ UCase$(Chr$(xKeyAscii)), _ LCase$(Chr$(xKeyAscii))) End If lngFind = SendMessage(.hwnd, CB_FINDSTRING, 0, ByVal .Text) If lngFind = -1 Then .Text = tStr .SelStart = intPos .SelLength = (Len(.Text) - intPos) Combo_AutoCompletar = xKeyAscii Else intPos = .SelStart intLength = Len(.List(lngFind)) - Len(.Text) .SelText = .SelText & Right$(.List(lngFind), intLength) .SelStart = intPos .SelLength = intLength End If End With End Function
Agora no Form use o seu código: Private Sub cboNome_KeyPress(KeyAscii As Integer) KeyAscii = Combo_AutoCompletar(cboNome, KeyAscii) End Sub assim tem de funcionar
|
TÓPICO EDITADO
|
|
|
|
Edson_vb6
|
SÃO JOÃO DEL REI MG - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 21/04/2008 21:46 hs
Ok!
Deu certo!
Valeu mais uma vez!
|
TÓPICO EDITADO
|
|
|
|
Kelvin Marinho
não registrado
|
|
ENUNCIADA !
|
|
|
Postada em 08/11/2010 21:19 hs
Boa dica, tb me ajudou bastante pois esse código nunca ia passar por minha cabeça. alias nem imaginava pois realmente é meio complexo.
flw
|
|
|
|