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

Implementar Recurso De Auto-completar


brunohjoia

Pergunta

Olá Pessoal! Eu tenho uma combobox no meu formulário e gostaria que, à medida que o usuário vai digitando algo nessa combobox, ela já vá sugerindo a opção da sua lista que completa aquela sentença que o usuário digitou. É igualzinho àquele recurso de autocompletar do Internet Explorer. Se a solução for usar uma API, teria como vocês me ajudarem com a sintaxe dessa API?

Obrigado!

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

[SIZE=7]faça um modulo e nomeio com API.bas

Dentro deste modulo coloque esse codigo

'Todas as variávesi devem ser declaradas.

Option Explicit

'Declara uma variável global.

Global Combo As String

'Declara as funções de API GetUserName e

'SendMessage que são utilizadas.

Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Declare Function SendMessage Lib "User32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

'Define constantes públicas.

Public Const CB_ERR = -1

Public Const CB_FINDSTRING = &H14C

Sub AutoProcura(cbo As ComboBox, KeyAscii As Integer)

'Declara as Variáves sBuffer e lRetVal.

Dim sBuffer As String

Dim lRetVal As String

sBuffer = Left(cbo.Text, cbo.SelStart) & Chr(KeyAscii)

lRetVal = SendMessage((cbo.hwnd), CB_FINDSTRING, -1, ByVal sBuffer)

'Verifica se o combo está vazio.

'se não estiver, faz a pesquisa.

If lRetVal <> CB_ERR Then

cbo.ListIndex = lRetVal

cbo.Text = cbo.List(lRetVal)

cbo.SelStart = Len(sBuffer)

cbo.SelLength = Len(cbo.Text)

KeyAscii = 0

End If

End Sub

<span style='font-size:14pt;line-height:100%'>Depois no seu fomulario de um duplo clique na combobox e coloque este codigo</span>

Private Sub DataCombo1_KeyPress(KeyAscii As Integer)

'Executa o Procedimento Passado

'dois parâmetros.

AutoProcura cboProcura, KeyAscii

End Sub

Espero que tenho lhe ajudado

Link para o comentário
Compartilhar em outros sites

  • 0

Nossa! Valeu cara era isso mesmo que eu queria! Mas assim... Tenho 3 duvidas ainda:

1-O que significam as constantes CB_ERR = -1 e CB_FINDSTRING = &H14C? Eu andei vendo outros exemplos e tem gente que usa CB_FINDSTRING = &H18F. Presumo que pra cada valor dessas constantes, a API SendMessage se comporta de uma maneira. Então em que lugar eu posso estar consultando todos os valores possíveis para estas constantes e o que cada valor faz?

2- porque você declarou a API GetUserName se em nenhum momento ela é usada no código? Eu testei o código sem a API declarada e funcionou normalmente!

3- O que exatamente faz a função Left(cbo.text, cbo.selstart) dentro do âmbito da rotina? Eu percebi que sem ela a rotina não funciona corretamente, mas não entendi o porquê!

Obrigado!

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