Hi Timmo,
do you have a simple sample how to use the
filter-properties and the filter bar?
regards
alphi
PS: wish you a merry christmas
Filter
Re: Filter
One possible implementation:

Code: Select all
Private Type ANIMALLISTITEM
strName As String
strClass As String
bVisibleByName As Boolean
bVisibleByClass As Boolean
lItemID As Long
End Type
Private animals() As ANIMALLISTITEM
Private Sub Form_Load()
Dim i As Long
ReDim animals(0 To 9) As ANIMALLISTITEM
animals(0).strName = "Ape"
animals(0).strClass = "Mammalia"
animals(1).strName = "Cetacea"
animals(1).strClass = "Mammalia"
animals(2).strName = "Eagle"
animals(2).strClass = "Aves"
animals(3).strName = "Electric eel"
animals(3).strClass = "Actinopterygii"
animals(4).strName = "Emperor scorpion"
animals(4).strClass = "Arachnida"
animals(5).strName = "Fly"
animals(5).strClass = "Insecta"
animals(6).strName = "Hummingbird"
animals(6).strClass = "Aves"
animals(7).strName = "King Cobra"
animals(7).strClass = "Reptilia"
animals(8).strName = "Mosquito"
animals(8).strClass = "Insecta"
animals(9).strName = "Odonata"
animals(9).strClass = "Insecta"
With lv.Columns
.Add "Animal"
.Add "Class"
End With
With lv.ListItems
For i = 0 To 9
animals(i).bVisibleByClass = True
animals(i).bVisibleByName = True
With .Add(animals(i).strName)
animals(i).lItemID = .ID
.SubItems(1).Text = animals(i).strClass
End With
Next i
End With
End Sub
Private Sub lv_FilterChanged(ByVal column As ExLVwLibUCtl.IListViewColumn)
Dim currentVisibility As Boolean
Dim filter As String
Dim i As Long
Dim newVisibility As Boolean
filter = LCase$(column.filter)
If column.Index = 0 Then
' filter by name
With lv.ListItems
For i = 0 To 9
currentVisibility = animals(i).bVisibleByName And animals(i).bVisibleByClass
If filter = "" Then
animals(i).bVisibleByName = True
Else
animals(i).bVisibleByName = (Left$(LCase$(animals(i).strName), Len(filter)) = filter)
End If
newVisibility = animals(i).bVisibleByName And animals(i).bVisibleByClass
If newVisibility <> currentVisibility Then
If newVisibility Then
' add the item
With .Add(animals(i).strName)
animals(i).lItemID = .ID
.SubItems(1).Text = animals(i).strClass
End With
Else
' remove it
lv.ListItems.Remove animals(i).lItemID, ItemIdentifierTypeConstants.iitID
End If
End If
Next i
End With
Else
' filter by class
With lv.ListItems
For i = 0 To 9
currentVisibility = animals(i).bVisibleByName And animals(i).bVisibleByClass
If filter = "" Then
animals(i).bVisibleByClass = True
Else
animals(i).bVisibleByClass = (Left$(LCase$(animals(i).strClass), Len(filter)) = filter)
End If
newVisibility = animals(i).bVisibleByName And animals(i).bVisibleByClass
If newVisibility <> currentVisibility Then
If newVisibility Then
' add the item
With .Add(animals(i).strName)
animals(i).lItemID = .ID
.SubItems(1).Text = animals(i).strClass
End With
Else
' remove it
lv.ListItems.Remove animals(i).lItemID, ItemIdentifierTypeConstants.iitID
End If
End If
Next i
End With
End If
End Sub
Thanks, same to you.alphi wrote:PS: wish you a merry christmas

Crunching for Fab36_Folding-Division at Folding@Home. Join Fab36/Fab30! - Folding@Home and BOINC
Boycott DRM! Boycott HDCP!
Boycott DRM! Boycott HDCP!