
Public Class PicList
    Public 관리id As Integer
    Dim BackWork As System.Threading.Thread
    Dim DV As DataView

    Public Sub New()
        ' 이 호출은 Windows Form 디자이너에 필요합니다.
        InitializeComponent()
        ' InitializeComponent() 호출 뒤에 초기화 코드를 추가하십시오.
    End Sub
    Public Sub New(ByVal Index As Integer)
        InitializeComponent()
        관리id = Index
    End Sub

    Private Sub ShowCnt(ByVal cnt1 As Integer, ByVal cnt2 As Integer)
        Me.lb_cnt.Text = cnt1 & "/" & cnt2
        My.Application.DoEvents()
    End Sub

    Private Sub PicList_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        'Me.SortGroup1.SAVE_Setting()
        Me.CHk_Modify()
        Me.SAVE_Setting()
    End Sub
    Private Sub PicList_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.view1.Setting_Load(False)
        Me.filelistf.Setting_Load(False)

        'Me.jjdetTableAdapter1.Connection.ConnectionString = Common.ConString
        Me.view1.Font = New Font(ViewFont.FontName, ViewFont.FontSize, Me.Font.Style)   '//글자정보 불러오기
        Me.filelistf.Font = New Font(ViewFont.FontName, ViewFont.FontSize, Me.Font.Style)   '//글자정보 불러오기
        Me.ToolStrip1.Font = New Font(MenuFont.FontName, MenuFont.FontSize, Me.Font.Style)   '//글자정보 불러오기
        Me.StatusStrip2.Font = New Font(MenuFont.FontName, MenuFont.FontSize, Me.Font.Style)   '//글자정보 불러오기

        LOAD_Setting()  '//기존의 셋팅이 저장된게 잇으면 가져온다.
        Me.bt_picrefreh.PerformClick()  '//그림목록을 갱신하며
        Display_Data()  '//전주세부목록도 보여준다.

        Me.GETCNT()
        Me.SETTOOLTIP()
    End Sub
    Private Sub SETTOOLTIP()
        Dim TMSG As New System.Text.StringBuilder()
        TMSG.AppendLine()
        TMSG.AppendLine("태그1+관리구+전주번호+태그2 이용하여 파일명을 검색합니다")
        TMSG.AppendLine()
        TMSG.AppendLine("우측의 파일목록내에서 검색합니다.")
        Me.bt_compareImg.ToolTipText = TMSG.ToString

        TMSG = New System.Text.StringBuilder()
        TMSG.AppendLine()
        TMSG.AppendLine("데이터베이스에 저장된 그림파일경로를 확인하여")
        TMSG.AppendLine("실제로 파일이 존재하는지 확인합니다")
        Me.bt_chkimg.ToolTipText = TMSG.ToString

        TMSG = New System.Text.StringBuilder()
        TMSG.AppendLine()
        TMSG.AppendLine("지정된 경로내의 그림파일 목록입니다.")
        TMSG.AppendLine()
        TMSG.AppendLine("항목을 더블클릭시 파일이름을 변경할 수 있습니다.")
        TMSG.AppendLine("항목에 오른쪽 클릭시 항목의 경로로 현재 경로가 설정됩니다")
        Me.ToolTip1.SetToolTip(Me.filelistf, TMSG.ToString)
    End Sub

    Private Sub LOAD_Setting()
        Dim A As New MyINI2(MyPath.Current & "\setting.ini")
        Try
            Me.lb_picdirectory.Text = A.Read("pic", "DefaultPicDir", "c:\windows")
            Me.lb_picdirectory.Text = Me.lb_picdirectory.Text.Trim(Chr(0))  '//한글이잇을경우 붙는 쓰레기츨 처리한다.
            'Me.cmb_PICTYPE.SelectedIndex = A.Read("pic", "pictype", 3)
            Me.cmb_picEXT.SelectedIndex = A.Read("pic", "picext", 1)
            Me.CHK_SUBDIR.Checked = A.Read("pic", "subdir", True)
        Catch ex As Exception
            Me.lb_picdirectory.Text = vbNullString
            Me.cmb_picEXT.SelectedIndex = 3
            'Me.cmb_PICTYPE.SelectedIndex = 1
            Me.CHK_SUBDIR.Checked = True
        End Try
        A = Nothing
    End Sub
    Private Sub SAVE_Setting()
        Dim A As New MyINI2(MyPath.Current & "\setting.ini")

        Try
            A.Write("pic", "DefaultPicDir", Me.lb_picdirectory.Text)
            'A.Write("pic", "pictype", Me.cmb_PICTYPE.SelectedIndex)
            A.Write("pic", "picext", Me.cmb_picEXT.SelectedIndex)
            A.Write("pic", "subdir", Me.CHK_SUBDIR.Checked)
        Catch ex As Exception

        End Try
        A = Nothing
    End Sub



    Private Sub CHk_Modify(Optional ByVal prompt As Boolean = True)
        Dim Cnt As Integer = 0
        Me.bs.EndEdit()
        If Not Me.IreaDataSet1.HasChanges Then
            NOTICE("변경된 내용이 없습니다", Me.lb_msg)
            Return
        End If

        If prompt Then
            If MsgBox("변경된 데이터를 저장하시겠습니까?", MsgBoxStyle.Information + MsgBoxStyle.OkCancel, "저장확인") <> MsgBoxResult.Ok Then Return
        End If
        NOTICE("저장중입니다.... 잠시만 기다려주세요", Color.Blue, Me.lb_msg)
        Try
            Me.bs.EndEdit()
            Me.jjdetTableAdapter1.Update(Me.IreaDataSet1.jjutable)
            Me.IreaDataSet1.jjutable.AcceptChanges()
            NOTICE(Cnt & "개의 데이터가 변경되었습니다", Me.lb_msg)
        Catch ex As Exception
            MsgBox("데이터베이스 변경중 오류가 발생했습니다" & vbCrLf & vbCrLf & ex.ToString, MsgBoxStyle.Critical, "ERROR-")
            Me.bs.CancelEdit()
            Me.IreaDataSet1.jjutable.RejectChanges()
        End Try
        NOTICE("저장완료", Color.Blue, Me.lb_msg)
        My.Computer.Audio.Play(My.Application.Info.DirectoryPath & "\sound\notify.wav", AudioPlayMode.Background)
    End Sub

    Private Sub Display_Data(Optional ByVal OrderState As String = vbNullString)   '//뷰에데이터를 표시한다.
        Me.jjdetTableAdapter1.Fill(Me.IreaDataSet1.jjutable, 관리id)
        DV = New DataView(Me.IreaDataSet1.jjutable, "", "정렬번호,번호", DataViewRowState.CurrentRows)
        Me.bs.DataSource = DV
        NOTICE(Me.view1.ActiveSheet.RowCount & "개의 데이터가 검색되었습니다", Me.lb_msg)
    End Sub

    Private Sub bt_picselect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_picselect.Click
        Dim A As New FolderBrowserDialog
        A.RootFolder = Environment.SpecialFolder.MyComputer
        A.SelectedPath = Me.lb_picdirectory.Text
        If A.ShowDialog() = Windows.Forms.DialogResult.Cancel Then
            MsgBox("선택이 취소되었습니다", MsgBoxStyle.Critical, "확인")
            Return
        End If
        Me.lb_picdirectory.Text = A.SelectedPath
        Me.bt_picrefreh.PerformClick()
    End Sub

    Private Sub ToolStripButton2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_picrefreh.Click
        Dim A As New System.IO.DirectoryInfo(Me.lb_picdirectory.Text)
        If A.Exists = False Then Return

        Me.PicDS.PicfileList.Clear() '//현재목록초기화
        Me.PicDS.PicfileList.AcceptChanges()
        If Me.PicDS.PicfileList.Count > 0 Then
            MsgBox("기존 파일목록이 삭제가되지않았습니다", MsgBoxStyle.Critical, "확인")
            Return
        End If

        Dim FI() As System.IO.FileInfo = A.GetFiles("*." & Me.cmb_picEXT.Text, IIf(Me.CHK_SUBDIR.Checked, 1, 0))
        If FI.GetUpperBound(0) = -1 Then
            MsgBox("가능한 파일이 존재하지 않습니다", MsgBoxStyle.Critical, "확인")
            Return
        End If

        Dim index As Integer = 0
        Dim endcnt As Integer = FI.GetUpperBound(0)

        For Each B As IO.FileInfo In FI
            index += 1
            Me.ShowCnt(index, endcnt)
            Dim DR As PicDS.PicfileListRow = Me.PicDS.PicfileList.NewPicfileListRow
            DR.파일명 = B.Name
            DR.크기 = B.Length
            DR.찾음 = vbNullString
            DR.경로 = B.DirectoryName
            Me.PicDS.PicfileList.AddPicfileListRow(DR)
        Next
    End Sub

    Private Sub Check_image()
        Dim A As New System.Text.StringBuilder
        Dim StartTime, Endtime As Date
        Dim 파일명s As String
        Dim 파일명v As String
        Dim Cnt As Integer = 0


        '/첫번째방법 데이터셋에서 검색을 한다.
        StartTime = Now

        With Me.view1.ActiveSheet
            For Each FRow As FarPoint.Win.Spread.Row In .Rows
                Me.ShowCnt(FRow.Index, .RowCount - 1)
                파일명s = CStr(Me.view1.Cells(FRow.Index, "그림경로").Text & "\" & Me.view1.Cells(FRow.Index, "그림파일").Text).Replace("\\", "\")
                파일명v = CStr(DV.Item(FRow.Index)("그림경로").ToString & "\" & DV.Item(FRow.Index)("그림파일").ToString).Replace("\\", "\")

                If 파일명s <> 파일명v Then
                    MsgBox("뷰와 스프레드의 순서가 다릅니다 : " & FRow.Index)
                End If
                If 파일명s <> "" Then    '//관리구 전주번호가 있을경우에만 확인한다.
                    If System.IO.File.Exists(파일명s) Then
                        Cnt += 1
                        Me.view1.Cells(FRow.Index, "그림").Value = True
                    Else
                        Me.view1.Cells(FRow.Index, "그림").Value = False
                    End If
                Else
                    Me.view1.Cells(FRow.Index, "그림").Value = False
                End If
                'IDX += 1
            Next
        End With

        'For Each DR As DataRow In Me.IreaDataSet1.Tables(1).Rows
        '    Me.prbar1.Value = IDX
        '    파일명 = IIf(IsDBNull(DR("그림파일명")), vbNullString, DR("그림파일명"))
        '    If 파일명 = "" Then
        '        Me.view1.ActiveSheet.Cells(IDX, Me.view1.선택줄번호).Value = False
        '    Else
        '        If System.IO.File.Exists(파일명) Then
        '            Cnt += 1
        '            Me.view1.ActiveSheet.Cells(IDX, Me.view1.선택줄번호).Value = True
        '        Else
        '            Me.view1.ActiveSheet.Cells(IDX, Me.view1.선택줄번호).Value = False
        '        End If
        '    End If
        '    IDX += 1
        'Next
        Endtime = Now
        A.Remove(0, A.Length)
        A.AppendLine("시작시간=" & StartTime.ToString)
        A.AppendLine("종료시간=" & Endtime.ToString)
        A.AppendLine()
        A.AppendLine("경과시간=" & (Endtime - StartTime).ToString)
        A.AppendLine()
        A.AppendLine("전체=" & Me.IreaDataSet1.jjutable.Rows.Count)
        A.AppendLine("찾음=" & Cnt)
        A.AppendLine("없음=" & Me.IreaDataSet1.jjutable.Rows.Count - Cnt)

        MsgBox(A.ToString, MsgBoxStyle.Information, "그림파일확인 결과")
    End Sub
    Private Sub Compare_Image()
        If Me.PicDS.PicfileList.Rows.Count <= 0 Then
            MsgBox("검색가능한 파일이 존재하지않습니다", MsgBoxStyle.Critical, "태그입력오류")
            Return
        End If
        Dim A As New System.Text.StringBuilder("파일명에 추가된 태그를 입력하세요.")
        A.AppendLine()
        A.AppendLine("입력될 태그를 파일명의 앞뒤에 붙인후 검색합니다.")
        A.AppendLine()
        A.AppendLine("입력방법 :    앞에붙일태그/뒤에붙일태그 ")
        A.AppendLine()
        A.AppendLine("예) 파일명 뒤에 _01  이 붙은것을 검색하고자할때")
        A.AppendLine("     /_01%        <=   입력하고 엔터")
        A.AppendLine()
        A.AppendLine("예) 파일명 앞에 P  가 붙은것을 검색하고자할때")
        A.AppendLine("     %P/          <=   입력하고 엔터")
        A.AppendLine()
        A.AppendLine("예) 파일명 앞에 P가 붙고 뒤에 _01이 붙은것을 검색하고자할때")
        A.AppendLine("     %P/_01%      <=   입력하고 엔터")
        A.AppendLine("==========================================")
        A.AppendLine(" _03 : 신설+철거 , _04 : 신설 자동 체크")

        Dim Itag As String = InputBox(A.ToString, "태그입력", "%/%")
        If Itag = "" Then
            MsgBox("태그를 반드시 입력해야합니다" & vbCrLf & "작업이 취소되었습니다", MsgBoxStyle.Critical, "Error")
            Return
        End If
        Dim Stag() As String = Itag.Split("/")
        If Stag.GetUpperBound(0) <> 1 Then
            MsgBox("잘못된 태그가 입력되었습니다" & vbCrLf & "태그입력형식은 앞,뒤 를  / 로 묶은 형태입니다" & vbCrLf & vbCrLf & "예)  %P/_01%", MsgBoxStyle.Information, "태그입력오류")
            Return
        End If

        '//파일목록디비에서 그림찾음 부분을 리셋한다
        Dim index As Integer = 0
        Dim endcnt As Integer = Me.PicDS.PicfileList.Rows.Count - 1
        For Each Dr As DataRow In Me.PicDS.PicfileList.Rows
            index += 1
            ShowCnt(index, endcnt)
            Dr("찾음") = ""
            Dr("메세지") = ""
        Next


        '//실제 수행부분
        Dim StartTime, Endtime As Date
        Dim 관리구, 전주번호, 파일명 As String
        Dim Cnt As Integer = 0
        Dim IDX As Integer = 0
        StartTime = Now

        '//데이터뷰를 통해서말고 파포인트에서 한다.
        Dim Sv As DataView

        index = 0
        With Me.view1.ActiveSheet
            For Each FRow As DataRow In Me.IreaDataSet1.jjutable.Rows
                index += 1
                ShowCnt(index, endcnt)
                관리구 = NVL(FRow("관리구"), "")
                전주번호 = NVL(FRow("전주번호"), "")
                파일명 = CStr(관리구 & 전주번호).Trim

                If 파일명 <> "" Then    '//관리구 전주번호가 있을경우에만 확인한다.
                    파일명 = Stag(0) & 관리구 & 전주번호 & Stag(1) ' & "." & Me.cmb_picEXT.Text
                    'Dim DR() As DataRow '= Me.PicDS.PicfileList.Select("파일명 like '" & 파일명 & "'")    '//LIke 검색을 한다.

                    If chk_03.Checked Then
                        Sv = New DataView(Me.PicDS.PicfileList, "파일명 like '%_03%' and 파일명 like '" & 파일명 & "'", "", DataViewRowState.CurrentRows)
                        If Sv.Count > 0 Then
                            Cnt += 1
                            FRow("신규") = True
                            FRow("철거") = True
                            FRow("그림") = True
                            FRow("기입") = False
                            '//찾은그림파일및 경로를 데이터베이스에 복사한다.
                            Sv.Item(0)("찾음") = "O"
                            FRow("그림경로") = Sv.Item(0)("경로")
                            FRow("그림파일") = Sv.Item(0)("파일명")
                            Sv.Item(0)("메세지") = "우선순위_03"
                            GoTo LAST
                        End If
                    End If

                    If chk_04.Checked Then
                        Sv = New DataView(Me.PicDS.PicfileList, "파일명 like '%_04%' and 파일명 like '" & 파일명 & "'", "", DataViewRowState.CurrentRows)
                        If Sv.Count > 0 Then
                            Cnt += 1
                            FRow("신규") = True
                            FRow("철거") = False
                            FRow("그림") = True
                            FRow("기입") = False
                            Sv.Item(0)("찾음") = "O"
                            FRow("그림경로") = Sv.Item(0)("경로")
                            FRow("그림파일") = Sv.Item(0)("파일명")
                            Sv.Item(0)("메세지") = "우선순위_04"
                            GoTo LAST
                        End If
                    End If

                    If chk_01.Checked Then
                        Sv = New DataView(Me.PicDS.PicfileList, "파일명 like '%_01%' and 파일명 like '" & 파일명 & "'", "", DataViewRowState.CurrentRows)
                        If Sv.Count > 0 Then
                            Cnt += 1
                            FRow("신규") = False
                            FRow("철거") = False
                            FRow("그림") = True
                            FRow("기입") = True
                            Sv.Item(0)("찾음") = "O"
                            FRow("그림경로") = Sv.Item(0)("경로")
                            FRow("그림파일") = Sv.Item(0)("파일명")
                            Sv.Item(0)("메세지") = "우선순위_01"
                            GoTo LAST
                        End If
                    End If

                    If chk_71.Checked Then
                        Sv = New DataView(Me.PicDS.PicfileList, "파일명 like '%_71%' and 파일명 like '" & 파일명 & "'", "", DataViewRowState.CurrentRows)
                        If Sv.Count > 0 Then
                            Cnt += 1
                            FRow("신규") = False
                            FRow("철거") = False
                            FRow("그림") = True
                            FRow("기입") = True
                            Sv.Item(0)("찾음") = "O"
                            FRow("그림경로") = Sv.Item(0)("경로")
                            FRow("그림파일") = Sv.Item(0)("파일명")
                            Sv.Item(0)("메세지") = "우선순위_71"
                            GoTo LAST
                        End If
                    End If

                    '//여기까지왓다는것은 암껏도 못찾앗다는것이므로 찾은것중에 0번째를 지정하고 나간다.
                    Sv = New DataView(Me.PicDS.PicfileList, "파일명 like '" & 파일명 & "'", "", DataViewRowState.CurrentRows)
                    If Sv.Count > 0 Then
                        Cnt += 1
                        FRow("신규") = False
                        FRow("철거") = False
                        FRow("기입") = False
                        FRow("그림") = True

                        Sv.Item(0)("찾음") = "O"
                        FRow("그림경로") = Sv.Item(0)("경로")
                        FRow("그림파일") = Sv.Item(0)("파일명")
                        Sv.Item(0)("메세지") = "첫번쨰발견아이템"
                        If FRow("그림파일").ToString.IndexOf("_03") >= 0 Then
                            FRow("신규") = True
                            FRow("철거") = True
                        ElseIf FRow("그림파일").ToString.IndexOf("_04") >= 0 Then
                            FRow("신규") = True
                        Else
                            FRow("기입") = True
                        End If
                    Else
                        FRow("신규") = False
                        FRow("철거") = False
                        FRow("그림") = False
                        FRow("기입") = True
                        FRow("그림경로") = ""
                        FRow("그림파일") = ""
                    End If
LAST:

                End If
            Next
        End With

        Endtime = Now
        A.Remove(0, A.Length)
        A.AppendLine("시작시간=" & StartTime.ToString)
        A.AppendLine("종료시간=" & Endtime.ToString)
        A.AppendLine()
        A.AppendLine("경과시간=" & (Endtime - StartTime).ToString)
        A.AppendLine()
        A.AppendLine("전체=" & Me.IreaDataSet1.jjutable.Rows.Count)
        A.AppendLine("찾음=" & Cnt)
        A.AppendLine("없음=" & Me.IreaDataSet1.jjutable.Rows.Count - Cnt)
        MsgBox(A.ToString, MsgBoxStyle.Information, "그림파일연결 결과")
    End Sub
    Private Sub Compare_OldImage()
        Dim A As New System.Text.StringBuilder("파일명뒤에 붙을 태그를 입력하세요")
        IO.Directory.CreateDirectory(My.Application.Info.DirectoryPath & "\log\변경후파일")
        IO.Directory.CreateDirectory(My.Application.Info.DirectoryPath & "\log\변경전파일")
        A.AppendLine()
        A.AppendLine("입력될 태그를 파일명뒤에 붙인후 파일명을 비교합니다")
        Dim Itag As String = InputBox(A.ToString, "태그입력", "_01")
        If Itag = "" Then
            MsgBox("태그를 반드시 입력해야합니다", MsgBoxStyle.Critical, "Error")
            Return
        End If

        Dim StartTime, Endtime As Date
        Dim 구관리구, 구전주번호, 파일명, 파일명2, 관리구, 전주번호 As String
        Dim Cnt As Integer = 0
        Dim IDX As Integer = 0

        Dim endcnt As Integer = Me.IreaDataSet1.Tables("전주세부").Rows.Count


        '/첫번째방법 데이터셋에서 검색을 한다.
        StartTime = Now
        For Each DR As ireaDataSet.jjutableRow In Me.IreaDataSet1.Tables(1).Rows
            ShowCnt(IDX, endcnt)
            구관리구 = DR.구관리구.Trim
            구전주번호 = DR.구전산번호.Trim
            관리구 = DR.관리구
            전주번호 = DR.전주번호
            '파일명 = 구관리구 & 구전주번호
            If CStr(구관리구 & 구전주번호) <> "" Then    '//관리구 전주번호가 있을경우에만 확인한다.

                If CStr(관리구 & 전주번호) <> "" Then
                    파일명 = Me.lb_picdirectory.Text & "\" & 구관리구 & 구전주번호 & Itag & "." & Me.cmb_picEXT.Text
                    'Dim fILES() As String = IO.Directory.GetFiles(Me.lb_picdirectory.Text, 관리구 & 전주번호 & Itag & "." & Me.cmb_picEXT.Text, IIf(Me.CHK_SUBDIR.Checked, 1, 0))
                    If IO.File.Exists(파일명) Then
                        파일명2 = Me.lb_picdirectory.Text & "\" & 관리구 & 전주번호 & Itag & "." & Me.cmb_picEXT.Text

                        IO.File.Copy(파일명, My.Application.Info.DirectoryPath & "\log\변경후파일\" & 관리구 & 전주번호 & Itag & "." & Me.cmb_picEXT.Text, True)
                        IO.File.Move(파일명, My.Application.Info.DirectoryPath & "\log\변경전파일\" & 구관리구 & 구전주번호 & Itag & "." & Me.cmb_picEXT.Text)

                        Cnt += 1
                        WLog("##########변경완료(" & IDX & ")" & vbCrLf & "구관리전산번호=" & 구관리구 & _
                        구전주번호 & vbCrLf & "신관리전산번호=" & 관리구 & 전주번호 & _
                        "원본파일명 = " & 파일명 & vbCrLf & "대상파일명=" & 파일명2, "\구관리전산그림변경(완료됨).txt")
                        'Me.view1.ActiveSheet.Cells(IDX, 20).Value = True
                    Else  '//구관리전산번호에 해당하는 그림이없으므로 패스
                        'Me.view1.ActiveSheet.Cells(IDX, 20).Value = False
                        WLog("##########구관리전산번호에대한 그림파일이 없습니다.(" & IDX & ")" & vbCrLf & "구관리전산번호=" & 구관리구 & _
                        구전주번호 & vbCrLf & "신관리전산번호=" & 관리구 & 전주번호 & vbCrLf & _
                        "원본파일명 = " & 파일명, "\구관리전산그림변경(구관리전산그림없음).txt")
                    End If
                Else
                    WLog("##########신관리전산번호가 없습니다.(" & IDX & ")" & vbCrLf & "구관리전산번호=" & 구관리구 & 구전주번호, "\구관리전산그림변경(신관리전산없음).txt")
                End If

            Else
                '//구관리전산번호가 없어서 넘어갓다
                WLog("##########구관리전산번호가 없습니다.(" & IDX & ")", "\구관리전산그림변경(구관리전산없음).txt")
                IDX += 1
            End If

        Next
        Endtime = Now

        A.Remove(0, A.Length)
        A.AppendLine("시작시간=" & StartTime.ToString)
        A.AppendLine("종료시간=" & Endtime.ToString)
        A.AppendLine()
        A.AppendLine("경과시간=" & (Endtime - StartTime).ToString)
        A.AppendLine()
        A.AppendLine("전체=" & Me.IreaDataSet1.Tables(1).Rows.Count)
        A.AppendLine("정상변경=" & Cnt)
        A.AppendLine("변경불가=" & Me.IreaDataSet1.Tables(1).Rows.Count - Cnt)
        A.AppendLine()
        A.AppendLine("변경전 원본파일은 " & My.Application.Info.DirectoryPath & "\log\변경전파일")
        A.AppendLine("변경후 대상파일은 " & My.Application.Info.DirectoryPath & "\log\변경후파일")
        A.AppendLine("에 존재하며 원본파일은 원본위치(" & Me.lb_picdirectory.Text & ")" & " 에서")
        A.AppendLine(My.Application.Info.DirectoryPath & "\log\변경전파일" & " 로 이동되었습니다")
        A.AppendLine(My.Application.Info.DirectoryPath & "\log 에서 자세한 로그를 볼 수 있습니다")

        MsgBox(A.ToString, MsgBoxStyle.Information, "구그림파일 변경결과")


        ' Dim aA As New Process
        'Process.Start("explorer ", My.Application.Info.DirectoryPath & "\log")

    End Sub



    Private Sub cmb_picEXT_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmb_picEXT.SelectedIndexChanged
        '확장자를 바껏으니 목록을 갱신한다.
        Me.bt_picrefreh.PerformClick()
    End Sub


#Region "GETCNT : 화면하단에 기입/신규/철거/그림의 카운터를 보여줌"

    Private Sub GETCNT()
        Dim 신규, 기입, 철거, 그림 As Integer

        For Each A As FarPoint.Win.Spread.Row In Me.view1.ActiveSheet.Rows
            If Me.view1.ActiveSheet.Cells(A.Index, 21).Value = True Then 그림 += 1
            If Me.view1.ActiveSheet.Cells(A.Index, 20).Value = True Then 철거 += 1
            If Me.view1.ActiveSheet.Cells(A.Index, 19).Value = True Then 신규 += 1
            If Me.view1.ActiveSheet.Cells(A.Index, 18).Value = True Then 기입 += 1
        Next
        Me.lb_total.Text = "전체:" & Me.view1.ActiveSheet.RowCount & "/기입:" & 기입 & "/신규:" & 신규 & "/철거:" & 철거 & "/그림:" & 그림
    End Sub
#End Region

    Private Sub view1_ButtonClicked(ByVal sender As Object, ByVal e As FarPoint.Win.Spread.EditorNotifyEventArgs) Handles view1.ButtonClicked
        '//신규,기입,철거중 변하는게 있으면 목록수를 다시 갱신해준다.
        If e.Column = 21 OrElse e.Column = 18 OrElse e.Column = 19 OrElse e.Column = 20 Then
            'MsgBox(e.Column)
            Me.GETCNT()
        End If
    End Sub


    Private Sub view1_EnterCell(ByVal sender As Object, ByVal e As FarPoint.Win.Spread.EnterCellEventArgs) Handles view1.EnterCell
        Dim RowIndex As Integer = Me.view1.ActiveSheet.ActiveRowIndex
        Dim Fn As String = CStr(Me.view1.Cells("그림경로").Text & "\" & Me.view1.Cells("그림파일").Text).Replace("\\", "\")

        '//그림도 보여준다.
        If IO.File.Exists(Fn) Then
            Me.pic1.Image = Image.FromFile(Fn)
            NOTICE("<그림파일이 확인되었습니다>", Me.lb_msg)
        Else
            Me.pic1.Image = Nothing
            NOTICE("그림파일(" & Fn & ")이 존재하지 않습니다", Me.lb_msg)
        End If

    End Sub


    Private Sub BindingNavigatorAddNewItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_commit.Click
        CHk_Modify()
        Display_Data()
    End Sub

    Private Sub BindingNavigatorDeleteItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_cancel.Click
        If Not Me.IreaDataSet1.HasChanges Then
            NOTICE("변경된 데이터가 없습니다", Me.lb_msg)
            Return
        End If
        Me.IreaDataSet1.RejectChanges()
        NOTICE("변경된 데이터가 복원되었습니다", Color.Blue, Me.lb_msg)
    End Sub

    Private Sub m_fileallenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles m_fileall.Click

        Dim A As New SaveFileDialog
        A.Filter = "엑셀워크시트문서(*.XLS)|*.xls"
        A.FilterIndex = 0
        A.FileName = My.Application.Info.DirectoryPath & "\전체리스트목록"
        If A.ShowDialog() <> Windows.Forms.DialogResult.OK Then Return
        Me.view1.SaveExcel(A.FileName, FarPoint.Win.Spread.Model.IncludeHeaders.ColumnHeadersCustomOnly)
        My.Computer.Audio.Play(My.Application.Info.DirectoryPath & "\sound\notify.wav", AudioPlayMode.Background)
    End Sub

    Private Sub ToolStripButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        OldnumPicMan.cmb_picEXT.SelectedIndex = Me.cmb_picEXT.SelectedIndex
        OldnumPicMan.lb_picdirectory.Text = Me.lb_picdirectory.Text
        OldnumPicMan.MyFpoint1.DataSource = Me.bs
        OldnumPicMan.ShowDialog()
    End Sub


    Private Sub ToolStripButton3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton3.Click
        Me.Close()
    End Sub

    Private Sub m_filekiipenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles m_filekiip.Click
        'Me.BindingSource1.Filter = "기입"

        Dim Dv As New DataView(Me.IreaDataSet1.jjutable, "기입", "", DataViewRowState.CurrentRows)
        Me.view1.DataSource = Dv

        Dim A As New SaveFileDialog
        A.Filter = "엑셀워크시트문서(*.XLS)|*.xls"
        A.FilterIndex = 0
        A.FileName = My.Application.Info.DirectoryPath & "\기입선택목록"
        If A.ShowDialog() = Windows.Forms.DialogResult.OK Then
            Me.view1.SaveExcel(A.FileName, FarPoint.Win.Spread.Model.IncludeHeaders.ColumnHeadersCustomOnly)
            My.Computer.Audio.Play(My.Application.Info.DirectoryPath & "\sound\notify.wav", AudioPlayMode.Background)
        End If
        Me.view1.DataSource = Me.bs
    End Sub



    Private Sub m_filesinku_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles m_filesinku.Click
        Me.bs.Filter = "신규"

        Dim A As New SaveFileDialog
        A.Filter = "엑셀워크시트문서(*.XLS)|*.xls"
        A.FilterIndex = 0
        A.FileName = My.Application.Info.DirectoryPath & "\신규선택목록"
        If A.ShowDialog() <> Windows.Forms.DialogResult.OK Then
            Me.bs.Filter = ""
            Return
        End If

        Me.view1.SaveExcel(A.FileName, FarPoint.Win.Spread.Model.IncludeHeaders.ColumnHeadersCustomOnly)
        My.Computer.Audio.Play(My.Application.Info.DirectoryPath & "\sound\notify.wav", AudioPlayMode.Background)
        Me.bs.Filter = ""
    End Sub

    Private Sub m_filechol_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles m_filechol.Click
        Me.bs.Filter = "철거"

        Dim A As New SaveFileDialog
        A.Filter = "엑셀워크시트문서(*.XLS)|*.xls"
        A.FilterIndex = 0
        A.FileName = My.Application.Info.DirectoryPath & "\철거선택목록"
        If A.ShowDialog() <> Windows.Forms.DialogResult.OK Then
            Me.bs.Filter = ""
            Return
        End If

        Me.view1.SaveExcel(A.FileName, FarPoint.Win.Spread.Model.IncludeHeaders.ColumnHeadersCustomOnly)
        My.Computer.Audio.Play(My.Application.Info.DirectoryPath & "\sound\notify.wav", AudioPlayMode.Background)
        Me.bs.Filter = ""
    End Sub

    Private Sub m_filepicno_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles m_filepicno.Click
        Dim Dv As New DataView(Me.IreaDataSet1.jjutable, "not 그림", "", DataViewRowState.CurrentRows)
        Me.view1.DataSource = Dv

        Dim A As New SaveFileDialog
        A.Filter = "엑셀워크시트문서(*.XLS)|*.xls"
        A.FilterIndex = 0
        A.FileName = My.Application.Info.DirectoryPath & "\목록은있고사진파일이없는경우"
        If A.ShowDialog() <> Windows.Forms.DialogResult.OK Then
            Me.view1.DataSource = bs
            Return
        End If


        Me.view1.SaveExcel(A.FileName, FarPoint.Win.Spread.Model.IncludeHeaders.ColumnHeadersCustomOnly)
        My.Computer.Audio.Play(My.Application.Info.DirectoryPath & "\sound\notify.wav", AudioPlayMode.Background)
        Me.view1.DataSource = bs

    End Sub

    Private Sub ToolStripButton1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton1.Click
        Me.CHk_Modify()
        Me.Display_Data()
    End Sub

    Private Sub bt_chkimg_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_chkimg.Click
        If MsgBox("계속하시겠습니까?", MsgBoxStyle.Information + MsgBoxStyle.OkCancel, "확인") <> MsgBoxResult.Ok Then Return

        If Me.lb_picdirectory.Text = "" OrElse Me.lb_picdirectory.Text = "+" Then Me.bt_picselect.PerformClick()
        If Me.lb_picdirectory.Text = "" OrElse Me.lb_picdirectory.Text = "+" Then Return

        'BackWork = New Threading.Thread(AddressOf Check_image)
        'BackWork.Start()
        Check_image()
    End Sub

    Private Sub ToolStripButton4_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_compareImg.Click

    End Sub


    Private Sub filelistf_CellDoubleClick(ByVal sender As Object, ByVal e As FarPoint.Win.Spread.CellClickEventArgs) Handles filelistf.CellDoubleClick
        Dim 파일명 As String
        Dim 파일경로 As String
        Dim 파일Cell As FarPoint.Win.Spread.Cell
        Dim 경로cell As FarPoint.Win.Spread.Cell


        파일Cell = Me.filelistf.ActiveSheet.Cells(Me.filelistf.ActiveSheet.ActiveRowIndex, 0)
        경로cell = Me.filelistf.ActiveSheet.Cells(Me.filelistf.ActiveSheet.ActiveRowIndex, 1)

        파일명 = 파일Cell.Text
        파일경로 = 경로cell.Text

        Dim 신파일명 As String = InputBox("새로운 파일명을 입력하세요", "파일명변경", 파일명) : If 신파일명 = "" Then Return

        If System.IO.File.Exists(파일경로 & "\" & 파일명) = False Then
            MsgBox("원본파일이 존재하지않습니다", MsgBoxStyle.Critical, "변경 실패")
            Return
        End If

        System.IO.File.Move(파일경로 & "\" & 파일명, 파일경로 & "\" & 신파일명)
        NOTICE("파일명이 " & 신파일명 & " 으로 변경되었습니다", Color.Blue, Me.lb_msg)

        파일Cell.Text = 신파일명

    End Sub

    Private Sub filelistf_SelectionChanged(ByVal sender As Object, ByVal e As FarPoint.Win.Spread.SelectionChangedEventArgs) Handles filelistf.SelectionChanged
        Dim Fn As String
        Try
            Fn = Me.filelistf.ActiveSheet.Cells(Me.filelistf.ActiveSheet.ActiveRowIndex, 1).Text & "\" & Me.filelistf.ActiveSheet.Cells(Me.filelistf.ActiveSheet.ActiveRowIndex, 0).Text
            If System.IO.File.Exists(Fn) Then
                Dim A As New Bitmap(Fn)
                Dim B As New Bitmap(A)
                A.Dispose()
                Me.pic1.Image = B
                PRv_picture.PictureBox1.Image = Me.pic1.Image
            Else
                NOTICE("NoFile:" & Fn, Me.lb_msg)
            End If
        Catch ex As Exception
        End Try
    End Sub


    Private Sub bt_del1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_del1.Click
        If Me.filelistf.ActiveSheet.RowCount = 0 Then Return

        If MsgBox("파일을 삭제하시겠습니까?", MsgBoxStyle.OkCancel, "확인") <> MsgBoxResult.Ok Then Return

        Dim fC As FarPoint.Win.Spread.Cell = Me.filelistf.ActiveSheet.Cells(Me.filelistf.ActiveSheet.ActiveRowIndex, 0)
        Dim cc As FarPoint.Win.Spread.Cell = Me.filelistf.ActiveSheet.Cells(Me.filelistf.ActiveSheet.ActiveRowIndex, 1)
        Dim Row As FarPoint.Win.Spread.Row = Me.filelistf.ActiveSheet.ActiveRow

        If System.IO.File.Exists(cc.Text & "\" & fC.Text) = False Then
            MsgBox("원본파일이 존재하지않습니다", MsgBoxStyle.Critical, "변경 실패")
            Return
        End If

        System.IO.File.Delete(cc.Text & "\" & fC.Text)
        NOTICE("파일명 " & fC.Text & "이 삭제되었습니다", Color.Blue, Me.lb_msg)
        Row.Remove()
        Me.pic1.Image = Nothing
    End Sub


    Private Sub bt_clist1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_clist1.Click
        If MsgBox("목록을 지우시겠습니까?" & vbCrLf & "그림목록갱신을 누르면 목록이 다시 생성됩니다", MsgBoxStyle.Information + MsgBoxStyle.OkCancel, "확인") <> MsgBoxResult.Ok Then Return
        Me.PicDS.PicfileList.Clear()
        Me.PicDS.PicfileList.AcceptChanges()
    End Sub

    Private Sub ToolStripMenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem2.Click
        '//찾은파일목록
        If Me.filelistf.ActiveSheet.RowCount = 0 Then Return
        Dim A As New SaveFileDialog
        A.Filter = "엑셀워크시트문서(*.XLS)|*.xls"
        A.FilterIndex = 0
        A.FileName = My.Application.Info.DirectoryPath & "\전체파일목록"
        If A.ShowDialog() <> Windows.Forms.DialogResult.OK Then Return
        Me.filelistf.SaveExcel(A.FileName, FarPoint.Win.Spread.Model.IncludeHeaders.ColumnHeadersCustomOnly)
        My.Computer.Audio.Play(My.Application.Info.DirectoryPath & "\sound\notify.wav", AudioPlayMode.Background)
    End Sub

    Private Sub pic1_BackgroundImageChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles pic1.BackgroundImageChanged
        If PRv_picture.Visible = True Then PRv_picture.PictureBox1.Image = Me.pic1.Image
    End Sub

    Private Sub pic1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles pic1.Click
        If Me.pic1.Image Is Nothing Then Return
        PRv_picture.PictureBox1.Image = Nothing
        PRv_picture.PictureBox1.Image = Me.pic1.Image
        PRv_picture.Show()

    End Sub

    Private Sub bt_compareImg_ButtonClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_compareImg.ButtonClick
        If MsgBox("계속하시겠습니까?", MsgBoxStyle.Information + MsgBoxStyle.OkCancel, "확인") <> MsgBoxResult.Ok Then Return
        Compare_Image()
        GETCNT()
    End Sub

    Private Sub ToolStripTextBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripTextBox1.Click

    End Sub

    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        Try
            Me.PicfileListBindingSource.Filter = Me.TextBox1.Text
            Me.Text = Me.PicfileListBindingSource.Filter
        Catch ex As Exception
            Me.PicfileListBindingSource.Filter = ""
            Me.Text = ex.Message.ToString
        End Try
    End Sub

    Private Sub ToolStripTextBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ToolStripTextBox1.TextChanged
        Try
            Me.bs.Filter = Me.ToolStripTextBox1.Text
        Catch ex As Exception
            Me.bs.Filter = ""
        End Try
    End Sub

    Private Sub bt_colsizesave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_colsizesave.Click
        Me.filelistf.Setting_Save(False)
    End Sub

    Private Sub bt_colsizesave2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_colsizesave2.Click
        Me.view1.Setting_Save(False)
    End Sub

    Private Sub view1_CellClick(ByVal sender As System.Object, ByVal e As FarPoint.Win.Spread.CellClickEventArgs) Handles view1.CellClick

    End Sub
End Class