|
Das ListView-Steuerelement aus den Microsoft Common Controls bietet im Gegensatz zum TreeView-Steuerelement keine Methode an, aus der Sie die Anzahl der vollständig sichtbaren Zeilen auslesen könnten. Ein echtes Nachrüsten der Methode GetVisibleCount ist natürlich nicht möglich, aber eine kleine Hilfsfunktion erfüllt den gleichen Zweck.
Die Hilfsfunktion ListViewGetVisibleCount sendet die Nachricht LVM_GETCOUNTPERPAGE über die API-Funktion SendMessage an das im ersten Parameter übergebene ListView-Steuerelement und erhält so die gesuchte Anzahl der vollständig sichtbaren Zeilen zurück, wenn beim ListView der View-Modus auf lvwList oder lvwReport gesetzt ist. Anderenfalls wird die Gesamtzahl der im ListView enthaltenen ListItems zurückgegeben.
Wenn Sie zusätzlich den optionalen Parameter LimitToCount auf True setzen, wird die zurückgegebene Zeilenzahl gegebenenfalls auf die Anzahl der tatsächlich vorhandenen ListItems reduziert.
Private Declare Function SendMessage Lib "user32" _
Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, lParam As Any) As Long
Public Function ListViewGetVisibleCount(ListView As ListView, _
Optional ByVal LimitToCount As Boolean) As Long
Dim nCount As Long
Dim nItemsCount As Long
Const LVM_GETCOUNTPERPAGE = &H1028
With ListView
nCount = SendMessage(.hwnd, LVM_GETCOUNTPERPAGE, 0&, ByVal 0&)
If LimitToCount Then
nItemsCount = .ListItems.Count
If nCount > nItemsCount Then
nCount = nItemsCount
End If
End If
End With
ListViewGetVisibleCount = nCount
End Function
|