Option Strict Off
Option Explicit On
Imports System.Windows.Forms
'------------------------------------ 2023/11/09 ------------------------------------
Public Class 五clsFileDlgPathMenu

#Region "宣言"
    Public sファイルを開く As String = "ファイルを開く" : Public sファイルを保存 As String = "ファイルを保存"
    Public s画像ファイルを開く As String = "画像ファイルを開く" : Public s画像ファイルを保存 As String = "画像ファイルを保存"
    Public sテキストファイルを開く As String = "テキストファイルを開く" : Public sテキストファイルを保存 As String = "テキストファイルを保存"
    Public sフィルタ画像 As String = "画像ファイル (*.JPEG *.BMP *.PNG)|*.jpg;*.jpeg;*.bmp;*.png|すべてのファイル (*.*)|*.*"
    Public sフィルタ文書 As String = "テキストファイル (*.txt)|*.txt|すべてのファイル (*.*)|*.*"
    Public sフィルタ文書と画像 As String = "テキストファイル (*.txt)|*.txt|画像ファイル (*.JPEG *.BMP *.PNG)|*.jpg;*.jpeg;*.bmp;*.png|すべてのファイル (*.*)|*.*"
    Public sフィルタ標準 As String = "すべてのファイル (*.*)|*.*|テキスト (*.txt)|*.txt|ワードパッド (*.wri)|*.wri|ワード文書 (*.doc)|*.doc|実行ファイル (*.exe)|*.exe|HTMLファイル(*.html;*.htm)|*.html;*.htm|画像ファイル(*.bmp;*.gif;*.jpg)|*.bmp;*.gif;*.jpg"
#End Region

#Region "ファイルオープンダイアログ表示"
    '■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
    Friend Function ファイルオープンダイアログを表示して_一枚の画像ファイル名を返す(ByRef rw前回使用フォルダ As String) As String
        Dim w選択フルパス As String = "", w選択ファイルフルパス_0_Ubound() As String = {""}
        Dim bol As Boolean = ファイルダイアログ表示してファイルを選択(1, s画像ファイルを開く, sフィルタ画像, rw前回使用フォルダ, w選択フルパス, w選択ファイルフルパス_0_Ubound)
        Return IIf(gggbol, w選択ファイルフルパス_0_Ubound(0), "")
    End Function
    '■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
    Friend Function ファイルダイアログ表示してファイルを選択(ByRef r一枚1_複数2 As Integer, ByRef rDlgタイトル As String, ByRef rフィルタ As String, _
                        ByRef rw前回使用フォルダ As String, ByRef w選択フルパス As String, ByRef w選択ファイルフルパス_0_Ubound() As String) As Boolean
        '******************************************************************************
        'Static rwフォルダ前回使用 As String
        'Dim ObjFile操作 As New FileIO操作 : Dim w選択フルパス As String = "", w選択ファイルフルパス_0_Ubound() As String = {""}
        'Boolean = ObjFile操作.ファイルダイアログ表示してファイルを選択(2, ObjFile操作.sファイルを開く, ObjFile操作.sフィルタ文書, rwフォルダ前回使用, w選択フルパス, w選択ファイルフルパス_0_Ubound)
        'Return 　　　True = 選択された　/　False = キャンセル
        '一枚では　　　w選択ファイルフルパス_0_Ubound (0)　  
        '複数では　　　w選択ファイルフルパス_0_Ubound (0 - UBound())   UBound + 1 の選択枚数が戻る
        '******************************************************************************
        ReDim w選択ファイルフルパス_0_Ubound(0)
        Dim a As Integer : Dim max As Integer = -1 : Dim dlg As New OpenFileDialog()
        With dlg
            .Multiselect = (r一枚1_複数2 <> 1)
            .Title = rDlgタイトル
            If rw前回使用フォルダ <> "" Then
                .InitialDirectory = rw前回使用フォルダ : .RestoreDirectory = False
            Else
                .RestoreDirectory = True
            End If
            Try
                .Filter = rフィルタ
                '.FilterIndex = 0
            Catch
                .Filter = sフィルタ標準
                qqqqq("ERROR OK in ファイルダイアログ表示してファイルを選択()  .Filter ERROR = " + rフィルタ)
            End Try
            If .ShowDialog() = DialogResult.OK Then
                If .Multiselect Then
                    max = UBound(.FileNames) : ReDim w選択ファイルフルパス_0_Ubound(max)
                    '2023/03/31 add ---------------------------------
                    If max > 100 Then
                        Cursor.Current = Cursors.WaitCursor
                    End If
                    '------------------------------------------------
                    For a = 0 To max : w選択ファイルフルパス_0_Ubound(a) = .FileNames(a) : Next
                    '2023/03/31 add ---------------------------------
                    If max > 100 Then
                        Cursor.Current = Cursors.Default
                    End If
                    '------------------------------------------------
                Else
                    max = 0 : ReDim w選択ファイルフルパス_0_Ubound(max)
                    w選択ファイルフルパス_0_Ubound(max) = .FileName
                End If
                rw前回使用フォルダ = Ⅹフルパス名からフォルダパス名あるいは親フォルダパス名を得る(w選択ファイルフルパス_0_Ubound(max))
                '-------------------------------------------------------------------
                'qqqqq(rw前回使用フォルダ) : For a = 0 To max : qqqqq(w選択ファイルフルパス_0_Ubound(a)) : Next
                '-------------------------------------------------------------------
                w選択フルパス = Ⅹフルパス名からフォルダパス名あるいは親フォルダパス名を得る(w選択ファイルフルパス_0_Ubound(0))
            End If
        End With
        Return (max >= 0)
    End Function
    '■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
#End Region

End Class
