Option Strict Off
Option Explicit On
Imports System.Windows.Forms
'------------------------------------ 2024/04/10 ------------------------------------
Public Class frmMain
    Private WithEvents ooKBOX As clsPacopaco
    Private mOldWndState As FormWindowState = FormWindowState.Normal

    '▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
    Private Function zzAppIniFileOp(ByVal Load_0_QueryUnload_1_Resize_2_DoIniSave_3 As Long, ByRef rwIniDataStr As String) As Boolean

        ''***********************************
        'Return False  'test time
        ''***********************************

        '◆◆◆メインホームにのみ設定するコード◆◆◆　メインホーム内からのみ呼び出します。
        '読出し時に　INI ファイルが存在しない場合は　False　を返します。
        If gggAppIniFile Is Nothing Then Return False
        Try
            Dim RETVAL As Boolean = False
            Dim Open0_Save1 As Long, opcode As Integer
            Open0_Save1 = Load_0_QueryUnload_1_Resize_2_DoIniSave_3
            With gggAppIniFile
                Select Case Open0_Save1
                    Case 0, 1
                        '******************************************************************************************************
                        '◆◆◆注意　以下のコード内では、全ての　◆ユーザー名◆　に異なる文字列を指定します。◆◆◆
                        '******************************************************************************************************
                        'アプリ内の各フォームと、そのフォーム内の多種類のコントロールの状態を、最大１度に１０個まで保存と復元ができます。
                        '以下のメソッドは ◆何回でも◆ 呼び出せます。
                        '複数回呼び出す場合には　初回以外では、フォームのプロパティ設定指示引数 　◆rOpCodeForm には必ず 0◆　を指定します。
                        '複数回呼び出す場合には　◆ユーザー名◆　には毎回異なる文字列を指定します。
                        opcode = 0    'or ... 追加できるコード  ---> 五clsAppINI.cAppIniCaption Or 五clsAppINI.cAppIniBackColor Or 五clsAppINI.cAppIniForeColor
                        RETVAL = gggAppIniFile.OpenSaveMain(Open0_Save1, Me.Name + "@@@", Me, 五clsAppINI.cAppIniFormPostSize Or opcode)  'or ... 追加できるコード  ---> , Text1, 五clsAppINI.cAppIniText Or 五clsAppINI.cAppIniTextSelSttLen Or 五clsAppINI.cAppIniFontName Or 五clsAppINI.cAppIniFontSize, List1, 五clsAppINI.cAppIniList Or 五clsAppINI.cAppIniListIndex, Check1, 五clsAppINI.cAppIniValue,  ETC ........)
                        '******************************************************************************************************
                        '◆通常以下の呼び出しは不要です◆　任意の文字列を、個別の文字列の場合は１度に１０個まで保存と復元ができます。文字列配列の場合はサイズに制限はありません。
                        '------------------------------------------------------------------------------------------------------
                        Dim sss As String = ""
                        If Open0_Save1 = 0 Then
                            gggint = gggAppIniFile.OpenSaveString(Open0_Save1, Me.Name + "KEYFontColor", Me, sss)
                            gggstr = ooKBOX.PropertysRW(Open0_Save1, sss)
                        Else
                            sss = ooKBOX.PropertysRW(Open0_Save1, "")
                            gggint = gggAppIniFile.OpenSaveString(Open0_Save1, Me.Name + "KEYFontColor", Me, sss)
                        End If
                        'gggint = gggAppIniFile.OpenSaveString(Open0_Save1, Me.Name + ◆ユーザー名◆, Me, str1, str2, str3, str4, ..... )   '個別の文字列のデーターを使用
                        '以下のメソッドは ◆何回でも◆ 呼び出せます。
                        '複数回呼び出す場合には　◆ユーザー名◆　には毎回異なる文字列を指定します。
                        'gggint = gggAppIniFile.OpenSaveString(Open0_Save1, Me.Name + ◆ユーザー名◆, Me, rwIniDataStr) 
                        'gggint = gggAppIniFile.OpenSaveStrAry(Open0_Save1, Me.Name + ◆ユーザー名◆, Me, StrAry())                         '文字列配列のデーターを使用 ( 改行コードの混入も許可 )
                        '******************************************************************************************************
                    Case 2
                        'それぞれのフォームで、位置とサイズのデーターを保存します。
                        RETVAL = gggAppIniFile.FormSizeDataSetOnReSize(Me)
                End Select
            End With
            Return RETVAL
        Catch
            MsgBox(ErrorToString)
        End Try
        Return False
    End Function
    '▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲

    Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'qqqqq("frmMain_Load - 1")
        ooKBOX = New clsPacopaco
        ooKBOX.DrawEnabled = False
        gggbol = ooKBOX.Make(pnlBOX, 0.5)
        'qqqqq("frmMain_Load - 2")
        '******************************************************************
        '◆◆◆メインホームにのみ設定するコード◆◆◆　メインホームの  frmMain_Load  で、グローバルオブジェクトを作成する。
        gggAppIniFile = New 五clsAppINI                                             'オブジェクトを作成する。
        gggint = gggAppIniFile.SetIniFileName(ⅩAppフォルダ名(), ⅩAppタイトル名())  'INI ファイル名を設定する。
        '以下のいずれかのコードを使用する。
        Dim IniDataStr As String = ""
        If Not zzAppIniFileOp(0, IniDataStr) Then gggint = ⅩFormMove(gcoフォームをスクリーン中心に移動, Me) 'INI ファイルが存在しない場合に、このフォームを画面のセンターに表示するコード。
        '******************************************************************
        'qqqqq("frmMain_Load - 8")
        ooKBOX.DrawEnabled = True
        Me.Text = My.Application.Info.Title & "          " & "( .NET Framework  VB )"
        Call frmMain_ResizeEnd(Nothing, Nothing)
        'qqqqq("frmMain_Load - 9")
        '******************************************************************
        gggbol = ooKBOX.firstShow()
        '******************************************************************
        mOldWndState = Me.WindowState
        'qqqqq("frmMain_Load - 10")
    End Sub
    Private Sub frmMain_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        '******************************************************************
        '◆◆◆メインホームにのみ設定するコード◆◆◆　メインホーム内からのみ呼び出します。
        Dim IniDataStr As String = ""
        gggint = zzAppIniFileOp(1, IniDataStr)  '必ず呼び出します。
        gggint = gggAppIniFile.IniFileSaveDo   'ユーザーアプリから明示的に INI ファイルを保存します。これを呼び出すと、AppIniFile1-Class_Terminate() での自動保存は実行されません。
        '******************************************************************
    End Sub
    Private Sub frmMain_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
        ooKBOX = Nothing
    End Sub
    Private Sub frmMain_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
        If Me.WindowState = FormWindowState.Minimized Then Return
        If Me.WindowState <> mOldWndState Then
            mOldWndState = Me.WindowState
            Call frmMain_ResizeEnd(Nothing, Nothing)
        End If
    End Sub
    Private Sub frmMain_ResizeEnd(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.ResizeEnd
        Dim xy As Integer = 15
        pnlBOX.SetBounds(xy, xy, Me.ClientRectangle.Width - xy - xy, Me.ClientRectangle.Height - xy - xy, BoundsSpecified.All)
        gggbol = ooKBOX.SizeChange(pnlBOX)
        '******************************************************************
        '◆◆◆メインホームにのみ設定するコード◆◆◆　メインホーム内からのみ呼び出します。
        gggint = zzAppIniFileOp(2, "")
        '******************************************************************
    End Sub
    Private Sub frmMain_Move(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Move
        '******************************************************************
        '◆◆◆メインホームにのみ設定するコード◆◆◆　メインホーム内からのみ呼び出します。
        gggint = zzAppIniFileOp(2, "")
        '******************************************************************
    End Sub

    Private Sub ooKBOX_イベント_このアプリについて_DlgShow_Click() Handles ooKBOX.イベント_このアプリについて_DlgShow_Click
        Dim dlg As 四frmDlgAbout = New 四frmDlgAbout
        Call dlg.AboutBoxShow(Me)
        dlg.Dispose()
    End Sub

    Private Sub ooKBOX_イベント_このアプリを終了_Click() Handles ooKBOX.イベント_このアプリを終了_Click
        Me.Close()
    End Sub

End Class