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

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Autocompletar combobox
RAIANE
SUZANO
PS - BRASIL
ENUNCIADA !
Postada em 17/05/2006 16:39 hs            
Olá pessoal, gostaria de saber se alguém sabe como usar o recurso de autocompletar do combobox. Ex. eu tenho na propriedade list do combo várias cidades quando eu digitar a primeira letra da cidade gostaria que ele preenchesse o restante automaticamente.
 
desde já agradeço
uma abraço a todos
   
¤Dado¤
RIO
RJ - BRASIL
ENUNCIADA !
Postada em 17/05/2006 20:39 hs         
Olá!
 
Você pode adicionar o MS Forms 2.0. Esta combo já vem com o recurso de autocompletar além de poder usá-la em flat (a default do vb6 não permite flat).
 
[ ]s
 
 
Aldo.
   
JoaoNeto
UBERLANDIA
MG - BRASIL
ENUNCIADA !
Postada em 17/05/2006 23:13 hs            
A melhor maneira é usando API, sem usar outros controles...
 
olha só:
Declare num módulo:
#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
 
Public Sub CboAutoComplete(CboBox As ComboBox, Key As Integer)
    Dim CB As Long
    Dim FindString As String
    Const CB_ERR = (-1)
    Const CB_FINDSTRING = &H14C
    If Key < 32 Or Key > 127 Then Exit Sub
    If CboBox.SelLength = 0 Then
        FindString = CboBox.Text & Chr$(Key)
    Else
        FindString = Left$(CboBox.Text, CboBox.SelStart) & Chr$(Key)
    End If
    CB = SendMessage(CboBox.hwnd, CB_FINDSTRING, -1, ByVal FindString)
    If CB <> CB_ERR Then
        With CboBox
        .ListIndex = CB
        .SelStart = Len(FindString)
        .SelLength = Len(.Text) - .SelStart
        End With
    End If
    Key = 0
End Sub
 
dae no Keypress do Combo:
 
Private Sub Cidade_KeyPress(KeyAscii As Integer)
    CboAutoComplete Cidade, KeyAscii
End Sub
 
E pronto !!
 
mas cuidado, pq essa função bloqueia qualquer tecla q não possua caractere no combo.
 
 
 

Jamais diga que sabe tudo, pois sempre haverá alguém que sabe mais que você.
   
>>|Bedin|<<
SANTO ANDRE
SP - BRASIL
ENUNCIADA !
Postada em 18/05/2006 15:03 hs            
         Duas rotinas, a Combo1_Change() que auto preenche o combo de acordo com o texto encontrado e uma outra Combo1_LostFocus() que impede que o Compo perca o focus se o texto digitado não existir...

PS: Declare as variaveis... OK?

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

Const CB_FINDSTRING As Long = &H14C
Const CB_ERR As Long = (-1)

Private Sub Combo1_Change()
  With Combo1
    'Procura pelo texto já digitado
    strPartial = .Text
    I = SendMessage(.hwnd,CB_FINDSTRING,-1, _
        ByVal strPartial)

    'Se achou, adiciona o resto do Texto
    If I <> CB_ERR Then
      'Pega o texto inteiro
      strTotal = .List(I)

      'Compute number of unmatched characters
      j = Len(strTotal) - Len(strPartial)
      If j <> 0 Then
        'Adiciona o resto da string encontrada
        m_bEditFromCode = True
        .SelText = Right$(strTotal, j)

        'Marca os caracteres adicionados
        .SelStart = Len(strPartial)
        .SelLength = j
      End If
    End If
  End With
End Sub

Private Sub Combo1_LostFocus()
  With Combo1
    if Len(.Text) then
      'Procura pelo texto digitado
      strPartial = .Text
      I = SendMessage(.hwnd,CB_FINDSTRING,-1,ByVal strPartial)
      'Se não achou, retorna      o focus para o Combo
      If I = CB_ERR Then .SetFocus
    End if
  End With
End Sub

origem: http://www.silicio.com.br

.:Rodrigo Bedin:.
   
Página(s): 1/1    

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