Skip Navigation Links
Novas Tecnologias
Ferramentas Adicionais
Ferramentas Adicionais


Dica No :
72
Assunto : Visual Basic
Titulo: Fazendo o preenchimento automatico durante a digitação em uma combo

Gostou do texto ? Vote e dê sua opinião! Pontuação atual :

Translate this page now :






Adicione aos Favoritos!
BlogBlogs Rec6 Linkk Ueba Technorati Delicious DiggIt! StumbleUpon



Em muitas interfaces do windows é comum começarmos a digitar algo e o windows completar o que estamos digitando. É possível fazer isso também com a combobox, o único truque existente está no algoritimo.

Precisaremos controlar a digitação dentro da combobox. A cada tecla digitada precisaremos fazer uma pesquisa dentro da comobo para verificar se existe algum item que se inicie com o que está sendo digitado.

Se encontrarmos, devemos preencher o text da combo com o item digitado. Mas devemos tomar um cuidado : O trecho que for completado por nós precisa se manter selecionado. Isso porque o item que encontramos pode não ser o que o usuário deseja. Nesse caso, mantendo o trecho selecionado quando o usuário teclar a próxima letra tudo o que inserimos na caixa será apagado, fazendo que que o recurso de auto-complete (nome bonito, né ?) não atrapalhe a digitação do usuário.

Para isso utilizaremos as propriedades SelStart e SelLength que nos permitem determinar dentro de uma caixa qual parte do texto está (ou estará) selecionada.

Por fim, precisamos ter cuidado com o backspace. Quando o backspace for pressionado não devemos fazer a busca, pois isso atrapalharia a digitação. Não temos como identificar o backspace no evento change, só no keypress. Devido a isso o código abaixo utiliza uma variável chamada "apagando" como um flag para determinar se a última tecla pressionada foi um backspace.

Assim sendo, o código abaixo implementa o evento change e keypress da combo, conforme o explicado acima :


Dim apagando As Boolean

Private Sub Combo1_Change()
If Not apagando Then
Dim t As String
For a = 0 To Combo1.ListCount - 1
If UCase(Left(Combo1.List(a), Len(Combo1.Text))) = UCase(Combo1.Text) Then
t = Len(Combo1.Text)
Combo1.Text = Combo1.List(a)
Combo1.SelStart = t
Combo1.SelLength = Len(Combo1.List(a)) - t
End If
Next
Else
apagando = False
End If

End Sub

Private Sub Combo1_KeyPress(KeyAscii As Integer)
If KeyAscii = 8 Then
apagando = True
End If
End Sub

Nome :
E-mail:
Comentarios :
 
 
Os Últimos Comentários
data: 3/17/2017 8:41:00 AM
nome: deed
email: info@tbju.com
comentário:
dedede

data: 10/15/2016 5:29:00 AM
nome: BVHMZKDuki
email: jimos4581rzt@hotmail.com
comentário:
nBZb1a http://www.FyLitCl7Pf7kjQdDUOLQOuaxTXbj5iNG.com

data: 10/15/2016 5:10:00 AM
nome: fXjpqsKSwbI
email: jimos4581rzt@hotmail.com
comentário:
CSS4Sa http://www.FyLitCl7Pf7kjQdDUOLQOuaxTXbj5iNG.com

data: 8/9/2016 2:53:00 AM
nome: sICmoebcmRVRGMgnIws
email: jimos4581rt@hotmail.com
comentário:
AnH0zJ http://www.FyLitCl7Pf7kjQdDUOLQOuaxTXbj5iNG.com

data: 8/8/2016 7:47:00 AM
nome: OMpuvNnKEyQKhA
email: jimos4581rt@hotmail.com
comentário:
7owiC2 http://www.FyLitCl7Pf7kjQdDUOLQOuaxTXbj5iNG.com

 1  
Dicas
Dica do Dia
Receba Dicas Por Email
E-mail :  
 


 (help)
Aceito receber informativos do devASPNet, informações de eventos e treinamentos

Veja Quais Informativos Você Receberá

Pesquisar Dicas
Pesquisar Artigos, Dicas e Noticias

Banco de Dados
Algumas Entrevistas
Links Importantes

Búfalo Informática, Treinamento e Consultoria
R. Alvaro Alvim, 37/920 Centro - Cinelândia - Rio de Janeiro Cep: 20031-010
Tel : (21) 2262-1368 (21) 9240-5134 E-mail : Contato@bufaloinfo.com.br