USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Auto-Completar Combobox
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
Pontos: 2843 Pontos: 2843
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



   
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página