Autor Tema: ucListview duda  (Leído 3396 veces)

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

..::Carlos::..

  • Bytes
  • *
  • Mensajes: 44
  • Reputación: +0/-0
    • Ver Perfil
ucListview duda
« en: Marzo 17, 2011, 03:59:15 am »
hola mi pregunta es como hago para buscar una palabra en un uclistview y cuando la encuentre quede seleccionada

gracias muchas gracias por su colaboracion ;)

raul338

  • Terabyte
  • *****
  • Mensajes: 894
  • Reputación: +62/-8
  • xD fan!!!!! xD
    • Ver Perfil
    • Raul's Weblog
Re:ucListview duda
« Respuesta #1 en: Marzo 17, 2011, 09:33:43 am »
Cuando puse el ucListView con FilterBar desarrolle esta rutina para "buscar"

Código: (vb) [Seleccionar]
Private Sub ucListView1_FilterTimeout(ByVal Column As Integer)
    With ucListView1
        ' Buscamos en la columna
        If .ColumnFilterText(Column) <> "" Then
            ' m_filter es una variable temporal de lo que alguna vez busco, lo usamos para saber
            ' si esta buscando el mismo termino (y buscar el siguente item que se asemeje) o
            ' empezar una nueva busqueda
            ' En caso de busqueda nueva, empezamos a buscar desde el principio, sino
            ' a partir desde el ultimo item encontrado
            If m_filter <> .ColumnFilterText(Column) Then m_lastSearched = -1
            m_filter = .ColumnFilterText(Column)
            m_lastSearched = BuscarItem(.ColumnFilterText(Column), Column, m_lastSearched, True, True)
            If m_lastSearched >= 0 Then
                ' En caso de que se haya encontrado, lo seleccionamos, y aseguramos que quede visible
                .ItemSelected(m_lastSearched) = True
                Call .ItemEnsureVisible(m_lastSearched)
                .SetFocus
            End If
        End If
    End With
End Sub

' Funcion que recorre todos los items de la columna "Column" y los compara con sText, Partial define si debe ser exacto (false) o si solo debe tenerlo (true, uso InStr). Warp es, en caso de que se empieze a buscar desde el item 10 (ej) y llegamos al final de la lista, emepzar de nuevo desde el primer item hasta el item 10
Private Function BuscarItem(ByVal sText As String, ByVal Column As Integer, Optional startIndex As Integer = -1, Optional Partial As Boolean = True, Optional ByVal Warp As Boolean = False) As Integer
    BuscarItem = -1
    Dim i As Integer, res As Integer
    With ucListView1
        For i = startIndex + 1 To .Count
            If Column = 0 Then
                If Partial Then
                    res = InStr(1, .ItemText(i), sText, vbTextCompare)
                    If res > 0 Then BuscarItem = i: Exit Function
                Else
                    If StrComp(.ItemText(i), sText, vbTextCompare) = 0 Then BuscarItem = i: Exit Function
                End If
            Else
                If Partial Then
                    res = InStr(1, .SubItemText(i, Column), sText, vbTextCompare)
                    If res > 0 Then BuscarItem = i: Exit Function
                Else
                    If StrComp(.SubItemText(i, Column), sText, vbTextCompare) = 0 Then BuscarItem = i: Exit Function
                End If
            End If
        Next
        If Warp And startIndex > -1 Then
            For i = 0 To startIndex
                If Column = 0 Then
                If Partial Then
                    res = InStr(1, .ItemText(i), sText, vbTextCompare)
                    If res > 0 Then BuscarItem = i: Exit Function
                Else
                    If StrComp(.ItemText(i), sText, vbTextCompare) = 0 Then BuscarItem = i: Exit Function
                End If
            Else
                If Partial Then
                    res = InStr(1, .SubItemText(i, Column), sText, vbTextCompare)
                    If res > 0 Then BuscarItem = i: Exit Function
                Else
                    If StrComp(.SubItemText(i, Column), sText, vbTextCompare) = 0 Then BuscarItem = i: Exit Function
                End If
            End If
            Next
        End If
    End With
End Function

Espero que te sirva! Y esta comentado como para ayudarte

..::Carlos::..

  • Bytes
  • *
  • Mensajes: 44
  • Reputación: +0/-0
    • Ver Perfil
Re:ucListview duda
« Respuesta #2 en: Marzo 17, 2011, 05:25:10 pm »
gracias amigo voy a probarlo y te digo como te va