Visual Basic Foro

Programación => Visual Basic 6 => Mensaje iniciado por: Bazooka en Octubre 26, 2011, 08:23:32 am

Título: Manipular Listview desde el teclado
Publicado por: Bazooka en Octubre 26, 2011, 08:23:32 am
Hola amigos tengo en un listview cargado con un listado de categorias con su ID y su Descripción como muestra la imagen y quisiera que estando el foco en el listview al presionar la tecla P por ejemplo se vaya la seleccion al primer item que coincida con esa letra del campo Decripcion.

Es posible?
(http://www.misimagenesgratis.com.ar/images/listCat.jpg)
Título: Re:Manipular Listview desde el teclado
Publicado por: 79137913 en Octubre 26, 2011, 10:47:24 am
HOLA!!!

Es muy posible... pero es codigo de kinder gardenn..

1ro El Listview ya trae esa funcion. (para la primera columna)

Tenes que captar (catch) la letra, convertirla en letra luego hacer un bucle que compare con los items y apenas vea la letra capturada salga del bucle y seleccione ese indice.

GRACIAS POR LEER!!!

Edito:(xkiz)
esto es un foro para ayudar a otras personas no para poner en duda el intelecto de los demas.
en Reglas del Foro - Leer (http://leandroascierto.com/foro/index.php?topic=3.0) esta expresado no insultar a nadie y referirse que el codigo es de Jardin de niños no es lo apropiado.
Título: Re:Manipular Listview desde el teclado
Publicado por: Bazooka en Octubre 26, 2011, 11:05:08 am
Gracias por tu respuesta!! --No tenemos todo la posibilidad de estar  tan avanzados como vos para que te refieras a que esto es para niños de jardin...
Juntando Mensajes.

Gracias al 79137913 que me trato de infantil encontré la solución la verdad que era bastante fácil pero a veces uno anda medio bloqueado con todos los kilombos de la cabeza! , aquí posteo el codigo por ai alguno le sirve a futuro.


Código: (vb) [Seleccionar]
Private Sub lvwListados_KeyDown(KeyCode As Integer, Shift As Integer)
Dim n
Dim letra

letra = Chr(KeyCode)
For n = 1 To Me.lvwListados.ListItems.Count
    If letra = Left(lvwListados.ListItems(n).SubItems(1), 1) Then
        lvwListados.ListItems(n).Selected = True
        lvwListados.ListItems(n).EnsureVisible
        Exit For
    End If
Next

End Sub

Título: Re:Manipular Listview desde el teclado
Publicado por: E N T E R en Octubre 26, 2011, 12:25:55 pm
Yo tengo este Miguel Este metodo busca en cualqueir parte del ListView por ejemplo si en columna 2 tenes CAJAS DE CHAPA si escribis CHAPA igual te encuentra.

Código: [Seleccionar]
Private Sub Command1_Click()
   
    Dim ret As Long
   
    If Listview1.ListItems.Count = 0 Then
       
        Text1.SetFocus
       
    Else
   
        ret = Buscar(Listview1, Text1.Text, 1, False)
        If ret <> 0 Then
            Listview1.ListItems(ret).Selected = True
            Listview1.ListItems(ret).EnsureVisible
        Else
            'MsgBox "Dato no encontrado", vbExclamation
        End If
       
        Text1.SetFocus
       
    End If

End Sub


Function Buscar(Lv As ListView, Cadena As String, nCol As Integer, bFraseCompleta As Boolean) As Long
   
    Dim i As Long
    Dim iStart As Long
    Dim oItem As ListItem
   
    If Not Lv.SelectedItem Is Nothing Then
       iStart = Lv.SelectedItem.Index + 1
    Else
       iStart = 1
    End If
   
    With Lv
   
        For i = iStart To Lv.ListItems.Count
           
            Set oItem = Lv.ListItems(i)
           
            Dim sItem As String
           
            If nCol = 0 Then
                sItem = Lv.ListItems(i)
            Else
                sItem = oItem.SubItems(nCol)
            End If
           
            If bFraseCompleta = False Then
               Dim nPos As Integer
               
               nPos = InStr(LCase(sItem), LCase(Cadena))
               
               If nPos <> 0 Then
                  Buscar = oItem.Index
                  oItem.EnsureVisible
                  Exit For
               End If
           
            ElseIf bFraseCompleta = True Then
                 If LCase(sItem) = LCase(Cadena) Then
                  Buscar = oItem.Index
                  oItem.EnsureVisible
                  Exit For
                 End If
            End If
           
        Next
   
    End With
   
    Set Lv.SelectedItem = Nothing
   
End Function
Título: Re:Manipular Listview desde el teclado
Publicado por: seba123neo en Octubre 26, 2011, 12:37:45 pm
usa la api SendMessage para buscar en un listview, es mucho mas rapido y no tenes bucles, en recursosvisualbasic tenes ejemplos.
Título: Re:Manipular Listview desde el teclado
Publicado por: Bazooka en Octubre 26, 2011, 04:29:23 pm
Buenisimo gracias a todos!!