Rubrik: Verschiedenes / Sonstiges | VB-Versionen: VB6 | 14.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 Hommelsheim | Bewertung: | Views: 13.146 |
www.c-hommelsheim.de.vu | System: 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