Ir para conteúdo
Fórum Script Brasil
  • 0

Auto completar Combobox


Edson_csi

Pergunta

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.MoveFirst

Do While DadosDadosP.Recordset.EOF = False

cboNome.AddItem DadosDadosP.Recordset.Fields("Nome")

DadosDadosP.Recordset.MoveNext

Loop

End Sub

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Dá uma olhada na função Combo_AutoCompletar.

Eu uso a função abaixo para fazer isso.

Private Sub Combo_Box(Combo As Control, 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 Combo.SelLength = 0 Then
        FindString = Combo.Text & Chr$(KeyAscii)
    Else
        FindString = Left$(Combo.Text, Combo.SelStart) & Chr$(KeyAscii)
    End If
    
    CB = SendMessage(Combo.hWnd, CB_FINDSTRING, -1, ByVal FindString)
    
    If CB <> CB_ERR Then
        Combo.ListIndex = CB
        Combo.SelStart = Len(FindString)
        Combo.SelLength = Len(Combo.Text) - Combo.SelStart
    End If
    KeyAscii = 0
End Sub

Link para o comentário
Compartilhar em outros sites

  • 0
Dá uma olhada na função Combo_AutoCompletar.

Eu uso a função abaixo para fazer isso.

Private Sub Combo_Box(Combo As Control, 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 Combo.SelLength = 0 Then
        FindString = Combo.Text & Chr$(KeyAscii)
    Else
        FindString = Left$(Combo.Text, Combo.SelStart) & Chr$(KeyAscii)
    End If
    
    CB = SendMessage(Combo.hWnd, CB_FINDSTRING, -1, ByVal FindString)
    
    If CB <> CB_ERR Then
        Combo.ListIndex = CB
        Combo.SelStart = Len(FindString)
        Combo.SelLength = Len(Combo.Text) - Combo.SelStart
    End If
    KeyAscii = 0
End Sub

Vou tentar aqui e posto se deu certo!

Valeu!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...