Lisbox usando un control TextBox y un List

En este proyecto simulamos un ListBox que es un campo que a medida que se escribe despliega una lista con las coincidencias encontradas.

En el proyecto se uso un TextBox que es donde el usuario escribe las palabras claves y se uso un List para mostrar la lista de coincidencias, este proyecto hace una consulta a una base de datos que contiene un tabla Alumnos.

Al escribir sobre el campo de la izquierda se despliega en List con las coincidencias.

Al presionar en el teclado la tecla flecha Abajo automáticamente se pasa a la lista para poder moverse en el listado de coincidencias. Los procedimientos usados fueron:

La Conexión:

Dim ConexionADO As New ADODB.Connection
Dim Record As New ADODB.Recordset

Sub Conectar()
    ConexionADO.CursorLocation = adUseClient
    ConexionADO.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & App.Path & "/BaseDatos.accdb" _
            & ";Jet OLEDB:Database Password="
End Sub

Procedimiento que carga el List.

Sub MostarLista()
    
    'Se filtra usando like para que busque todas las coincidencias que tengas los caracteres escritos en el campo txtFiltrar
    sql = "Select * From Alumnos Where nombre_apellidos_al Like '%" & txtFiltrar.Text & "%' order by nombre_apellidos_al ASC "
    Set Record = ConexionADO.Execute(sql)
    If Len(txtFiltrar.Text) > 2 Then  'solo se muestra la lista si hay mas de 2 carácteres
       listAlumnos.Clear 'Se limpia el List
       If Record.RecordCount > 0 Then 'Si se encontraron registros
            Indice = 0
            Do While Not Record.EOF
               listAlumnos.AddItem Record("nombre_apellidos_al") 'se agrega el nombre del alumno a la lista
               listAlumnos.ItemData(Indice) = Record("codigo_al") ' se guarda el Codigo del alumno
               Record.MoveNext
               Indice = Indice + 1
            Loop
            listAlumnos.Top = 600 'Posición superior del control
            listAlumnos.Left = 360 'Posición derecha
            listAlumnos.Visible = True
       Else
          listAlumnos.Visible = False 'si no hay registros se oculta la lista
       End If
    Else
       listAlumnos.Visible = False 'si no son mas de 2 caracteres se oculta la lista
    End If
    
End Sub

Procedimiento que llena los campos dependiendo del Alumno seleccionado en la lista:

Sub FiltrarAlumnosLista()
     If listAlumnos.ListIndex >= 0 Then  'si selecciono un elemento de la lista
            CodAlumn = listAlumnos.ItemData(listAlumnos.ListIndex)  'se optiene el codigo del alumno seleccionado en la lista
            Record.Filter = "codigo_al=" & Val(CodAlumn) 'se filtra el Recorset por el codigo del alumno
            If Record.RecordCount > 0 Then 'si se encontraron registros se llenan los campos
               txtFiltrar.Text = listAlumnos.Text
               txtCodigo.Text = Record("codigo_al")
               txtNombre.Text = Record("nombre_apellidos_al")
               txtTelefono.Text = Record("telefono")
               txtDireccion.Text = Record("direccion")
            Else
                Call LimpiarCampos
            End If
      Else
        Call LimpiarCampos
      End If
End Sub

Eventos del Control List:

Private Sub listAlumnos_Click()
    Call FiltrarAlumnosLista
End Sub

Private Sub listAlumnos_KeyUp(KeyCode As Integer, Shift As Integer)
    If KeyCode = 40 Or KeyCode = 38 Then 'Si se preciona flecha abajo o flecha Arriba
       Call FiltrarAlumnosLista
    End If
    If KeyCode = 13 Then 'Si se preciona Enter
       listAlumnos.Visible = False
       txtCodigo.SetFocus
    End If
    If KeyCode = 27 Then 'Si Se preciona ESC
       txtFiltrar.SetFocus
       listAlumnos.Visible = False
    End If
End Sub

Eventos del control Filtrar:

Private Sub txtFiltrar_GotFocus()
    txtFiltrar.SelStart = 0
    txtFiltrar.SelLength = Len(txtFiltrar.Text)
End Sub

Private Sub txtFiltrar_KeyUp(KeyCode As Integer, Shift As Integer)
    
    Call MostarLista
    If KeyCode = 40 Then
       If listAlumnos.Visible = True Then
          listAlumnos.SetFocus
       End If

    End If
End Sub

Este es el código del Proyecto: Descargar

 

Total Page Visits: 3680 - Today Page Visits: 1

Deja una respuesta