Funcion Para Buscar En Un ComboBox Mientras Se Escribe


Objetivo: Funcion Para Buscar En Un ComboBox Mientras Se Escribe
Hola, estoy haciendo una función para buscar en un comboBox mientras se escribe, mas o menos funciona, quisiera que se resaltase el texto encontrado, lo hago mediante
cmbCombo.Select(ipos, Len(cmbCombo.Text) - ipos)


pero al restaurar la posición del cursor, el texto seleccionado se quita y no encuentro manera.

La función es

PUBLIC SUB Buscar_Combo(cmbCombo AS ComboBox)
'Funcion para buscar en un combobox mientras se escribre
'se puede poner en un modulo y llamar desde el ComboBox_KeyPress() pasando
'el combobox como parametro

DIM scad AS String, ipos AS Integer
DIM aa AS Boolean, idd AS Integer
DIM SList AS String[]
' Si se pulsan teclas de control o el combobox es solo lectura salimos sin hacer nada
IF Asc(Key.Text) < 32 OR Key.Code = key.Delete OR cmbCombo.ReadOnly THEN RETURN
ipos = cmbCombo.Pos ' Guardamos la posicion del cursor

scad = Mid(cmbCombo.Text, 1, ipos) 'guardamos como cadena la izquierda del cursor

' PRINT "scad = " & scad
SList = cmbCombo.List
' bucle para buscar en el combo
FOR idd = 0 TO cmbCombo.List.Count - 1
aa = cmbCombo.List[idd] LIKE scad & Key.Text & "*"
IF aa THEN BREAK ' si hay coincidencia se sale del bucle
NEXT

IF aa THEN ' se ha encontrado coincidencia
STOP EVENT ' cancelar el evento para no insertar la tecla pulsada
scad &= Key.Text
Object.Lock(cmbCombo) ' Bloquear el combo para que no dispare el evento Click o Change
cmbCombo.Text = SList[idd] ' asignar al combo la coincidencia
ipos = Len(scad)
cmbCombo.Select(ipos, Len(cmbCombo.Text) - ipos) ' Seleccionar la derecha del cursor
cmbCombo.Pos = ipos ' restaurar el cursor
' PRINT "Seleccion = " & cmbCombo.Selection.Text & "longitud = " & ipos
Object.UNLOCK(cmbCombo) ' desbloquear el combo para que reciba eventos
ELSE ' no hay coincidencia
STOP EVENT ' cancelar el evento para no insertar la tecla pulsada
scad &= Key.Text
Object.Lock(cmbCombo) ' Bloquear el combo para que no dispare el evento Click o Change
cmbCombo.Text = scad
Object.UNLOCK(cmbCombo) ' desbloquear el combo para que reciba eventos
ENDIF

END

Perfil MP  
Objetivo: Re: Funcion Para Buscar En Un ComboBox Mientras Se Escribe
...la mi sugerencia no es una función pero sugeriría esta solución:
Public Sub Form_Open()

ComboBox1.Tag = 1

End


Public Sub ComboBox1_Change()

With ComboBox1
.Text = ComboBox1[.List.Find(String.Left(.Text, .Pos) & "*", gb.Like)].Text
.Pos = .Tag
End With

End


Public Sub ComboBox1_KeyRelease()

If Key.Code < 127 Then
Inc ComboBox1.Tag
Else
ComboBox1.Tag = ComboBox1.Pos + 1
Endif

End

Perfil MP  

Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.868s (PHP: -86% SQL: 186%)
Consultas SQL: 45 - Debug off - GZIP Activado