Cómo crear un ComboBox de búsqueda incremental

Seleccione idioma Seleccione idioma
Id. de artículo: 154076 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

El ComboBox se distribuye con Visual Basic tiene funcionalidad simplista, mientras que muchos controles de terceros ofrecen características adicionales adicionales. Una de estas características de otros fabricantes es la capacidad del control para buscar texto y buscar entradas que comienzan con ese texto mientras escribe texto en el control ComboBox.

Por ejemplo, si escribe las letras "He", el control ComboBox buscará la primera entrada de texto comenzando con "He" y se muestra el texto completo, como "Hello World".

A continuación es un ejemplo código que muestra cómo lograr esta funcionalidad con el control ComboBox que se incluye con Visual Basic.

Más información

Ejemplo de paso a paso

  1. Inicie un proyecto nuevo de Visual Basic. Se creará Form1 de manera predeterminada.
  2. Coloque un control ComboBox en el formulario.
  3. Agregue el código siguiente a la ventana de código de Form1:
    Option Explicit
    
       Private Const WM_SETREDRAW = &HB
       Private Const KEY_A = 65
       Private Const KEY_Z = 90
       #If Win32 Then
    
       Private Declare Function SendMessage Lib "user32" Alias _
           "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
           ByVal wParam As Long, lParam As Long) As Long
    
       #Else
    
       Private Declare Function SendMessage Lib "User" ( _
           ByVal hwnd As Integer, ByVal wMsg As Integer, _
           ByVal wParam As Integer, lParam As Any) As Long
    
       #End If
       Private Sub Combo1_KeyUp(KeyCode As Integer, Shift As Integer)
         Dim sComboText As String
         Dim iLoop As Integer
         Dim sTempString As String
         Dim lReturn As Long
         If KeyCode >= KEY_A And KeyCode <= KEY_Z Then
           'only look at letters A-Z
           sTempString = Combo1.Text
           If Len(sTempString) = 1 Then sComboText = sTempString
           lReturn = SendMessage(Combo1.hWnd, WM_SETREDRAW, False, 0&)
           For iLoop = 0 To (Combo1.ListCount - 1)
             If UCase((sTempString & Mid$(Combo1.List(iLoop), _
               Len(sTempString) + 1))) = UCase(Combo1.List(iLoop)) Then
               Combo1.ListIndex = iLoop
               Combo1.Text = Combo1.List(iLoop)
               Combo1.SelStart = Len(sTempString)
               Combo1.SelLength = Len(Combo1.Text) - (Len(sTempString))
               sComboText = sComboText & Mid$(sTempString, Len(sComboText) + 1)
               Exit For
             Else
               If InStr(UCase(sTempString), UCase(sComboText)) Then
                 sComboText = sComboText & Mid$(sTempString, Len(sComboText) _
                 + 1)
                 Combo1.Text = sComboText
                 Combo1.SelStart = Len(Combo1.Text)
               Else
                 sComboText = sTempString
                 End If
             End If
           Next iLoop
           lReturn = SendMessage(Combo1.hWnd, _
           WM_SETREDRAW, True, 0&)
         End If
       End Sub
    
       Sub Form_load()
         Combo1.AddItem "Alpha"
         Combo1.AddItem "Beta"
         Combo1.AddItem "Charlie"
         Combo1.AddItem "Delta"
         Combo1.AddItem "Dingo"
       End Sub
    					
  4. En el menú Ejecutar, haga clic en Inicio o presione la tecla F5 para ejecutar el programa.
Si escribe la letra "D", observará que "Delta" es el texto activo en el cuadro combinado. Si a continuación, escribe una "I", se mostrará el texto "Dingo". Con todas las letras siguientes que escriba, la siguiente palabra en la lista del ComboBox comenzará con la secuencia de caracteres que ha escrito.

Nota : la propiedad de estilo del control debe ser "0 - combinado de lista desplegable" para que funcione correctamente.

Propiedades

Id. de artículo: 154076 - Última revisión: miércoles, 11 de octubre de 2006 - Versión: 3.3
La información de este artículo se refiere a:
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Visual Basic 4.0 Standard Edition
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 4.0 16-bit Enterprise Edition
  • Microsoft Visual Basic 4.0 32-Bit Enterprise Edition
Palabras clave: 
kbmt kbhowto KB154076 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 154076

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com