VB 5/6-Tipp 0690: Inhalt einer FileListBox filtern
von Frank Schüler
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: | Verwendete API-Aufrufe: | Download: |
'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-Version | Win32s | Win95 | Win98 | WinME | WinNT4 | Win2000 | WinXP |
VB4 | |||||||
VB5 | |||||||
VB6 |
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.