Autor Tema: Manipular Listview desde el teclado  (Leído 3460 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Manipular Listview desde el teclado
« 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?
« última modificación: Octubre 26, 2011, 08:25:38 am por Bazooka »
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

79137913

  • Megabyte
  • ***
  • Mensajes: 185
  • Reputación: +21/-4
  • 4 Esquinas
    • Ver Perfil
    • Eco.Resumen Resumenes Cs. Economicas
Re:Manipular Listview desde el teclado
« Respuesta #1 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 esta expresado no insultar a nadie y referirse que el codigo es de Jardin de niños no es lo apropiado.
« última modificación: Octubre 26, 2011, 12:02:53 pm por xkiz ™ »
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

 79137913                          *Shadow Scouts Team*                                                          Resumenes Cs.Economicas

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:Manipular Listview desde el teclado
« Respuesta #2 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

« última modificación: Octubre 26, 2011, 12:04:36 pm por xkiz ™ »
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Manipular Listview desde el teclado
« Respuesta #3 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
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

seba123neo

  • Terabyte
  • *****
  • Mensajes: 763
  • Reputación: +88/-5
    • Ver Perfil
Re:Manipular Listview desde el teclado
« Respuesta #4 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.

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:Manipular Listview desde el teclado
« Respuesta #5 en: Octubre 26, 2011, 04:29:23 pm »
Buenisimo gracias a todos!!
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.