Hledání v komponentě ListView

Postup:
V modulu deklarujte zapište následující funkci:

Public Function PartialSearch(LVW As ListView, Srch As String) As Long

        Dim Founded As Boolean

        If LVW.ListItems.Count = 0 Then

          'V ListView komponentu nejsou žádné položky, vrátíme 0
            PartialSearch = 0
            Exit Function
        End If
        If Trim(Srch) = "" Then

           
'Prázdný řetězec pro vyhledávání, pozice v ListView na první řádek
            PartialSearch = 1
            Exit Function
        End If
        Screen.MousePointer = 11
        DoEvents
       
'Zobrazení hodin
      Delka = Len(Trim(Srch))  'Zjištění délky řetězce
        Founded = False  'Zatím nenalezeno
        For I = 1 To LVW.ListItems.Count
            If UCase(Mid(LVW.ListItems(I).Text, 1, Delka)) = UCase(Srch) Then
               
'Hledání v TEXT položce řádku a nalezeno, vrátím pozici řádku
                Founded = True
                PartialSearch=I
                Exit For
            End If
            For J = 1 To LVW.ColumnHeaders.Count - 1
                If UCase(Mid(LVW.ListItems(I).SubItems(J), 1, Delka)) = UCase(Srch) Then
                   
'Hledání v SUBITEMS, nalezeno, ukončím hledání
                    Founded = True
                    Exit For
                End If
            Next J
            If Founded Then
               
'Hledání úspěšné, vrátím číslo řádku
                PartialSearch = I
                Exit For
            End If
        Next I
        If Not Founded Then
           
'Hledání neúspěšné, skok na první řádek
            PartialSearch = 1
        End If
        Screen.MousePointer = 0

End Function

Použití:
do formuláře k ListView komponentu přidejte TextBox. Na jeho událost Change zapište:

Private Sub GetSrch_Change()

   X = PartialSearch(Me.Seznam, GetSrch.Text)
    If X > 0 Then
        Seznam.SelectedItem = Seznam.ListItems(X)
        Seznam.SelectedItem.EnsureVisible
    End If

End Sub

Zpět

Autor: The Bozena