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

 

  Dicas

  Visual Basic    (Miscelâneas)

Título da Dica:  Busca automática em uma combobox usando API
Postada em 29/1/2007 por Álvaro            
Fácil e rápido

Primeiro adicione um módulo e nesse módulo coloque o comando
#If Win32 Then
    Declare Function SendMessage Lib "User32" Alias "SendMessageA" _
        (ByVal hWnd As Long, ByVal wMsg As Long, _
         ByVal wParam As Long, lParam As Any) As Long
#Else
    Declare Function SendMessage Lib "User" _
        (ByVal hWnd As Integer, ByVal wMsg As Integer, _
         ByVal wParam As Integer, lParam As Any) As Long
#End If


No formulário
No combo que deseja a busca, entre no evento keyascii e coloque o código abaixo e apenas um alerta, na tela de propriedade do combo coloque a opção - Sorted=True, ela vem false como default
   'se o usuário digitar enter, significa q ele quer incluir o fornecedor, senão ele vai continuar a buscar o fornecedor a medida que o usuário for digitando o nome
    If KeyAscii = 13 Then ' nesse exemplo eu inclui os dados no meu banco
        If CboFornecedor.Text = "" Then
            MsgBox "Selecione e/ou digite um fornecedor da lista", vbInformation
        Else
            Itens.AddNew
            Itens!CodItem = TxtCodItem.Text
            Itens!NCadastro = LblCadastro.Caption
            Itens!Descricao = TxtDescricao.Text
            Itens!Fornecedor = CboFornecedor.Text
            Itens!DataUltimaCompra = Date
            Itens!DataCadastro = Date
            Itens.Update
            MsgBox "Fornecedor incluído com sucesso", vbExclamation
            If MsgBox("Deseja incluir mais fornecedores para esse item", vbQuestion + vbYesNo) = vbYes Then
                Seleciona = False
                CboFornecedor.Text = ""
                CboFornecedor.SetFocus
                Exit Sub
            Else
                TxtCodItem.Text = ""
                TxtDescricao.Text = ""
                CboFornecedor.Text = ""
                ProximoRegistro
                TxtCodItem.SetFocus
                Exit Sub
            End If
        End If
    End If
    
   'Aqui ele faz a busca do fornecedor a cada letra digitada e exibi o resultado no combo
    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 CboFornecedor.SelLength = 0 Then
        FindString = CboFornecedor.Text & Chr$(KeyAscii)
    Else
        FindString = Left$(CboFornecedor.Text, CboFornecedor.SelStart) & Chr$(KeyAscii)
    End If
    
    CB = SendMessage(CboFornecedor.hWnd, CB_FINDSTRING, -1, ByVal FindString)
    
    If CB <> CB_ERR Then
        CboFornecedor.ListIndex = CB
        CboFornecedor.SelStart = Len(FindString)
        CboFornecedor.SelLength = Len(CboFornecedor.Text) - CboFornecedor.SelStart
    Else
       'se ele não achar o texto digitado no combo
        Beep 'emiti um som
        MsgBox "Favor verificar, descrição não encontrada", vbInformation
    End If
    KeyAscii = 0
 


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