Funcion para autocompletar en combos

Manuel
03 de Octubre del 2004
Hola, he estado buscando una funcion de autocompletar, asi como la de Office, que al poner una letra se valla directamente al primer registro almacenado con esa letra y amedida que vas poniendo mas letras se vallan reduciendo las opciones y asi encontrar la opcion que el cliente busca. Ejemplo:
en un combo tengo los nombre de clientes Arturo, Angel, Antonio, Angelica.... al darle yo en el combobox se posicionara en el primer registro ordenado alfabeticamente y amedida que le voy dando mas letras va encontrando el nombre que yo quiero....Bueno espero no sea mucho lo que estoy pidiendo...de antemano GRACIAS.

Manuel Tabardillo

jajajaj
03 de Octubre del 2004
eres un pendejo jajaja no sabes ni que oda con visual basic jajaja eres un idiota

Bartolom
03 de Octubre del 2004
Esto apareció hace algún tiempo en el foro, te copio el código tal cual estaba:

Debes tener un form con un comobobox llamado Combo1.
Luego, en el código del form escribes esto:

Dim Combo1Borrado As Boolean

Private Sub Combo1_Change()
Static YaEstoy As Boolean

On Local Error Resume Next

If Not YaEstoy Then
YaEstoy = True
unCombo_Change Combo1.Text, Combo1
YaEstoy = False
End If
Err = 0
End Sub

Private Sub Combo1_KeyDown(KeyCode As Integer, Shift As Integer)

unCombo_KeyDown KeyCode
End Sub

Private Sub Combo1_KeyPress(KeyAscii As Integer)

unCombo_KeyPress KeyAscii
End Sub

Private Sub unCombo_KeyDown(KeyCode As Integer)

If KeyCode = vbKeyDelete Then
Combo1Borrado = True
Else
Combo1Borrado = False
End If
End Sub

Private Sub unCombo_KeyPress(KeyAscii As Integer)

'si se pulsa Borrar... ignorar la búsqueda al cambiar
If KeyAscii = vbKeyBack Then
Combo1Borrado = True
Else
Combo1Borrado = False
End If
End Sub

Private Sub unCombo_Change(ByVal sText As String, elCombo As ComboBox)
Dim i As Integer, L As Integer

If Not Combo1Borrado Then
L = Len(sText)
With elCombo
For i = 0 To .ListCount - 1
If StrComp(sText, Left$(.List(i), L), 1) = 0 Then
.ListIndex = i
.Text = .List(.ListIndex)
.SelStart = L
.SelLength = Len(.Text) - .SelStart
Exit For
End If
Next
End With
End If
End Sub

Private Sub Form_Load()

Combo1.AddItem "Carlos"
Combo1.AddItem "Jorge"
Combo1.AddItem "Miguel"
Combo1.AddItem "Javier"
Combo1.AddItem "Marta"
Combo1.AddItem "Pedro"
Combo1.AddItem "Abel"
Combo1.AddItem "Fernando"
Combo1.AddItem "Rafa"
Combo1.AddItem "Jose carlos"
End Sub


Saludos!
Bartolom
Chile

Jerryfua
03 de Octubre del 2004
Private Sub TextNombre_CLICK()
rsprovedor.Index = "NOMBRE"
rsprovedor.Seek "=", TextNombre.Text
If rsprovedor.NoMatch Then
Else
TextNumero.Text = rsprovedor.Fields("NUMERO")
TextImporte.SetFocus
End If
End Sub