vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Verschiedenes / Sonstiges   |   VB-Versionen: VB614.01.05
FilterIndex anhand der Dateiendung und des Filters

Eine Funktion mit der man den FilterIndex anhand des Filters und der Dateierweiterung bestimmen kann.

Autor:   Christoph HommelsheimBewertung:  Views:  13.146 
www.c-hommelsheim.de.vuSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Beim Einsatz der Microsoft Common-Dialog Controls (FileOpen/FileSave) gibt es u.a. auch eine Eigenschaft namens "FilterIndex". Über diese Eigenschaft lässt sich der Index der festgelegten Dateitypen vorgeben. Hat man nun der "Filter"-Eigenschaft eine ganze Menge von Dateitypen zugewiesen oder erweitert man die Dateitypen nachträglich um weitere Einträge, hilft nachfolgende Funktion, um die FilterIndex-Eigenschaft korrekt zu setzen. Hierbei braucht der Funktion lediglich die gewünschte Dateierweiterung und die Filter-Eigenschaft des CommonDialog-Controls übergeben werden.

' Ermittelt den FilterIndex anhand der festgelegten Dateierweiterung
Public Function GetFilterIndexByExtension(Extension As String, Filter As String)
  Dim arFilter() As String
  Dim i As Long
  Dim n As Long
 
  n = 0
 
  ' Den Filter bei jedem | teilen
  arFilter = Split(Filter, "|")  
  ' Jedes 2. Element prüfen
  ' (die Elemente mit den Dateierweiterungen)
  For i = 1 To UBound(arFilter) Step 2
    n = n + 1   ' Zähler eins erhöhen
    If InStr(1, arFilter(i), "*." & Extension, vbTextCompare) > 0 Then
      ' wenn Extension gefunden,
      ' dann gebe den Zähler zurück
      GetFilterIndexByExtension = n                               
      Exit For
    End If
  Next i
End Function
' Filter zusammensetzen
Public Function AddFilter(ByVal sType As String, ByVal sExtensions As String)
  AddFilter = sType & " (" & sExtensions & ")|" & sExtensions
End Function

Anwendungsbeispiel:

Private Sub mnuFileSaveAs_Click()
  With CommonDialog1
    .CancelError = True
 
    ' Auswahl der möglichgen Dateitypen festlegen
    .Filter = AddFilter("HTML-Dateien", "*.html; *.htm") & "|" & _
      AddFilter("Style-Sheets", "*.css; *.css?") & "|" & _
      AddFilter("XML-Formate", "*.xml; *.xsd; *.wml") & "|" & _
      AddFilter("PHP-Dateien", "*.php; *.pht; *.phtml; *.php?; *.inc") & "|" & _
      AddFilter("JAVA-Server-Page", "*.jsp") & "|" & _
      AddFilter("JAVA-Source", "*.class; *.jpx") & "|" & _
      AddFilter("C/C++ Source", "*.c; *.cpp; *.cxx; *.cc; *.cs; *.h; *.hpp; *.hxx; *.hh; *.h++") & "|" & _
      AddFilter("Visual-Basic-Dateien", "*.vbs; *.frm; *.bas; *.vb; *.cls; *.ctl; *.pag") & "|" & _
      AddFilter("Configurations-Dateien", "*.ini; *.inf; *.iss; *.cfg") & "|" & _
      AddFilter("Textdateien", "*.txt") & "|" & _
      AddFilter("Alle Dateien", "*.*")
 
    .FilterIndex = GetFilterIndexByExtension("bas", .Filter)
    .ShowSave
    ...
  End With
End Sub



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.