Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0690: Inhalt einer FileListBox filtern

 von 

Beschreibung 

Wenn man alle Dateien eines Ordners in einer FileListBox, bis auf ein paar Ausnahmen, anzeigen möchte, ist es recht mühsam, alle Dateierweiterungen für die Pattern-Eigenschaft anzugeben. Mit diesem Code können alle Dateien, bis auf die Ausnahmen, angezeigt werden.

Schwierigkeitsgrad:

Schwierigkeitsgrad 1

Verwendete API-Aufrufe:

SendMessageA (SendMessage)

Download:

Download des Beispielprojektes [2,43 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'----------- Anfang Projektdatei RemoveFiles.vbp  -----------
'------- Anfang Formular "frmMain" alias frmMain.frm  -------
' Steuerelement: Schaltfläche "cmdRemove"
' Steuerelement: Dateiauswahlliste "flbFiles"

Option Explicit

' ----==== sonstige Konstanten ====----
Private Const LB_DELETESTRING As Long = &H182

' ----==== USER32 API Deklarationen ====----
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

'------------------------------------------------------
' Funktion     : RemoveFiles
' Beschreibung : entfernen von Dateien aus der FileListBox
' Übergabewert : ctrlFileListBox = FileListBox
'                sFiles = zu entfernende Dateien
'                Bei mehreren Dateien müssen diese
'                durch ein Simikolon getrennt sein.
'                Es können die üblichen Platzhalter
'                wie "*" und "?" verwendet werden.
'------------------------------------------------------
Private Sub RemoveFiles(ByVal ctrlFileListBox As FileListBox, _
    ByVal sFiles As String)
    
    Dim lIndex As Long
    Dim lIndex1 As Long
    Dim sFilesArray() As String
    
    ' sind keine zu entfernenden Dateien
    ' angegeben, dann Sub verlassen
    If Len(sFiles) = 0 Then Exit Sub
    
    'Splitten der zu entfernenden Dateien
    sFilesArray = Split(sFiles, ";")
    
    With ctrlFileListBox
        
        ' Jedes Element (von hinten beginnend) durchgehen
        For lIndex = .ListCount - 1 To 0 Step -1
            
            ' Array durchgehen
            For lIndex1 = LBound(sFilesArray) _
            To UBound(sFilesArray)
                
                ' Element mit dem Muster vergleichen
                If LCase$(.List(lIndex)) Like _
                LCase$(sFilesArray(lIndex1)) Then
                    
                    ' Löschen des Elementes aus der
                    ' FileListBox
                    Call SendMessage(.hWnd, _
                    LB_DELETESTRING, lIndex, 0)
                    
                    ' Schleife verlassen
                    Exit For
                End If
            Next lIndex1
        Next lIndex
    End With
End Sub

Private Sub cmdRemove_Click()
    ' bestimmte Dateien aus der FileListBox entfernen
    Call RemoveFiles(flbFiles, "vb*.e?e;*.??l;??c*.o*")
End Sub

Private Sub Form_Load()
    ' alle Dateien anzeigen
    With flbFiles
        .Pattern = "*.*"
        .Archive = True
        .Hidden = True
        .System = True
        .ReadOnly = True
    End With
End Sub
'-------- Ende Formular "frmMain" alias frmMain.frm  --------
'------------ Ende Projektdatei RemoveFiles.vbp  ------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.