Portal    Foro    Buscar    FAQ    Registrarse    Conectarse

Funcion Para Buscar En Un ComboBox Mientras Se Escribe

Funcion Para Buscar En Un ComboBox Mientras Se Escribe
Artículo
Responder citando    Descargar mensaje  
Mensaje 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




 
angelnu - Ver perfil del usuario Enviar mensaje privado  
angelnu [ Viernes, 25 Febrero 2011, 21:16 ]
 


Funcion Para Buscar En Un ComboBox Mientras Se Escribe
Comentarios
Responder citando    Descargar mensaje  
Mensaje 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




 
vuott - Ver perfil del usuario Enviar mensaje privado  
vuott [ Viernes, 31 Octobre 2014, 19:27 ]
Mostrar mensajes anteriores:    
 
Publicar nuevo tema  Responder al tema  Página 1 de 1
 
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 



 

cron