Imports System
Imports System.Linq
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Text
Imports System.Windows.Forms
Imports System.Runtime.InteropServices
Imports BTClientLib
Imports System.IO
Imports System.Reflection

Module Module1

    Public strIP As String
    Public intPort As Integer
    Public strDatabase As String
    Public dbClient As BtrieveDbClient
    Public PIC_DIR As String = "\FlashDisk\BT_FILES\drv1\LAT\pic\"
    Public LOG_DIR As String = "\FlashDisk\BT_FILES\drv1\LAT\log\"

    ' フラグ
    Public errFlag As Boolean = False

    ' フォーム・インスタンス
    Public f0 As New frm2000

    ' プロジェクト・メイン
    Sub Main()

        Dim WKey As Short
        Dim buf As String
        Dim wstrFile As String
        Dim rtn As Integer
        ' Dim f0 As New frm2000
        Dim f5 As frm2005
        Dim f10 As frm2010
        Dim f15 As frm2015
        Dim f20 As frm2020
        Dim f25 As frm2025
        Dim f27 As frm2027
        Dim f35 As frm2035
        Dim f40 As frm2040
        Dim f45 As frm2045
        Dim f50 As frm2050
        Dim f55 As frm2055
        Dim f60 As frm2060
        Dim fE45 As frm2E45
        Dim fE50 As frm2E50
        Dim fE55 As frm2E55
        Dim fE65 As frm2E65
        Dim fE75 As frm2E75
        Dim fE80 As frm2E80
        Dim fE85 As frm2E85
        Dim fE95 As frm2E95
        Dim fE97 As frm2E97

        gintStatus = PP_STATUS.TITLE

        gstrctKDHT.initialize()
        gstrctKDHT.strPrgID = G_CONST_PGID_2000

        ' コントロール・初期処理
        'f0.WarpCtrl1.Init()

        ' バーコード・リーダー等の初期設定を記述します。
        'f0.WarpHWBcr1.Setup()


        Dim fileloc As String = "Setting.ini"

        Dim appPath As String = fgetAppPath() ' Assuming fgetAppPath() retrieves the application directory
        Dim filePath As String = Path.Combine(appPath, fileloc)

        Dim i As Integer = 0
        'Dim strIP As String = "192.168.1.1"
        'Dim intPort As Integer = 11433
        'Dim strDatabase As String = "demodata"

        strIP = "192.168.1.1"
        intPort = 11433
        strDatabase = "demodata"

        If File.Exists(filePath) Then

            Dim sr As StreamReader = New StreamReader(filePath)
            Dim s As String = sr.ReadToEnd()
            Dim words As String() = s.Split(New Char() {","c})

            Dim word As String

            For Each word In words

                If i = 0 Then
                    strIP = word
                ElseIf i = 1 Then

                    If IsNumeric(word) Then
                        intPort = Convert.ToInt32(word)
                    End If

                ElseIf i = 2 Then
                    strDatabase = word
                End If

                i = i + 1

            Next

        End If


        dbClient = New BtrieveDbClient(strIP, intPort, strDatabase)

        'MessageBox.Show(gintStatus.ToString())

        'INI取得処理
        If Not sGetIni() Then
            'f0.WarpCtrl1.MessageBox(G_CONST_EMT_FILEIO, G_CONST_EM_FILEIO, MWA_DB_WARNING, MWA_DB_OK)
            sErrLog(gAppName, "Main", "No ini file")
            'f0.WarpCtrl1.Term()
            Exit Sub
        End If



        'DBOpenチェック
        'If Not sDBInit() Then
        '    'f0.WarpCtrl1.MessageBox(G_CONST_EMT_DB, G_CONST_EM_DB, MWA_DB_WARNING, MWA_DB_OK)
        '    sErrLog(gAppName, "Main", "Cannot get connected to DB")
        '    'f0.WarpCtrl1.Term()
        '    sFdEnd()
        '    Exit Sub
        'End If

        'リンク用iniファイルの読込処理
        'gstrctKDHT.bLinkFlag = True



        Try

            ' メインループ
            Do While (True)

                Select Case gintStatus

                    'Case ALL_STATUS.TITLE
                    Case PP_STATUS.TITLE
                        ' フォーム・ロード
                        'f0.Show()

                        f0.ShowDialog()

                    Case PP_STATUS.NAME

                        ' フォーム作成
                        f5 = New frm2005

                        ' フォーム・ロード
                        'f5.Show()
                        f5.ShowDialog()
                        f5.Dispose()

                    Case PP_STATUS.SECTION
                        ' フォーム作成
                        f10 = New frm2010

                        ' フォーム・ロード
                        'f10.Show()
                        f10.ShowDialog()
                        f10.Dispose()

                    Case PP_STATUS.ENTKEY
                        ' フォーム作成
                        f15 = New frm2015

                        ' フォーム・ロード
                        'f15.Show()
                        f15.ShowDialog()
                        f15.Dispose()

                    Case PP_STATUS.HEADER
                        ' フォーム作成
                        f20 = New frm2020

                        ' フォーム・ロード
                        'f20.Show()
                        f20.ShowDialog()
                        f20.Dispose()
                    Case PP_STATUS.PART
                        ' フォーム作成
                        f25 = New frm2025

                        ' フォーム・ロード
                        'f25.Show()
                        f25.ShowDialog()
                        f25.Dispose()
                    Case PP_STATUS.PART2
                        ' フォーム作成
                        f27 = New frm2027

                        ' フォーム・ロード
                        'f27.Show()
                        f27.ShowDialog()
                        f27.Dispose()
                    Case PP_STATUS.PRINT
                        ' フォーム作成
                        f50 = New frm2050

                        ' フォーム・ロード
                        'f50.Show()
                        f50.ShowDialog()
                        f50.Dispose()
                    Case PP_STATUS.CISCAN
                        ' フォーム作成
                        f55 = New frm2055

                        ' フォーム・ロード
                        'f55.Show()
                        f55.ShowDialog()
                        f55.Dispose()
                    Case PP_STATUS.PRINT3
                        ' フォーム作成
                        f60 = New frm2060

                        ' フォーム・ロード
                        'f60.Show()
                        f60.ShowDialog()
                        f60.Dispose()
                    Case PP_STATUS.ALLCANCEL
                        ' フォーム作成
                        fE55 = New frm2E55

                        ' フォーム・ロード
                        'fE55.Show()
                        fE55.ShowDialog()
                        fE55.Dispose()
                    Case PP_STATUS.ZEROOK
                        ' フォーム作成
                        fE65 = New frm2E65

                        ' フォーム・ロード
                        'fE65.Show()
                        fE65.ShowDialog()
                        fE65.Dispose()

                    Case PP_STATUS.RETRY1
                        ' フォーム作成
                        f35 = New frm2035

                        ' フォーム・ロード
                        'f35.Show()
                        f35.ShowDialog()
                        f35.Dispose()
                    Case PP_STATUS.RETRY2
                        ' フォーム作成
                        f40 = New frm2040

                        ' フォーム・ロード
                        'f40.Show()
                        f40.ShowDialog()
                        f40.Dispose()

                    Case PP_STATUS.RETRY3
                        ' フォーム作成
                        f45 = New frm2045

                        ' フォーム・ロード
                        'f45.Show()
                        f45.ShowDialog()
                        f45.Dispose()

                    Case PP_STATUS.SEARCH
                        ' フォーム作成
                        fE45 = New frm2E45

                        ' フォーム・ロード
                        'fE45.Show()
                        fE45.ShowDialog()
                        fE45.Dispose()

                    Case PP_STATUS.NOTPACK
                        ' フォーム作成
                        fE50 = New frm2E50

                        ' フォーム・ロード
                        'fE50.Show()
                        fE50.ShowDialog()
                        fE50.Dispose()

                    Case PP_STATUS.NOTFOUND
                        ' フォーム作成
                        fE75 = New frm2E75

                        ' フォーム・ロード
                        'fE75.Show()
                        fE75.ShowDialog()
                        fE75.Dispose()

                    Case PP_STATUS.PRINT2
                        ' フォーム作成
                        fE80 = New frm2E80

                        ' フォーム・ロード
                        'fE80.Show()
                        fE80.ShowDialog()
                        fE80.Dispose()

                    Case PP_STATUS.PRINT4
                        ' フォーム作成
                        fE85 = New frm2E85

                        ' フォーム・ロード
                        'fE85.Show()
                        fE85.ShowDialog()
                        fE85.Dispose()
                    Case PP_STATUS.SECWAIT
                        ' フォーム作成
                        fE95 = New frm2E95

                        ' フォーム・ロード
                        'fE95.Show()
                        fE95.ShowDialog()
                        fE95.Dispose()

                    Case PP_STATUS.RETRYSEC
                        ' フォーム作成
                        fE97 = New frm2E97

                        ' フォーム・ロード
                        'fE97.Show()
                        fE97.ShowDialog()
                        fE97.Dispose()
                    Case PP_STATUS.QUIT

                        Exit Do

                End Select

            Loop

            ' フレームのクローズ
            'f0.WarpFrame1.Close()

            'f0.WarpCtrl1.Term()

            ' フォーム・クローズ
            f0.Close()

            f0.Dispose()

            ' アプリケーションの終了
            sFdEnd()

            Exit Sub

        Catch ex As Exception
            sErrLog(gAppName, "Main", ex.ToString)
        End Try

    End Sub

    '/*
    '|| 関数名：sGetIni
    '|| 概要  ：INI取得処理
    '*/
    Private Function sGetIni() As Boolean
        Dim wstrIniName As String

        sGetIni = False

        'PICS.INI, PICSPARAM.INI ﾌｧｲﾙ読み込み
        If fGetIniData(fGetPrgID, wstrIniName) = False Then

            ' 
#If Not Debug Then
            fFnc_WrpMsg("E", G_CONST_MID_E0010, "081")
#End If
            Exit Function
        End If
        '>>> ADD 2006.03.10 ST >>>
        fGetCreateAPFlag()
        '<<< ADD 2006.03.10 END <<<

        sGetIni = True

    End Function

    '/*
    '|| 関数名：sDBInit
    '|| 概要  ：DBオープン処理
    '*/
    Private Function sDBInit() As Boolean

        sDBInit = False
        gAppName = fGetAppName()

        ''PICS
        'If Not fOpenDB(gstrctPicsIni.strMain_PICS2004) Then Exit Function

        sDBInit = True

    End Function

    '/*
    '|| 関数名：sFdEnd
    '|| 概要  ：終了処理
    '*/
    Private Sub sFdEnd()

        Dim rtn As Integer

        Try

            'If Not IsNothing(gclsDB) Then
            '    gclsDB = Nothing       'Perbasive接続用のインスタンス破棄
            'End If

            'gobjMutex.Close()

            Application.Exit()

            Exit Sub

        Catch ex As Exception
            sErrLog(gAppName, "sFdEnd", ex.ToString)
        End Try

    End Sub


End Module
