Imports System.Drawing
Imports System.Drawing.Printing
Imports System.Math
Imports CommonClassv2.ARINCLASS
Imports System.IO

Public Class Prn_Child_karo
    Dim AllLabels() As Str_Alllabels    '//전체갯수는 추가할대 셋팅한다.
    Dim S관리번호1(10) As MyControlOLEDBv2.MyLabel
    'Dim S관리번호2(4) As MyControlOLEDBv2.MyLabel
    Dim S전화번호1(0) As MyControlOLEDBv2.MyLabel
    Dim S전화번호2(0) As MyControlOLEDBv2.MyLabel
    Dim S지역명(0) As MyControlOLEDBv2.MyLabel
    Dim S일련번호(0) As MyControlOLEDBv2.MyLabel
    'Dim S구분자(0) As MyControlOLEDBv2.MyLabel

    Dim 지역명 As String = vbNullString
    Dim 관리번호1 As String = vbNullString
    'Dim 관리번호2 As String = vbNullString
    Dim 전화번호1 As String = vbNullString
    Dim 전화번호2 As String = vbNullString
    'Dim 구분자 As String

    Dim 패턴명_지역명 As String = "AREAPATTERN"
    Dim 패턴명_관리번호1 As String = "MAN1PATTERN"
    'Dim 패턴명_관리번호2 As String = "MAN2PATTERN"
    Dim 패턴명_전화번호1 As String = "TEL1ATTERN"
    Dim 패턴명_전화번호2 As String = "TEL2PATTERN"

    Dim NoView As Boolean = False   '//LOAD_STYLE 을 잠시 실행하지 않기위햇(중복실행방지)서 둔다.(..이벤트가.. -_-;;너무 중복으로 발생함)

    Dim SrcIdx As Integer = -1  '//원본 리뷰에서 클릭된 인덱스
    Dim Srcnum As Integer = -1  '//원본 리뷴에서 클릭된 번호값
    Dim Srcrow As DataRowView
    Dim FirstIdx As Integer = -1 '//새로 생성된 리뷰에서 적용될 인덱스

    'Public File As String = My.Application.Info.DirectoryPath & "\style.ini"   '//스타일 파일
    Dim StyleDir As New System.IO.DirectoryInfo(My.Application.Info.DirectoryPath & "\stylekr")
    Public FileC As String = My.Application.Info.DirectoryPath & "\styleCkr.ini" '//사용자 스타일 파일

    Private WithEvents pDoc As New PrintDocument()
    Public SelCon As New ArrayList '//선택된 레이블들이 저장된 배열이다.
    Public onlyOne As MyControlOLEDBv2.MyLabel  '//포커스를 가진 레이블이다.

    Dim srcTable As ireaDataSet.Detail_karoDataTable    '//데이터가 저장될 테이블
    Dim Dv As DataView   '//데이터뷰(실제로 이 뷰의 데이터를 가지고 출력을 행한다.)

    Dim printindex As Integer = 0   '//프린트되는 페이지 번호 이값이 -1 이면 현재페이지이므로 갱신하지 않고 출력한다.
    Dim PrintArray() As Integer '//프린트할 페이지의 배열번호

    Dim SettingFile As String = My.Application.Info.DirectoryPath & "\epole.ini"    '//환경설정 파일
    Dim LogFile As String = "\가로등순차로그.txt"

    Dim SetForm As Frm_Prnset

    Public Function Get_Control(ByVal index As Integer) As MyControlOLEDBv2.MyLabel
        Return Me.AllLabels(index).ctl
    End Function

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.UserPaint Or ControlStyles.DoubleBuffer, True) '//더블버퍼링
        Arin.WLog2(Auto_Log, "Form_Load()", LogFile)

        Me.Left = 10
        '//세부설정폼을 할당
        SetForm = New Frm_Prnset(Me)
        SetForm.PType = Frm_Prnset.E_Ftyle.가로등
        SetForm.Show()
        SetForm.Top = Me.Top

        Load_Setting()
        SetControls()   '//컨트롤을 초기화하고 셋팅한다.

        If srcTable Is Nothing Then
            'MsgBox("소스가없어서 기본셋팅으로 전환함")
            Arin.WLog2(Auto_Log, "개발자 기본셋팅으로 전환()", LogFile)
            Common.Auto_Log = True
            Me.NoView = True
            'Me.detTableAdapter1.Connection.ConnectionString = ConString
            'Me.detTableAdapter1.Fill(Me.IreaDataSet1.jjungtable, 1)
            'Me.srcTable = Me.IreaDataSet1.jjungtable
            Admin = True
        End If

        Arin.WLog2(Auto_Log, "개발자모드=" & Admin.ToString, LogFile)

        '**********************************************************
        If Admin Then
            For Each A As ToolStripDropDownItem In Me.mainmenu.DropDownItems    '//여기서 체크박스인것들만
                If A.GetType.Name.ToUpper = "TOOLSTRIPMENUITEM" Then
                    If CType(A, ToolStripMenuItem).CheckOnClick Then
                        A.Visible = True
                    End If
                End If
            Next
        End If
        Me.SETTOOLTIP()

        GetStyleList()  '//style.ini 에서 스타일목록명만 가져온다.
        If Srcrow Is Nothing Then '//가져온 행값이인덱스가 없으므로 1번째 스타일을 지정한다.
            Arin.WLog2(Auto_Log, "가져온 행값이 없습니다. firstidx=0 / 일반용으로 셋팅합니다()", LogFile)
            FirstIdx = 0 '//또한 맨 처음 데이터를 표시하게된다.
            SetForm.cmb_style.Text = "가로등"  '//여기서 데이터가 걸러지게된다.
        Else
            Srcnum = Srcrow("번호") 'srcTable.Rows(SrcIdx).Item("번호")
            SetForm.cmb_style.Text = "가로등"  '//여기서 데이터가 걸러지게된다.
        End If
        '**********************************************************
    End Sub

    '***********************************
    Private Sub SetControls()
        Arin.WLog2(Auto_Log, "SetControls()", LogFile)
        Dim CtlCnt As Short = 0

        For i As Integer = 0 To S지역명.GetUpperBound(0)  '//모든문자를 할당한다.
            S지역명(i) = New MyControlOLEDBv2.MyLabel
            S지역명(i).설명 = "지역명" & i + 1
            S지역명(i).Name = "A" & i + 1
            ReDim Preserve AllLabels(CtlCnt)
            Me.AllLabels(CtlCnt).ctl = S지역명(i)

            SetForm.cmb_controls.Items.Add(S지역명(i).설명)
            CtlCnt += 1
        Next

        For i As Integer = 0 To S관리번호1.GetUpperBound(0)  '//모든문자를 할당한다.
            S관리번호1(i) = New MyControlOLEDBv2.MyLabel
            S관리번호1(i).설명 = "관리번호I" & i + 1
            S관리번호1(i).Name = "M" & i + 1
            ReDim Preserve AllLabels(CtlCnt)
            Me.AllLabels(CtlCnt).ctl = S관리번호1(i)
            SetForm.cmb_controls.Items.Add(S관리번호1(i).설명)
            CtlCnt += 1
        Next


        'For i As Integer = 0 To S관리번호2.GetUpperBound(0)  '//모든문자를 할당한다.
        '    S관리번호2(i) = New MyControlOLEDBv2.MyLabel
        '    S관리번호2(i).설명 = "관리번호II" & i + 1
        '    S관리번호2(i).Name = "I" & i + 1
        '    ReDim Preserve AllLabels(CtlCnt)
        '    Me.AllLabels(CtlCnt).ctl = S관리번호2(i)
        '    setform.cmb_controls.Items.Add(S관리번호2(i).설명)
        '    CtlCnt += 1
        'Next

        For i As Integer = 0 To S전화번호1.GetUpperBound(0)  '//모든문자를 할당한다.
            S전화번호1(i) = New MyControlOLEDBv2.MyLabel
            S전화번호1(i).설명 = "전화번호(리)" & i + 1
            S전화번호1(i).Name = "T" & i + 1
            ReDim Preserve AllLabels(CtlCnt)
            Me.AllLabels(CtlCnt).ctl = S전화번호1(i)
            SetForm.cmb_controls.Items.Add(S전화번호1(i).설명)
            CtlCnt += 1
        Next

        'For i As Integer = 0 To S구분자.GetUpperBound(0)  '//모든문자를 할당한다.
        '    S구분자(i) = New MyControlOLEDBv2.MyLabel
        '    S구분자(i).설명 = "구분자" & i + 1
        '    S구분자(i).Name = "D" & i + 1
        '    ReDim Preserve AllLabels(CtlCnt)
        '    Me.AllLabels(CtlCnt).ctl = S구분자(i)
        '    setform.cmb_controls.Items.Add(S구분자(i).설명)
        '    CtlCnt += 1
        'Next

        For i As Integer = 0 To S전화번호2.GetUpperBound(0)  '//모든문자를 할당한다.
            S전화번호2(i) = New MyControlOLEDBv2.MyLabel
            S전화번호2(i).설명 = "전화번호(읍)" & i + 1
            S전화번호2(i).Name = "P" & i + 1
            ReDim Preserve AllLabels(CtlCnt)
            Me.AllLabels(CtlCnt).ctl = S전화번호2(i)
            SetForm.cmb_controls.Items.Add(S전화번호2(i).설명)
            CtlCnt += 1
        Next

        For i As Integer = 0 To S일련번호.GetUpperBound(0)  '//모든문자를 할당한다.
            S일련번호(i) = New MyControlOLEDBv2.MyLabel
            S일련번호(i).설명 = "일련번호" & i + 1
            S일련번호(i).Name = "N" & i + 1
            S일련번호(i).Visible = False
            ReDim Preserve AllLabels(CtlCnt)
            Me.AllLabels(CtlCnt).ctl = S일련번호(i)
            SetForm.cmb_controls.Items.Add(S일련번호(i).설명)
            CtlCnt += 1
        Next

    End Sub

    Public Sub GeTviewData(ByVal index As Integer, ByVal previewWindow As Boolean, Optional ByRef 번호패턴검사 As Integer = -1)
        ' Dim STARTTIME, ENDTIME As Date
        Arin.WLog2(Auto_Log, "GetviewData 진입()", LogFile)
        If Dv.Count <= 0 OrElse index < 0 OrElse index > Dv.Count Then
            Arin.WLog2(Auto_Log, "GetViewData : 인덱스가 없거나 문제가 잇어서 리턴합니다.()", LogFile)
            ' MsgBox("GETVIEWDATA : 데이터가 없거나 잘못된 인덱스 입니다", MsgBoxStyle.Information, "확인") ' & index & "/" & Me.CustFP1.ActiveSheet.RowCount & ")", MsgBoxStyle.Critical, "확인")
            Return '//잘못된 인덱스는 리턴
        End If

        관리번호1 = GetSpread(index, "관리번호1") & "-" & GetSpread(index, "관리번호2")
        '관리번호2 = GetSpread(index, "관리번호2")
        '구분자 = "-"
        지역명 = GetSpread(index, "지역명")
        전화번호1 = GetSpread(index, "전화번호1")
        전화번호2 = GetSpread(index, "전화번호2")

        Arin.WLog2(Auto_Log, "데이터뷰의 데이터를 변수로 가져오기 완료()", LogFile)

        Me.Text = "출력작업(" & 지역명 & " : " & 관리번호1 & ")"

        Arin.WLog2(Auto_Log, "PASE구문을 실행합니다.()", LogFile)
        '============ 여기는 따로 해석이 없는곳이다 ==========================================================
        Me.PARSE_지역명(지역명)
        Me.PARSE_전화번호1(전화번호1)
        Me.PARSE_전화번호2(전화번호2)
        '====================================================================================================
        If Me.cb_seq.Checked Then
            Me.S일련번호(0).MyText = GetSpread(index, "번호") 'index + 1
            Me.S일련번호(0).Visible = True
        Else
            Me.S일련번호(0).Visible = False
        End If
        'If Me.cb_seperate.Checked Then
        '    Me.S구분자(0).MyText = 구분자 'index + 1
        '    Me.S구분자(0).Visible = True
        'Else
        '    Me.S구분자(0).Visible = False
        'End If


        Arin.WLog2(Auto_Log, "패턴이있는 PASE 구문을 실행합니다.()", LogFile)
        'Me.PARSE_관리번호1(관리번호1)
        'Me.PARSE_관리번호2(관리번호2)
        'If Me.PARSE_고객번호(고객번호) Then Me.PARSE_고객번호패턴(고객번호)
        If Me.PARSE_관리번호1(관리번호1) Then Me.PARSE_관리번호1패턴(관리번호1)
        'If Me.PARSE_관리번호2(관리번호2) Then Me.PARSE_관리번호2패턴(관리번호2)
        'If Me.PARSE_관리번호3(관리번호3) Then Me.PARSE_관리번호3패턴(관리번호3)
        'If Me.PARSE_지점명(지점명) Then Me.PARSE_지점명패턴(지점명)

        '======================== 기타 =================================================
        '휴 끝났다.......................................................
        Arin.WLog2(Auto_Log, "Pewview 윈도우를 실행합니다.()", LogFile)
        Me.preview_window()
    End Sub

    Public Sub CLEAR_ITEM(ByVal DIV As String)
        Arin.WLog2(Auto_Log, "Clear_item div=" & DIV, LogFile)

        Select Case DIV.ToUpper
            Case "A"
                For i As Short = 0 To S지역명.GetUpperBound(0)
                    S지역명(i).MyText = ""
                    S지역명(i).Visible = False
                Next
                'Case "D"
                '    For i As Short = 0 To S구분자.GetUpperBound(0)
                '        S구분자(i).MyText = ""
                '        S구분자(i).Visible = False
                '    Next
            Case "M"
                For i As Short = 0 To S관리번호1.GetUpperBound(0)
                    S관리번호1(i).MyText = ""
                    S관리번호1(i).Visible = False
                Next
                'Case "I"
                '    For i As Short = 0 To S관리번호2.GetUpperBound(0)
                '        S관리번호2(i).MyText = ""
                '        S관리번호2(i).Visible = False
                '    Next
            Case "T"
                For i As Short = 0 To S전화번호1.GetUpperBound(0)
                    S전화번호1(i).MyText = ""
                    S전화번호1(i).Visible = False
                Next
            Case "P"
                For i As Short = 0 To S전화번호2.GetUpperBound(0)
                    S전화번호2(i).MyText = ""
                    S전화번호2(i).Visible = False
                Next

            Case Else
                MsgBox("Clear_Item 에 알수없는 문자 ( " & DIV & ") 입니다")
        End Select

    End Sub

    Public Sub SAVE_PATTERN(ByVal MIDNAME As String, ByVal DIV As Char, ByVal LEN As Short, Optional ByVal LOGFILENAME As String = "\패턴.TXT")   '패턴을 저장합니다. 패턴역시 위치/크기/장평등이 저장됩니다.
        '이건 길이패턴 저장하는 함수다.
        Dim Arinini As New MyINI(StyleDir.FullName & "\" & StyleList(SetForm.cmb_style.SelectedIndex).File)
        Dim TOBJ As MyControlOLEDBv2.MyLabel
        Dim Pname As String = MIDNAME & "I" & LEN
        If MsgBox("길이패턴을 저장하시겠습니까?", MsgBoxStyle.Information + MsgBoxStyle.OkCancel, "확인") <> MsgBoxResult.Ok Then
            NOTICE("길이패턴 저장이 취소되었습니다", Me.lb_msg)
            Return
        End If
        Arin.WLog2(Auto_Log, "save_pattern 패턴을 저장한다. midname= " & MIDNAME, "\가로등순차로그.txt")
        Select Case DIV.ToString.ToUpper
            Case "A"    '//지역명
                For i As Integer = 0 To Me.S지역명.GetUpperBound(0)
                    TOBJ = Me.S지역명(i)
                    Arin.WLog2(Auto_Log, MIDNAME & "패턴저장시 아이템=" & TOBJ.Name & "/" & TOBJ.Name.Substring(0, 1).ToUpper, LOGFILENAME)
                    Arinini.Write(Pname, "DESC", "저장된 길이패턴" & MIDNAME)

                    Arin.WLog2(Auto_Log, "최종선택완료=" & Pname & "      " & TOBJ.Name & "/" & TOBJ.Name.Substring(0, 1).ToUpper, LOGFILENAME)
                    Arinini.Write(Pname, TOBJ.Name & "pos", TOBJ.Left & "," & TOBJ.Top & "," & TOBJ.Width & "," & TOBJ.Height)
                    Arinini.Write(Pname, TOBJ.Name & "font", TOBJ.MyFont.Name & "," & TOBJ.MyFont.Size & "," & TOBJ.MyFont.Underline & "," & TOBJ.MyFont.Bold & "," & TOBJ.MyFont.Italic & "," & TOBJ.장평 & "," & TOBJ.장높이)
                    Arinini.Write(Pname, TOBJ.Name & "visible", TOBJ.Visible)
                    Arinini.Write(Pname, TOBJ.Name & "space", TOBJ.공백)

                Next
            Case "M"    '//관리번호1
                For i As Integer = 0 To Me.S관리번호1.GetUpperBound(0)
                    TOBJ = Me.S관리번호1(i)
                    Arin.WLog2(Auto_Log, MIDNAME & "패턴저장시 아이템=" & TOBJ.Name & "/" & TOBJ.Name.Substring(0, 1).ToUpper, LOGFILENAME)
                    Arinini.Write(Pname, "DESC", "저장된 길이패턴" & MIDNAME)

                    Arin.WLog2(Auto_Log, "최종선택완료=" & Pname & "      " & TOBJ.Name & "/" & TOBJ.Name.Substring(0, 1).ToUpper, LOGFILENAME)
                    Arinini.Write(Pname, TOBJ.Name & "pos", TOBJ.Left & "," & TOBJ.Top & "," & TOBJ.Width & "," & TOBJ.Height)
                    Arinini.Write(Pname, TOBJ.Name & "font", TOBJ.MyFont.Name & "," & TOBJ.MyFont.Size & "," & TOBJ.MyFont.Underline & "," & TOBJ.MyFont.Bold & "," & TOBJ.MyFont.Italic & "," & TOBJ.장평 & "," & TOBJ.장높이)
                    Arinini.Write(Pname, TOBJ.Name & "visible", TOBJ.Visible)
                    Arinini.Write(Pname, TOBJ.Name & "space", TOBJ.공백)
                Next
                Arinini.Write(Pname, "LineType", Me.tb_ntype.Text)
                Arinini.Write(Pname, "nseparate", SetForm.cmb_sep.SelectedIndex)
                'Case "I"    '//관리번호2
                '    For i As Integer = 0 To Me.S관리번호2.GetUpperBound(0)
                '        TOBJ = Me.S관리번호2(i)
                '        Arin.WLog2(Auto_Log, MIDNAME & "패턴저장시 아이템=" & TOBJ.Name & "/" & TOBJ.Name.Substring(0, 1).ToUpper, LOGFILENAME)
                '        Arinini.Write(Pname, "DESC", "저장된 길이패턴" & MIDNAME)

                '        Arin.WLog2(Auto_Log, "최종선택완료=" & Pname & "      " & TOBJ.Name & "/" & TOBJ.Name.Substring(0, 1).ToUpper, LOGFILENAME)
                '        Arinini.Write(Pname, TOBJ.Name & "pos", TOBJ.Left & "," & TOBJ.Top & "," & TOBJ.Width & "," & TOBJ.Height)
                '        Arinini.Write(Pname, TOBJ.Name & "font", TOBJ.MyFont.Name & "," & TOBJ.MyFont.Size & "," & TOBJ.MyFont.Underline & "," & TOBJ.MyFont.Bold & "," & TOBJ.MyFont.Italic & "," & TOBJ.장평 & "," & TOBJ.장높이)
                '        Arinini.Write(Pname, TOBJ.Name & "visible", TOBJ.Visible)
                '        Arinini.Write(Pname, TOBJ.Name & "space", TOBJ.공백)
                '    Next
                '    Arinini.Write(Pname, "LineType", Me.tb_ntype.Text)
                '    Arinini.Write(Pname, "nseparate", Me.cmb_sep.SelectedIndex)
            Case "T"    '//관리번호2
                For i As Integer = 0 To Me.S전화번호1.GetUpperBound(0)
                    TOBJ = Me.S전화번호1(i)
                    Arin.WLog2(Auto_Log, MIDNAME & "패턴저장시 아이템=" & TOBJ.Name & "/" & TOBJ.Name.Substring(0, 1).ToUpper, LOGFILENAME)
                    Arinini.Write(Pname, "DESC", "저장된 길이패턴" & MIDNAME)
                    Arin.WLog2(Auto_Log, "최종선택완료=" & Pname & "      " & TOBJ.Name & "/" & TOBJ.Name.Substring(0, 1).ToUpper, LOGFILENAME)
                    Arinini.Write(Pname, TOBJ.Name & "pos", TOBJ.Left & "," & TOBJ.Top & "," & TOBJ.Width & "," & TOBJ.Height)
                    Arinini.Write(Pname, TOBJ.Name & "font", TOBJ.MyFont.Name & "," & TOBJ.MyFont.Size & "," & TOBJ.MyFont.Underline & "," & TOBJ.MyFont.Bold & "," & TOBJ.MyFont.Italic & "," & TOBJ.장평 & "," & TOBJ.장높이)
                    Arinini.Write(Pname, TOBJ.Name & "visible", TOBJ.Visible)
                    Arinini.Write(Pname, TOBJ.Name & "space", TOBJ.공백)
                Next
            Case "P"    '//관리번호3
                For i As Integer = 0 To Me.S전화번호2.GetUpperBound(0)
                    TOBJ = Me.S전화번호2(i)
                    Arin.WLog2(Auto_Log, MIDNAME & "패턴저장시 아이템=" & TOBJ.Name & "/" & TOBJ.Name.Substring(0, 1).ToUpper, LOGFILENAME)
                    Arinini.Write(Pname, "DESC", "저장된 길이패턴" & MIDNAME)
                    Arin.WLog2(Auto_Log, "최종선택완료=" & Pname & "      " & TOBJ.Name & "/" & TOBJ.Name.Substring(0, 1).ToUpper, LOGFILENAME)
                    Arinini.Write(Pname, TOBJ.Name & "pos", TOBJ.Left & "," & TOBJ.Top & "," & TOBJ.Width & "," & TOBJ.Height)
                    Arinini.Write(Pname, TOBJ.Name & "font", TOBJ.MyFont.Name & "," & TOBJ.MyFont.Size & "," & TOBJ.MyFont.Underline & "," & TOBJ.MyFont.Bold & "," & TOBJ.MyFont.Italic & "," & TOBJ.장평 & "," & TOBJ.장높이)
                    Arinini.Write(Pname, TOBJ.Name & "visible", TOBJ.Visible)
                    Arinini.Write(Pname, TOBJ.Name & "space", TOBJ.공백)
                Next
            Case Else
                MsgBox("Save_Pattern 에 정의되지않은 문자(" & DIV & ") 가 발생하였습니다", MsgBoxStyle.Critical, "확인")
        End Select

        Arin.WLog2(Auto_Log, " save_pattern  데이터테이블갱신을 호출함낟.", "\가로등순차로그.txt")
        Me.데이터테이블갱신()
    End Sub
    Public Sub SAVE_PATTERNII(ByVal SRCSTR As String, ByVal MIDNAME As String, ByVal DIV As Char, Optional ByVal LOGFILENAME As String = "\패턴.TXT")   '패턴을 저장합니다. 패턴역시 위치/크기/장평등이 저장됩니다.
        '//이곳은 문자패턴을 저장한다.
        Dim Arinini As New MyINI(StyleDir.FullName & "\" & StyleList(SetForm.cmb_style.SelectedIndex).File)
        Dim BUF() As Char = SRCSTR.ToCharArray
        Dim mb As String = PATTERN_ENC(SRCSTR)
        Dim TOBJ As MyControlOLEDBv2.MyLabel
        Dim Pname As String = MIDNAME & "II" & mb.ToString

        If MsgBox("문자패턴을 저장하시겠습니까?", MsgBoxStyle.Information + MsgBoxStyle.OkCancel, "확인") <> MsgBoxResult.Ok Then
            NOTICE("문자패턴 저장이 취소되었습니다", Me.lb_msg)
            Return
        End If
        Arin.WLog2(Auto_Log, "save_pattern2 를 실행한다.", LogFile)

        Select Case DIV.ToString.ToUpper
            Case "A"    '//선로명
                For i As Integer = 0 To Me.S지역명.GetUpperBound(0)
                    TOBJ = Me.S지역명(i)
                    Arin.WLog2(Auto_Log, MIDNAME & "패턴저장시 아이템=" & TOBJ.Name & "/" & TOBJ.Name.Substring(0, 1).ToUpper, LOGFILENAME)
                    Arinini.Write(Pname, "DESC", "저장된 문자패턴 " & MIDNAME)
                    Arin.WLog2(Auto_Log, "최종선택완료=" & Pname & "      " & TOBJ.Name & "/" & TOBJ.Name.Substring(0, 1).ToUpper, LOGFILENAME)
                    Arinini.Write(Pname, TOBJ.Name & "pos", TOBJ.Left & "," & TOBJ.Top & "," & TOBJ.Width & "," & TOBJ.Height)
                    Arinini.Write(Pname, TOBJ.Name & "font", TOBJ.MyFont.Name & "," & TOBJ.MyFont.Size & "," & TOBJ.MyFont.Underline & "," & TOBJ.MyFont.Bold & "," & TOBJ.MyFont.Italic & "," & TOBJ.장평 & "," & TOBJ.장높이)
                    Arinini.Write(Pname, TOBJ.Name & "visible", TOBJ.Visible)
                    Arinini.Write(Pname, TOBJ.Name & "space", TOBJ.공백)
                Next
            Case "M"    '//전주번호
                For i As Integer = 0 To Me.S관리번호1.GetUpperBound(0)
                    TOBJ = Me.S관리번호1(i)
                    Arin.WLog2(Auto_Log, MIDNAME & "패턴저장시 아이템=" & TOBJ.Name & "/" & TOBJ.Name.Substring(0, 1).ToUpper, LOGFILENAME)
                    Arinini.Write(Pname, "DESC", "저장된 문자패턴 " & MIDNAME)
                    Arin.WLog2(Auto_Log, "최종선택완료=" & Pname & "      " & TOBJ.Name & "/" & TOBJ.Name.Substring(0, 1).ToUpper, LOGFILENAME)
                    Arinini.Write(Pname, TOBJ.Name & "pos", TOBJ.Left & "," & TOBJ.Top & "," & TOBJ.Width & "," & TOBJ.Height)
                    Arinini.Write(Pname, TOBJ.Name & "font", TOBJ.MyFont.Name & "," & TOBJ.MyFont.Size & "," & TOBJ.MyFont.Underline & "," & TOBJ.MyFont.Bold & "," & TOBJ.MyFont.Italic & "," & TOBJ.장평 & "," & TOBJ.장높이)
                    Arinini.Write(Pname, TOBJ.Name & "visible", TOBJ.Visible)
                    Arinini.Write(Pname, TOBJ.Name & "space", TOBJ.공백)
                Next
                Arinini.Write(Pname, "LineType", Me.tb_ntype.Text)
                Arinini.Write(Pname, "nseparate", SetForm.cmb_sep.SelectedIndex)
                'Case "I"    '//관리번호2
                '    For i As Integer = 0 To Me.S관리번호2.GetUpperBound(0)
                '        TOBJ = Me.S관리번호2(i)
                '        Arin.WLog2(Auto_Log, MIDNAME & "패턴저장시 아이템=" & TOBJ.Name & "/" & TOBJ.Name.Substring(0, 1).ToUpper, LOGFILENAME)
                '        Arinini.Write(Pname, "DESC", "저장된 문자패턴 " & MIDNAME)
                '        Arin.WLog2(Auto_Log, "최종선택완료=" & Pname & "      " & TOBJ.Name & "/" & TOBJ.Name.Substring(0, 1).ToUpper, LOGFILENAME)
                '        Arinini.Write(Pname, TOBJ.Name & "pos", TOBJ.Left & "," & TOBJ.Top & "," & TOBJ.Width & "," & TOBJ.Height)
                '        Arinini.Write(Pname, TOBJ.Name & "font", TOBJ.MyFont.Name & "," & TOBJ.MyFont.Size & "," & TOBJ.MyFont.Underline & "," & TOBJ.MyFont.Bold & "," & TOBJ.MyFont.Italic & "," & TOBJ.장평 & "," & TOBJ.장높이)
                '        Arinini.Write(Pname, TOBJ.Name & "visible", TOBJ.Visible)
                '        Arinini.Write(Pname, TOBJ.Name & "space", TOBJ.공백)
                '    Next
                '    Arinini.Write(Pname, "LineType", Me.tb_ntype.Text)
                '    Arinini.Write(Pname, "nseparate", Me.cmb_sep.SelectedIndex)
            Case Else
                MsgBox("Save_PatternII 에 정의되지않은 문자(" & DIV & ") 가 발생하였습니다", MsgBoxStyle.Critical, "확인")
        End Select

        Arin.WLog2(Auto_Log, "save_patter2 ㅔ서 데이터테이블 갱신을 ㅎ호출한다ㅣㅣ ", "\가로등순차로그.txt")
        Me.데이터테이블갱신()
    End Sub
    '---------------------------------
    Public Function PARSE_지역명(ByVal srcsTR As String) As Boolean
        Me.CLEAR_ITEM("A")
        Dim Log As String = "\Parse_지역명.txt"
        If srcsTR = "" OrElse Not Me.cb_area.Checked Then
            Arin.WLog2(Auto_Log, "Zero Length - Return", Log)
            Return False
        End If
        Dim Wlen As Short = srcsTR.Length
        Dim SepPos As Short = srcsTR.IndexOf(";")
        Dim SRC() As Char = srcsTR.ToCharArray

        Me.S지역명(0).Visible = True
        Me.S지역명(0).MyText = srcsTR

        Arin.WLog2(Auto_Log, "Length=" & Wlen & "   Sep=" & SepPos, Log)
        Return True
    End Function
    Public Function PARSE_관리번호1(ByVal srcsTR As String) As Boolean
        'Me.CLEAR_ITEM("M")
        If srcsTR = "" OrElse Not Me.cb_mnum.Checked Then
            Arin.WLog2(Auto_Log, "Zero Length or Not Check", LogFile)
            Return False
        End If
        Dim Wlen As Short = srcsTR.Length
        Dim SepPos As Short = srcsTR.IndexOf(";")
        Dim SRC() As Char = srcsTR.ToCharArray

        'For i As Integer = 0 To Wlen - 1   '//모든문자를 할당한다.
        '    S관리번호1(i).MyText = IIf(SRC(i) <> ";", SRC(i), "---")
        '    S관리번호1(i).Visible = True
        'Next

        Arin.WLog2(Auto_Log, "Length=" & Wlen & "   Sep=" & SepPos, LogFile)
        Return True
    End Function
    Public Sub PARSE_관리번호1패턴(ByVal srcstr As String)
        Dim Wlen As Short = srcstr.Length
        Dim SepPos As Short = srcstr.IndexOf(";")
        Dim SrC() As Char = srcstr.ToCharArray
        Dim retval As Integer = 0   ''0은 정상 1은 길이패턴없음 2는 3은 길이+문자없음


        Dim pname As String
        Dim Arinini As New MyINI(StyleDir.FullName & "\" & StyleList(SetForm.cmb_style.SelectedIndex).File)
        Dim CTLPOS() As String  '//위치정보
        Dim CTLFONT() As String
        Dim CTLVISIBLE As Boolean
        Dim PATTERN As String = PATTERN_ENC(srcstr)
        Dim TOBJ As MyControlOLEDBv2.MyLabel

        Dim 분리인덱스 As Short = 0
        Dim 번호형식 As String = "900"
        Dim Dr() As DataRow

        '//문자를먼저확인한다.
        pname = Me.패턴명_관리번호1 & "II" & PATTERN
        Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & "M1POS'")

        'MsgBox(pname & "         " & "설명 = '" & pname & "M1POS'")
        If Dr.GetUpperBound(0) = 0 Then '//데이터가 존재하므로 모두 적용을 한다.
            Arin.WLog2(Auto_Log, "관리번호패턴감지(문자) :  길이=" & Wlen & " 문자열=" & srcstr & " 패턴=" & PATTERN, LogFile)
            '//데이터는 최종적으로 번호형식에서 보낸다.
            '  MsgBox("pname 찾아서 있었다")

            분리인덱스 = Arinini.Read(pname, "nseparate", 0)
            번호형식 = Arinini.Read(pname, "LineType", "900")

            For i As Integer = 0 To Me.S관리번호1.GetUpperBound(0)
                TOBJ = Me.S관리번호1(i)
                TOBJ.Tag = ""   '//기존태그를 삭제한다.
                Try
                    '//상태를 읽어서 바로 적용한다.
                    Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & TOBJ.Name & "POS'")
                    If Dr.GetUpperBound(0) = 0 Then
                        CTLPOS = Dr(0)(1).ToString.Split(",")
                        TOBJ.Location = New Point(CTLPOS(0), CTLPOS(1))
                        TOBJ.Size = New Size(CTLPOS(2), CTLPOS(3))
                    End If

                    Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & TOBJ.Name & "FONT'")
                    If Dr.GetUpperBound(0) = 0 Then
                        CTLFONT = Dr(0)(1).ToString.Split(",")
                        TOBJ.MyFont = New Font(CTLFONT(0), CTLFONT(1), IIf(CTLFONT(3).ToUpper = "TRUE", FontStyle.Bold, FontStyle.Regular), GraphicsUnit.Point)
                        TOBJ.장평 = CTLFONT(5)
                        TOBJ.장높이 = CTLFONT(6)
                    End If

                    Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & TOBJ.Name & "VISIBLE'")
                    If Dr.GetUpperBound(0) = 0 Then
                        CTLVISIBLE = Dr(0)(1).ToString
                        TOBJ.Visible = CType(CTLVISIBLE, Boolean)
                    End If

                    Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & TOBJ.Name & "SPACE'")
                    If Dr.GetUpperBound(0) = 0 Then
                        TOBJ.공백 = Dr(0)(1).ToString
                    End If
                    TOBJ.Tag = "C"
                Catch ex As Exception
                    Arin.WLog2(Auto_Log, "문자패턴오류=" & ex.Message.ToString, LogFile)
                End Try
            Next
        Else
            Arin.WLog2(Auto_Log, "문자패턴불일치 길이=" & Wlen & " 문자열=" & srcstr & " 패턴=" & PATTERN, LogFile)
            retval += 2 '//패턴이 없으므로 바로 넘긴다.
        End If

        If retval = 2 Then  '//문자패턴이 없을경우에만 길이패턴을 확인한다.
            pname = Me.패턴명_관리번호1 & "I" & Wlen '//길이패턴 확인
            Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & "M1POS'")
            If Dr.GetUpperBound(0) = 0 Then '//데이터가 존재하므로 모두 적용을 한다.
                'MsgBox("pname 찾아서 있었다222222")

                Arin.WLog2(Auto_Log, "관리번호패턴감지(길이) :  길이=" & Wlen & " 문자열=" & srcstr, LogFile)
                '//데이터는 최종적으로 번호형식에서 보낸다.
                분리인덱스 = Arinini.Read(pname, "nseparate", 0)
                번호형식 = Arinini.Read(pname, "LineType", "900")

                For i As Integer = 0 To Me.S관리번호1.GetUpperBound(0)
                    TOBJ = Me.S관리번호1(i)
                    TOBJ.Tag = ""   '//기존태그를 삭제한다.
                    Try
                        '//상태를 읽어서 바로 적용한다.
                        Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & TOBJ.Name & "POS'")
                        If Dr.GetUpperBound(0) = 0 Then
                            CTLPOS = Dr(0)(1).ToString.Split(",")
                            TOBJ.Location = New Point(CTLPOS(0), CTLPOS(1))
                            TOBJ.Size = New Size(CTLPOS(2), CTLPOS(3))
                        End If

                        Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & TOBJ.Name & "FONT'")
                        If Dr.GetUpperBound(0) = 0 Then
                            CTLFONT = Dr(0)(1).ToString.Split(",")
                            TOBJ.MyFont = New Font(CTLFONT(0), CTLFONT(1), IIf(CTLFONT(3).ToUpper = "TRUE", FontStyle.Bold, FontStyle.Regular), GraphicsUnit.Point)
                            TOBJ.장평 = CTLFONT(5)
                            TOBJ.장높이 = CTLFONT(6)
                        End If

                        Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & TOBJ.Name & "VISIBLE'")
                        If Dr.GetUpperBound(0) = 0 Then
                            CTLVISIBLE = Dr(0)(1).ToString
                            TOBJ.Visible = CType(CTLVISIBLE, Boolean)
                        End If

                        Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & TOBJ.Name & "SPACE'")
                        If Dr.GetUpperBound(0) = 0 Then
                            TOBJ.공백 = Dr(0)(1).ToString
                        End If
                        TOBJ.Tag &= "L"
                    Catch ex As Exception
                        Arin.WLog2(Auto_Log, "길이 패턴오류=" & ex.Message.ToString, LogFile)
                    End Try
                Next
            Else
                Arin.WLog2(Auto_Log, "길이패턴불일치 기본스타일 복원  길이=" & Wlen & " 문자열=" & srcstr, LogFile)
                retval += 1 '//없다
            End If
        End If

        SetForm.cmb_sep.SelectedIndex = 분리인덱스

        'If 번호형식 = "999" Then    '//패턴이없었다는 말이다 번호형식을 어느정도 맞춰준다.
        '    'MsgBox("번호형식이 없어서 셋팅합니다(" & 번호 & "/" & 번호.Length)
        '    If 번호.Length <= 12 Then
        '        If 번호.Length <= 4 Then
        '            번호형식 = 번호.Length & "00"
        '        ElseIf 번호.Length <= 8 Then
        '            번호형식 = "4" & CStr(번호.Length - 4) & "0"
        '        Else
        '            번호형식 = "44" & CStr(번호.Length - 8)
        '        End If
        '    Else    '//12자리이상이므로 어덯게 쪼개야할지 3으로나눠서 ..int 대입을 하자
        '        번호형식 = CStr(Int(번호.Length / 3)) & CStr(Int(번호.Length / 3)) & CStr(번호.Length - Int(번호.Length / 3) * 2)
        '    End If
        '    'MsgBox("최종번호=" & 번호형식)
        'End If

        Me.tb_ntype.Text = 번호형식
        분리인덱스별출력("M", Me.관리번호1, 번호형식)  '//번호형식을 갱신해준다.

    End Sub
    Private Sub 분리인덱스별출력(ByVal ClearChar As Char, ByVal SrcStr As String, Optional ByVal msg As String = "999")
        Me.CLEAR_ITEM(ClearChar)
        Dim A() As Char = SrcStr.ToCharArray
        Dim P() As Char = msg.ToCharArray  '--번호형식인데 여기선 안쓴다.

        '//개별표시가 선택안되있으면 혼합으로 변경
        If SetForm.cmb_sep.SelectedIndex = -1 Then SetForm.cmb_sep.SelectedIndex = 0

        Dim NextCtl As MyControlOLEDBv2.MyLabel = Me.S관리번호1(0)
        Dim CurPos As Short = 0    '//몇번째 컨트롤까지 썻다는 표시
        Dim CPos As Short = 0       '//전체문자중 몇번째까지 했다는 표시
        Select Case SetForm.cmb_sep.SelectedIndex
            Case 0  '//혼합
                '//형식수가 4를 넘지않으면 개별 넘을경우 통합출력으로한다.
                '//연습데이터 342 : 345 R23L1 R9
                ' MsgBox("번호형식=" & msg & "/" & 번호 & "/p0=" & P(0))

                Me.tb_ntype.Enabled = True  '//분리엿을때 이것이 false 로 된다.
                If CInt(P(0).ToString) <> 0 AndAlso CInt(P(0).ToString) < 5 Then  '//첫줄에해당할 문자를 전부 개별로 넣는다.
                    ' MsgBox("1줄=" & msg & "/" & 번호 & "/p0=" & P(0))
                    For i As Int16 = 0 To (CInt(P(0).ToString) - 1) '//
                        If i <= A.GetUpperBound(0) Then '//정상적인 범위의 데이터일경우
                            Me.S관리번호1(i).MyText = IIf(A(i) <> ";", A(i), "")   '//0번째 (0,0)
                            'Me.S전주번호(i).Visible = True
                            'NextCtl = SetXdata(i, A)
                            CPos = i ' + 1
                            CurPos = i
                        End If
                    Next
                ElseIf CInt(P(0).ToString) > 4 Then   '//첫줄의 문자를 통합으로한다.
                    For i As Int16 = 0 To (CInt(P(0).ToString) - 1)
                        If i <= A.GetUpperBound(0) Then '//정상적인 범위의 데이터
                            Me.S관리번호1(CPos).MyText &= IIf(A(i) <> ";", A(i), "")    '//0번째 (0,0)
                            'Me.S전주번호(i).Visible = True
                            CurPos = i
                            'CurPos += 1
                            'NextCtl.MyText &= A(i)
                        End If
                    Next
                    'NextCtl = GetnextCtl(NextCtl)
                    'CurPos += 1 '//여기서 1이된다.
                End If


                'curpos 는 몇번째 번호까지 했다는것이다(그 다음번호를 가르킨다)
                'cpos 는 몇번째 컨트롤까지 썻다는 뜻이다.
                ' MsgBox("1번째출출력후 마지막위치값=" & CurPos)

                '//2번째줄을 테스트한다.

                If CPos = 0 AndAlso Me.S관리번호1(0).MyText = "" Then    '//컨트롤번호가 0일경우다. 만약 값이없으면 1번째줄에서 아무것도없엇따는뜻이다.
                    CPos = -1
                End If

                If CInt(P(1).ToString) > 0 AndAlso CInt(P(1).ToString) < 5 Then
                    ' MsgBox("2줄=" & msg & "/" & 번호 & "/p0=" & P(0))
                    For i As Int16 = CurPos + 1 To CInt(P(0).ToString) + CInt(P(1).ToString) - 1
                        If i <= A.GetUpperBound(0) Then
                            Me.S관리번호1(CPos + 1).MyText = IIf(A(i) <> ";", A(i), "")  '//0번째 (0,0)
                            CPos += 1
                            'Me.S전주번호(i).Visible = True
                            'NextCtl = SetXdata(i, A)

                            CurPos = i
                        End If
                    Next
                ElseIf CInt(P(1).ToString) > 0 Then '//통합출력
                    CPos += 1
                    For i As Int16 = CurPos + 1 To CInt(P(0).ToString) + CInt(P(1).ToString) - 1
                        If i <= A.GetUpperBound(0) Then
                            Me.S관리번호1(CPos).MyText &= IIf(A(i) <> ";", A(i), "")   '//0번째 (0,0)
                            'Me.S전주번호(CPos).Visible = True
                            'NextCtl.MyText &= A(i)
                            CurPos = i
                        End If
                    Next
                    'NextCtl = GetnextCtl(NextCtl)
                End If


                ' MsgBox("2번째출출력후 마지막위치값=" & CurPos)

                If CInt(P(2).ToString) > 0 AndAlso CInt(P(2).ToString) < 5 Then
                    ' MsgBox("3줄개별=" & msg & "/" & 번호 & "/p0=" & P(0))
                    For i As Int16 = CurPos + 1 To CInt(P(0).ToString) + CInt(P(1).ToString) + CInt(P(2).ToString) - 1
                        If i <= A.GetUpperBound(0) Then
                            '  MsgBox(i & "/" & A(i))
                            Me.S관리번호1(CPos + 1).MyText = IIf(A(i) <> ";", A(i), "")    '//0번째 (0,0)
                            CPos += 1
                            'Me.S전주번호(i).Visible = True
                            'NextCtl = SetXdata(i, A)
                            CurPos = i
                        End If

                    Next
                ElseIf CInt(P(2).ToString) > 0 Then '//통합출력
                    'MsgBox("3줄통합=" & msg & "/" & 번호 & "/p0=" & P(0))
                    CPos += 1
                    For i As Int16 = CurPos + 1 To CInt(P(0).ToString) + CInt(P(1).ToString) + CInt(P(2).ToString) - 1
                        If i <= A.GetUpperBound(0) Then
                            Me.S관리번호1(CPos).MyText &= IIf(A(i) <> ";", A(i), "")   '//0번째 (0,0)
                            'Me.S전주번호(CPos).Visible = True
                            'NextCtl.MyText &= A(i)
                            CurPos = i
                        End If
                    Next
                    'NextCtl = GetnextCtl(NextCtl)
                End If
                ' MsgBox("3번째출출력후 마지막위치값=" & CurPos)


            Case 1  '//분리 
                Me.tb_ntype.Enabled = False
                For i As Int16 = 0 To A.GetUpperBound(0) '//개별 12개의 열에 데이터를 출력한다.
                    Me.S관리번호1(i).MyText = IIf(A(i) <> ";", A(i), "")
                Next
            Case 2  '//통합
                Me.tb_ntype.Enabled = True
                For i As Integer = 0 To A.GetUpperBound(0)    '//모든 문자열을 집어넣는다 길이가 모자라면 중간에 없어진다.
                    If i <= CInt(P(0).ToString) - 1 Then
                        Me.S관리번호1(0).MyText &= IIf(A(i) <> ";", A(i), "")
                    ElseIf i <= (CInt(P(0).ToString) + CInt(P(1).ToString) - 1) Then
                        Me.S관리번호1(1).MyText &= IIf(A(i) <> ";", A(i), "")
                    Else
                        Me.S관리번호1(2).MyText &= IIf(A(i) <> ";", A(i), "")
                    End If
                Next
        End Select

        For i As Integer = 0 To Me.S관리번호1.GetUpperBound(0)
            Me.S관리번호1(i).Visible = IIf(Me.S관리번호1(i).MyText = "", False, True)
        Next
    End Sub
    'Public Function PARSE_관리번호2(ByVal srcsTR As String) As Boolean
    '    Me.CLEAR_ITEM("I")
    '    If srcsTR = "" OrElse Not Me.cb_mnum.Checked Then
    '        Arin.WLog2(Auto_Log, "Zero Length - Return", LogFile)
    '        Return False
    '    End If
    '    Dim Wlen As Short = srcsTR.Length
    '    Dim SepPos As Short = srcsTR.IndexOf(";")
    '    Dim SRC() As Char = srcsTR.ToCharArray
    '    For i As Integer = 0 To Wlen - 1   '//모든문자를 할당한다.
    '        S관리번호2(i).MyText = IIf(SRC(i) <> ";", SRC(i), "---")
    '        S관리번호2(i).Visible = True
    '    Next
    '    Arin.WLog2(Auto_Log, "Length=" & Wlen & "   Sep=" & SepPos, LogFile)
    '    Return True
    'End Function
    'Public Sub PARSE_관리번호2패턴(ByVal srcstr As String)
    '    Dim Wlen As Short = srcstr.Length
    '    Dim SepPos As Short = srcstr.IndexOf(";")
    '    Dim SrC() As Char = srcstr.ToCharArray

    '    Dim Pname As String = Me.패턴명_관리번호2 & "I" & Wlen
    '    Me.길이패턴연습(srcstr, Pname, LogFile, "I", Me.S관리번호2)

    '    Pname = Me.패턴명_관리번호2 & "II" & PATTERN_ENC(srcstr)
    '    Me.문자패턴연습(srcstr, Pname, LogFile, Me.S관리번호2)


    'End Sub
    Public Function PARSE_전화번호1(ByVal srcsTR As String) As Boolean
        Me.CLEAR_ITEM("T")
        Dim Log As String = "\Parse_전화번호1.txt"
        If srcsTR = "" OrElse Not Me.cb_tel1.Checked Then
            Arin.WLog2(Auto_Log, "Zero Length - Return", Log)
            Return False
        End If
        Dim Wlen As Short = srcsTR.Length
        Dim SepPos As Short = srcsTR.IndexOf(";")
        Dim SRC() As Char = srcsTR.ToCharArray

        Me.S전화번호1(0).Visible = True
        Me.S전화번호1(0).MyText = srcsTR

        Arin.WLog2(Auto_Log, "Length=" & Wlen & "   Sep=" & SepPos, Log)
        Return True
    End Function
    Public Function PARSE_전화번호2(ByVal srcsTR As String) As Boolean
        Me.CLEAR_ITEM("P")
        Dim Log As String = "\Parse_전화번호2.txt"
        If srcsTR = "" OrElse Not Me.cb_tel2.Checked Then
            Arin.WLog2(Auto_Log, "Zero Length - Return", Log)
            Return False
        End If
        Dim Wlen As Short = srcsTR.Length
        Dim SepPos As Short = srcsTR.IndexOf(";")
        Dim SRC() As Char = srcsTR.ToCharArray

        Me.S전화번호2(0).Visible = True
        Me.S전화번호2(0).MyText = srcsTR

        Arin.WLog2(Auto_Log, "Length=" & Wlen & "   Sep=" & SepPos, Log)
        Return True
    End Function
    Private Sub 패턴저장(ByVal 저장대상 As String)
        Dim PC, PL As Boolean
        Dim PLen As Short
        Dim PChr As String
        Dim PStr As String
        Dim CP As String = ""
        Select Case 저장대상
            Case "지역명"
                PC = IIf(Me.S지역명(0).Tag.ToString.IndexOf("C") > -1, True, False)
                PL = IIf(Me.S지역명(0).Tag.ToString.IndexOf("L") > -1, True, False)
                PLen = Me.지역명.Length
                PChr = PATTERN_ENC(지역명)
                PStr = Me.지역명
            Case "관리번호1"
                PC = IIf(Me.S관리번호1(0).Tag.ToString.IndexOf("C") > -1, True, False)
                PL = IIf(Me.S관리번호1(0).Tag.ToString.IndexOf("L") > -1, True, False)
                PLen = Me.관리번호1.Length
                PChr = PATTERN_ENC(관리번호1)
                PStr = Me.관리번호1
                'Case "관리번호2"
                '    PC = IIf(Me.S관리번호2(0).Tag.ToString.IndexOf("C") > -1, True, False)
                '    PL = IIf(Me.S관리번호2(0).Tag.ToString.IndexOf("L") > -1, True, False)
                '    PLen = Me.관리번호2.Length
                '    PChr = PATTERN_ENC(관리번호2)
                '    PStr = Me.관리번호2
            Case "전화번호1"
                PC = IIf(Me.S전화번호1(0).Tag.ToString.IndexOf("C") > -1, True, False)
                PL = IIf(Me.S전화번호1(0).Tag.ToString.IndexOf("L") > -1, True, False)
                PLen = Me.전화번호1.Length
                PChr = PATTERN_ENC(전화번호1)
                PStr = Me.전화번호1
            Case "전화번호2"
                PC = IIf(Me.S전화번호2(0).Tag.ToString.IndexOf("C") > -1, True, False)
                PL = IIf(Me.S전화번호2(0).Tag.ToString.IndexOf("L") > -1, True, False)
                PStr = Me.전화번호2
                PLen = PStr.Length
                PChr = PATTERN_ENC(PStr)
            Case Else
                MsgBox("알수없는 저장대상(" & 저장대상 & ") 입니다" & vbCrLf & "개발자에 문의하세요", MsgBoxStyle.Critical, "확인")
                Exit Sub
        End Select

        Dim Msg As System.Text.StringBuilder = Prn_Common.Get_SavePatternString(저장대상, PC, CP, PL, PStr, PLen, PChr)
        Dim A As MsgBoxResult = MsgBox(Msg.ToString, MsgBoxStyle.Information + MsgBoxStyle.YesNoCancel, "예) 길이저장 , 아니오) 문자저장 , 취소) 취소")
        If A = MsgBoxResult.Yes Then    '//길이저장
            Select Case 저장대상
                Case "지역명"
                    SAVE_PATTERN(Me.패턴명_지역명, "A", Me.지역명.Length, "\지역명패턴.TXT")    '//선로명의 패턴을 저장합니다.
                Case "관리번호1"
                    SAVE_PATTERN(Me.패턴명_관리번호1, "M", Me.관리번호1.Length, "\관리번호패턴1.TXT")    '//선로명의 패턴을 저장합니다.
                    'Case "관리번호2"
                    '    SAVE_PATTERN(Me.패턴명_관리번호2, "I", Me.관리번호2.Length, "\관리번호패턴2.TXT")    '//선로명의 패턴을 저장합니다.
                Case "전화번호1"
                    SAVE_PATTERN(Me.패턴명_전화번호1, "T", Me.전화번호1.Length, "\전화번호1패턴.TXT")    '//선로명의 패턴을 저장합니다.
                Case "전화번호2"
                    SAVE_PATTERN(Me.패턴명_전화번호2, "P", Me.전화번호2.Length, "\전화번호2패턴.TXT")    '//선로명의 패턴을 저장합니다.
                Case Else
                    MsgBox("알수없는 저장대상(" & 저장대상 & ") 입니다" & vbCrLf & "개발자에 문의하세요", MsgBoxStyle.Critical, "확인")
                    Exit Sub
            End Select
        ElseIf A = MsgBoxResult.No Then   '//문자저장
            Select Case 저장대상
                Case "지역명"
                    SAVE_PATTERNII(Me.지역명, Me.패턴명_지역명, "A", "\지역명패턴2.TXT")    '//선로명의 패턴을 저장합니다.
                Case "관리번호1"
                    SAVE_PATTERNII(Me.관리번호1, Me.패턴명_관리번호1, "M", "\관리번호패턴1.TXT")    '//선로명의 패턴을 저장합니다.
                    'Case "관리번호2"
                    '    SAVE_PATTERNII(Me.관리번호2, Me.패턴명_관리번호2, "I", "\관리번호패턴2.TXT")    '//선로명의 패턴을 저장합니다.
                Case "전화번호1"
                    SAVE_PATTERNII(Me.전화번호1, Me.패턴명_전화번호1, "T", "\전화번호1패턴2.TXT")    '//선로명의 패턴을 저장합니다.
                Case "전화번호2"
                    SAVE_PATTERNII(Me.전화번호2, Me.패턴명_전화번호2, "P", "\전화번호2패턴2.TXT")    '//선로명의 패턴을 저장합니다.

                Case Else
                    MsgBox("알수없는 저장대상(" & 저장대상 & ") 입니다" & vbCrLf & "개발자에 문의하세요", MsgBoxStyle.Critical, "확인")
                    Exit Sub
            End Select
        Else
            NOTICE("패턴저장이 취소되었습니다", Color.Red, Me.lb_msg)
        End If
    End Sub

    'Private Sub odflStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles odflStripMenuItem.Click
    '    SAVE_PATTERN(Me.패턴명_관리번호2, "I", Me.관리번호2.Length, "\관리번호2패턴.TXT")    '//선로명의 패턴을 저장합니다.
    'End Sub

    Private Sub ToolStripMenuItem6_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem6.Click
        SAVE_PATTERN(Me.패턴명_관리번호1, "M", Me.관리번호1.Length, "\관리번호1패턴.TXT")    '//선로명의 패턴을 저장합니다.
    End Sub

    'Private Sub olStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_mansave2.Click
    '    SAVE_PATTERNII(Me.관리번호2, Me.패턴명_관리번호2, "I", "\관리번호2패턴2.TXT")    '//선로명의 패턴을 저장합니다.
    'End Sub

    Private Sub ToolStripMenuItem5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_mansave1.Click
        SAVE_PATTERNII(Me.관리번호1, Me.패턴명_관리번호1, "M", "\관리번호1패턴2.TXT")    '//선로명의 패턴을 저장합니다.
    End Sub

    Private Sub ToolStripMenuItem7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem7.Click
        Me.패턴저장("관리번호2")
    End Sub

    Private Sub helpolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles helpolStripMenuItem.Click
        Me.패턴저장("관리번호1")
    End Sub

#Region "자주 바꿀일없는 부분"
    Public Function ChkNumPattern(ByVal index As Integer) As Int16
        Arin.WLog2(Auto_Log, "번호패턴을 체크합니다. int16을 반환합니다.()", LogFile)
        If Dv.Count <= 0 Or index < 0 OrElse index > Dv.Count Then
            'MsgBox("데이터가 없거나 잘못된 인덱스 입니다(" & index & "/" & Me.CustFP1.ActiveSheet.RowCount & ")", MsgBoxStyle.Critical, "확인")
            Return -1 '//잘못된 인덱스는 리턴
        End If

        Dim 검사번호패턴검사 As Integer = 0
        Dim 검사번호 As String

        검사번호 = GetSpread(index, "관리번호1") & GetSpread(index, "관리번호2")
        If 검사번호.Trim = "" Then Return -1 '//검사번호자체에 문제가잇을시 에 리턴

        Dim Wlen As Short = 검사번호.Length : If Wlen <= 0 Then Return -1 '//없는 글귀가 왓을때 턴해버린다.
        Dim SRC() As Char = 검사번호.ToCharArray
        Dim Log As String = "\Parse_검사번호패턴.txt"
        Dim SepPos As Short = 검사번호.IndexOf(";")
        Dim retval As Integer = 0   ''0은 정상 1은 길이패턴없음 2는 3은 길이+문자없음

        '//검사번호는 길이패턴을 하지않고 문자패턴만 한다.
        Dim pname As String
        Dim Arinini As New MyINI(StyleDir.FullName & "\" & StyleList(SetForm.cmb_style.SelectedIndex).File)
        Dim PATTERN As String = PATTERN_ENC(검사번호)

        '//먼저문자가있는지 확인한다.
        pname = "JJNUMPATTERNII" & PATTERN

        Dim Dr() As DataRow
        Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & "DESC'")
        Arin.WLog2(Auto_Log, "길이패턴의 존재여부 = " & Dr.GetUpperBound(0) & ":" & pname, "\지중순차로그.txt")
        If Dr.GetUpperBound(0) <> -1 Then '//있다.
            retval += 2
            'Arin.WLog2(Auto_Log, "관리구5번 문자를 찾았습니다 (" & pname & "DESC" & ")", Log)
        End If

        'If Arinini.Read(pname, "DESC") = vbNullString Then retval += 2 '//패턴이 없으므로 바로 넘긴다.

        pname = "JJNUMPATTERN" & Wlen
        Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & "DESC'")
        Arin.WLog2(Auto_Log, "문자패턴의 존재여부 = " & Dr.GetUpperBound(0) & ";" & pname, "\지중순차로그.txt")
        If Dr.GetUpperBound(0) <> -1 Then '//있다.
            retval += 1
            'Arin.WLog2(Auto_Log, "관리구5번 문자를 찾았습니다 (" & pname & "DESC" & ")", Log)
        End If
        Return retval '// 0이 리턴될것이다. 패턴이 모두 정상이란 뜻이다
    End Function
    Public Sub New()
        InitializeComponent()
        Arin.WLog2(Auto_Log, "New()", LogFile)
    End Sub
    Public Sub New(ByRef Src As ireaDataSet.Detail_karoDataTable, Optional ByVal IRow As DataRowView = Nothing)
        InitializeComponent()
        Arin.WLog2(Auto_Log, "New(srctable,srcRow)", LogFile)
        srcTable = Src  '//가져온 테이블을 임시테이블에 저장을 해두고 사용한다.
        Srcrow = IRow  '//이것은 클릭된 행번호이다. 이 행번호를 가지고 스타일을 판별한다
    End Sub
    Private Sub printform_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        'If Not BackWork Is Nothing Then BackWork = Nothing
        'Me.CustFP1.ColSize_Save()
        Me.SetForm.Close()
        Arin.WLog2(Auto_Log, "Form_Close", LogFile)
        Save_Setting()
    End Sub
    Private Sub printform_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
        'If SelCon Is Nothing Then Return
        'Dim Tobj As MyControlOLEDBv2.MyLabel
        Select Case e.KeyCode
            Case Keys.Up
                If e.Shift Then '//글씨높이
                    Me.CtrSize(True, -5)
                Else
                    Me.CtrPos(True, -5)
                End If
                'Me.ViewProperty(SelCon(0))
                e.Handled = True
            Case Keys.Down
                If e.Shift Then
                    Me.CtrSize(True, 5)
                Else
                    Me.CtrPos(True, 5)
                End If
                'ViewProperty(Tobj)
                e.Handled = True
            Case Keys.Left
                If e.Shift Then
                    Me.CtrSize(False, -5)
                Else
                    Me.CtrPos(False, -5)
                End If
                'ViewProperty(Tobj)
                e.Handled = True
            Case Keys.Right
                If e.Shift Then
                    Me.CtrSize(False, 5)
                Else
                    Me.CtrPos(False, 5)
                End If
                'ViewProperty(Tobj)
                e.Handled = True
            Case Keys.S
                If e.Control Then
                    Me.bt_mansave1.PerformClick()
                    Me.bt_mansave2.PerformClick()
                End If
            Case Keys.F8 '//프린트 미리보기
                Me.bt_print_preview.PerformClick()
            Case Keys.F9 '//프린트하기
                Me.bt_print.PerformClick()

        End Select

    End Sub

    Private Sub SETTOOLTIP()
        Arin.WLog2(Auto_Log, "Settooltip()", LogFile)
        Dim TMSG As New System.Text.StringBuilder()
        TMSG.AppendLine()
        TMSG.AppendLine("선택가능한 개체목록을 볼 수 잇습니다")
        TMSG.AppendLine()
        TMSG.AppendLine("화면에 보이지 않는 개체도 선택이 가능합니다")
        TMSG.AppendLine()
        Me.ToolTip1.SetToolTip(SetForm.cmb_controls, TMSG.ToString)


        TMSG = New System.Text.StringBuilder()
        TMSG.AppendLine()
        TMSG.AppendLine("<개체들의 상태를 확인할 수 있습니다>")
        TMSG.AppendLine()
        TMSG.AppendLine("더블클릭시 임시적으로 해당 문자를 수정할 수 있습니다.")
        TMSG.AppendLine("왼쪽클릭시 해당개체만 선택됩니다.")
        TMSG.AppendLine("Ctrl + 왼쪽클릭시 해당개체가 속한 그룹이 선택됩니다.")
        TMSG.AppendLine("우클릭시 선택된 개체가 추가됩니다(다중선택기능)")
        TMSG.AppendLine()
        TMSG.AppendLine("[번호출력시 색상구분]")
        TMSG.AppendLine("흑색 :  문자패턴 적용")
        TMSG.AppendLine("녹색 :  길이패턴 적용")
        TMSG.AppendLine("적색 :  길이,문자패턴 미적용")
        TMSG.AppendLine()
        TMSG.AppendLine(">>환경설정에서 색상구분이 가능하도록 설정되어야 합니다")
        TMSG.AppendLine()
        Me.ToolTip1.SetToolTip(Me.PictureBox1, TMSG.ToString)

        TMSG = New System.Text.StringBuilder()
        TMSG.AppendLine("녹색은 길이패턴만 적용된 아이템이며")
        TMSG.AppendLine("적색은 길이,문자패턴이 존재하지 않는 아이템입니다")
        TMSG.AppendLine("흑색은 문자패턴이나 길이,문자패턴이 존재하는 경우입니다.")
        TMSG.AppendLine()
        'Me.ToolTip1.SetToolTip(Me.X1, X1.설명 & vbCrLf & TMSG.ToString)
        'Me.ToolTip1.SetToolTip(Me.X2, X2.설명 & vbCrLf & TMSG.ToString)
        'Me.ToolTip1.SetToolTip(Me.X3, X3.설명 & vbCrLf & TMSG.ToString)

    End Sub
    Private Sub con_dclick(ByVal sender As Object, ByVal e As System.EventArgs)
        Arin.WLog2(Auto_Log, "개체를 더블클릭했습니다.(이것은 사용되지 않음)", LogFile)
        Dim Msg As New System.Text.StringBuilder("변경할 값을 입력하세요")
        Msg.AppendLine("줄바꿈을하려면 \n 을 입력하세요")
        Msg.AppendLine("예) 세로로 12를 출력하려면 1\n2 을 입력하세요")
        Msg.AppendLine()
        Msg.AppendLine("변경한 값은 현재페이지에만 적용됩니다")
        Dim A As MyControlOLEDBv2.MyLabel = sender
        Dim Val As String = InputBox(Msg.ToString, "변경", A.MyText)
        If Val = "" Then Return
        Val = Val.Replace("\n", vbCrLf)
        A.MyText = Val
        '//preview 는 아마도 픽쳐박스 더블클릭에서 정의한듯 하다.
    End Sub
    Private Sub Save_Setting()
        Arin.WLog2(Auto_Log, "현재 설정(스타일)을 저장합니다.", LogFile)
        Dim A As New MyINI(SettingFile)
        A.Write("PRINTFORM", "printername", Frm_Prnset.cmb_prnlist.Text)   '//패턴검사조건 콤보박스      
    End Sub
    Private Sub Load_Setting()
        Arin.WLog2(Auto_Log, "현재설정(스타일)을 가져옵니다.()", LogFile)
        Arin.WLog2(Auto_Log, "Load_Setting()", LogFile)
        Dim a As New MyINI(SettingFile)
        Frm_Prnset.cmb_prnlist.Text = a.Read("PRINTFORM", "printername", "")
    End Sub
    Private Function GetSpread(ByVal row As Integer, ByVal col As Integer) As String
        Try
            Return Dv(row)(col)
            'Return Me.CustFP1_Sheet1.Cells(row, col).Value.ToString
        Catch ex As Exception
            Return ""
        End Try
    End Function
    Private Function GetSpread(ByVal row As Integer, ByVal colname As String) As String
        Try
            Return Dv(row)(colname)
            'Return Me.CustFP1_Sheet1.Cells(row, col).Value.ToString
        Catch ex As Exception
            Return ""
        End Try
    End Function

    Public Sub GetStyleList()
        Arin.WLog2(Auto_Log, "GetStyleList진입()", LogFile)
        '//스타일명을 가져와서 콤보박스에 표시합니다.
        '//style 폴더아래의 ini 파일전체를 스타일 이라한다.
        '//파일을 읽어서 메모리에 저장한다.
        ' Dim Arinini As MyINI
        Dim CurIdx As Integer = 0
        Dim StyleCnt As Short = StyleDir.GetFiles("*.ini").GetUpperBound(0)
        ReDim StyleList(StyleCnt)
        Dim Section, Value As New ArrayList
        Dim SectionIdx As Integer = 0

        Arin.WLog2(Auto_Log, "GetStyleList(파일에서 스타일목을 가져온다)", LogFile)

        For Each FI As IO.FileInfo In StyleDir.GetFiles("*.ini")
            Arin.WLog2(Auto_Log, "파일명=(" & FI.FullName & ") 의 스타일을 가져옵니다 메모리로", LogFile)
            GetAllsection(FI.FullName, CurIdx)
            SetForm.cmb_style.Items.Clear()
            SetForm.cmb_style.Items.Add(StyleList(CurIdx).Desc)
            CurIdx += 1
        Next

    End Sub
    Private Sub 데이터테이블갱신()
        Arin.WLog2(Auto_Log, "데이터테이블 갱신()", LogFile)
        GetAllsection(StyleDir.FullName & "\" & StyleList(SetForm.cmb_style.SelectedIndex).File, SetForm.cmb_style.SelectedIndex)
    End Sub
    Public Sub GetAllsection(ByVal FILENAME As String, ByVal CurIdx As Short)
        Dim FS As New System.IO.FileStream(FILENAME, FileMode.Open)
        Dim SR As New StreamReader(FS, System.Text.Encoding.Default)
        Dim Findkey As String = ""
        Dim Line As String
        Dim KeyPos As Integer = -1
        Dim Seppos As Integer = -1
        Dim dr As DataRow


        Arin.WLog2(Auto_Log, "getallSection : 파일의 모든내용을 테이블로 옴긴다.()", LogFile)

        StyleList(CurIdx).PATTERNTABLE = New DataTable
        StyleList(CurIdx).PATTERNTABLE.Columns.Add("설명")
        StyleList(CurIdx).PATTERNTABLE.Columns.Add("값")

        '//초기값셋팅
        StyleList(CurIdx).Backimg = ""
        StyleList(CurIdx).CanvasX = 292
        StyleList(CurIdx).CanvasY = 520
        StyleList(CurIdx).Desc = "기본걸명"
        StyleList(CurIdx).dummmyx = 0
        StyleList(CurIdx).dummmyy = 50
        StyleList(CurIdx).Dummy = False
        StyleList(CurIdx).Dummytype = 1
        StyleList(CurIdx).File = ""
        StyleList(CurIdx).Filter = ""
        StyleList(CurIdx).LandScape = False
        StyleList(CurIdx).MarginX = 50
        StyleList(CurIdx).MarginY = 50
        StyleList(CurIdx).picstyle = 1
        StyleList(CurIdx).PrintFontOffset = 0
        StyleList(CurIdx).ScaleX = 1.5
        StyleList(CurIdx).ScaleY = 1.5
        StyleList(CurIdx).Viewimage = False

        '//모든줄을 읽어서  섹션&키  = 설명  으로 한다.
        While SR.Peek > -1
            Line = SR.ReadLine.ToUpper

            If Line <> "" Then



                If Findkey = "" Then '//아직 셋팅된 키가 없다면
                    If Line.ToUpper.IndexOf("[") > -1 Then Findkey = Line.Trim("[").ToString.Trim("]").ToString
                Else   '//셋팅된 키가 있다면 테이블에 추가해준다.
                    If Line.IndexOf("[") = -1 Then  '//그다음 키가 오기전까지 모두 추가한다.
                        Seppos = Line.IndexOf("=")

                        '   MsgBox(Line.Substring(0, Seppos).ToUpper)

                        Select Case Line.Substring(0, Seppos).ToUpper
                            Case "DESC"
                                If Findkey.ToUpper = "STYLE" Then
                                    StyleList(CurIdx).Desc = Line.Substring(Seppos + 1).ToUpper
                                Else
                                    dr = StyleList(CurIdx).PATTERNTABLE.NewRow
                                    dr(0) = CStr(Findkey & Line.Substring(0, Seppos)).ToUpper
                                    dr(1) = Line.Substring(Seppos + 1).ToUpper
                                    StyleList(CurIdx).PATTERNTABLE.Rows.Add(dr)
                                End If
                            Case "FILE" : StyleList(CurIdx).File = Line.Substring(Seppos + 1).ToUpper
                            Case "BACKIMG" : StyleList(CurIdx).Backimg = Line.Substring(Seppos + 1).ToUpper
                            Case "CANVASX" : StyleList(CurIdx).CanvasX = Line.Substring(Seppos + 1).ToUpper
                            Case "CANVASY" : StyleList(CurIdx).CanvasY = Line.Substring(Seppos + 1).ToUpper
                            Case "DUMMMYX" : StyleList(CurIdx).dummmyx = Line.Substring(Seppos + 1).ToUpper
                            Case "DUMMMYY" : StyleList(CurIdx).dummmyy = Line.Substring(Seppos + 1).ToUpper
                            Case "LANDSCAPE" : StyleList(CurIdx).LandScape = Line.Substring(Seppos + 1).ToUpper
                            Case "MARGINX" : StyleList(CurIdx).MarginX = Line.Substring(Seppos + 1).ToUpper
                            Case "MARGINY" : StyleList(CurIdx).MarginY = Line.Substring(Seppos + 1).ToUpper
                            Case "PICSTYLE" : StyleList(CurIdx).picstyle = Line.Substring(Seppos + 1).ToUpper
                            Case "PRINTFONTOFFSET" : StyleList(CurIdx).PrintFontOffset = Line.Substring(Seppos + 1).ToUpper
                            Case "SCALEX" : StyleList(CurIdx).ScaleX = Line.Substring(Seppos + 1).ToUpper
                            Case "SCALEY" : StyleList(CurIdx).ScaleY = Line.Substring(Seppos + 1).ToUpper
                            Case "VIEWIMAGE" : StyleList(CurIdx).Viewimage = Line.Substring(Seppos + 1).ToUpper
                            Case "FILTER" : StyleList(CurIdx).Filter = Line.Substring(Seppos + 1).ToUpper
                            Case Else
                                dr = StyleList(CurIdx).PATTERNTABLE.NewRow
                                dr(0) = CStr(Findkey & Line.Substring(0, Seppos)).ToUpper
                                dr(1) = Line.Substring(Seppos + 1).ToUpper
                                StyleList(CurIdx).PATTERNTABLE.Rows.Add(dr)
                        End Select



                    Else
                        Findkey = Line.Trim("[").ToString.Trim("]").ToString
                    End If
                End If
            End If
        End While
        ' MsgBox(StyleList(CurIdx).Filter)
        SR.Close()
        FS.Close()

    End Sub

    Public Function Prepare_Print() As Boolean '//범위내의 페이지번호와 일치하는 번호를 찾아서 배열에 할당한다.


        Me.printindex = 0   '//배열의 첫번으로 출력을 준비한다.

        Me.pDoc.DefaultPageSettings.Margins.Left = SetForm.tb_marginX.Text  '//좌,우 여백 설정
        Me.pDoc.DefaultPageSettings.Margins.Top = SetForm.tb_marginY.Text
        Me.pDoc.DefaultPageSettings.Landscape = SetForm.rad_land.Checked ' IIf(Me.cmb_landscape.SelectedIndex = 0, False, True) '//가로,세로 출력결정
        '//프린터명이 지정되어있다면 해당 프린터로설정,없으면 기본프린터
        If SetForm.cmb_prnlist.Text <> "" Then Me.pDoc.PrinterSettings.PrinterName = SetForm.cmb_prnlist.Text

        Dim Prn_Type As C_Epole.E_PrintRange
        If Me.SetForm.rad_rangeall.Checked Then Prn_Type = C_Epole.E_PrintRange.All
        If Me.SetForm.rad_Rangecurr.Checked Then Prn_Type = C_Epole.E_PrintRange.Current
        If Me.SetForm.rad_rangecustom.Checked Then Prn_Type = C_Epole.E_PrintRange.Custom

        Return C_Epole.Set_PrnRange(Me.Dv, Me.BindingNavigatorPositionItem.Text, Me.PrintArray, Prn_Type, Me.SetForm.tb_printrange.Text.Trim)
    End Function
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Print_Preview()
    End Sub
    Public Sub Print_Preview()
        Arin.WLog2(Auto_Log, "print_preview 미리보기 버튼을 눌렀을때다.()", LogFile)
        If Not Prepare_Print() Then
            MsgBox("인쇄할 목록이 없습니다", MsgBoxStyle.Critical, "확인")
            Return
        End If
        Dim Preview As New PrintPreviewDialog()
        Try
            Preview.Document = pDoc
            Preview.ShowDialog()

        Catch EX As Exception
            MsgBox("Prrint_Preview Error : " & EX.Message)
        End Try
    End Sub
    Private Sub pDoc_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles pDoc.PrintPage

        Arin.WLog2(Auto_Log, "proc_printpage 프린트패이지를 작성한다 중요하다.()", LogFile)

        Dim fmt As New StringFormat(StringFormatFlags.LineLimit)
        Dim MyFont As Font
        Dim NewFontSize As Int16 = 10
        Dim dummy As Boolean = False    '//이값이 true 이면 출력시 변위를 지정해서 출력한다.
        Dim C As MyControlOLEDBv2.MyLabel

        '페이지 구분을 이해하고 몇개를 찍을지 결정한다.
        'Debug.Print("프린터인덱스=" & Me.printindex)
        'Debug.Print("프린터배열=" & Me.PrintArray.GetUpperBound(0))

        If Me.printindex <> -1 Then Me.GeTviewData(Me.PrintArray(Me.printindex), False) '//페이지를 갱신하고 출력을 시작한다.
        e.Graphics.ScaleTransform(SetForm.tb_scalex.Text, SetForm.tb_scaley.Text)

        ' If Not Me.PictureBox1.BackgroundImage Is Nothing Then e.Graphics.DrawImage(Me.PictureBox1.BackgroundImage, 0, 0)

Dummyflag:  '//--2장출력일경우 이부분에서 다시 시작한다.


        For i As Integer = 0 To Me.AllLabels.GetUpperBound(0)
            C = Me.AllLabels(i).ctl
            If C.Visible = True AndAlso C.MyText <> "" Then
                '//myfont 는 글꼴의 일괄크기변경 옵션의의해서 생성됨
                NewFontSize = C.MyFont.Size + SetForm.tb_myfontsize.Text
                If NewFontSize < 0 Then NewFontSize = 0

                MyFont = New Font(C.MyFont.FontFamily, NewFontSize, C.MyFont.Style)
                If C.장평 = 100 AndAlso C.장높이 = 100 Then '//장평미사용 문자열 처리
                    e.Graphics.DrawString(C.최종문자, MyFont, Brushes.Black, New Point(C.Left + e.PageSettings.Margins.Left + IIf(dummy, SetForm.tb_secx.Text, 0), C.Top + e.PageSettings.Margins.Top + IIf(dummy, SetForm.tb_secy.Text, 0)))
                    'e.Graphics.RotateTransform(Me.TextBox3.Text)
                Else    '//장평사용 이미지 처리
                    Dim NewX, Newy As Integer
                    Dim SrcDpix, SrcDPiY As Single
                    'MsgBox(Tobj.장높이)
                    SrcDpix = C.CreateGraphics.DpiX
                    SrcDPiY = C.CreateGraphics.DpiY

                    NewX = C.GetSize(MyFont).Width * (C.장평 / 100) * (e.Graphics.DpiX / SrcDpix)
                    Newy = C.GetSize(MyFont).Height * (C.장높이 / 100) * (e.Graphics.DpiY / SrcDPiY)

                    Dim BMP As New Bitmap(NewX, Newy, e.Graphics)
                    Dim G As Graphics = Graphics.FromImage(BMP)

                    G.ScaleTransform((C.장평 / 100), (C.장높이 / 100))
                    G.DrawString(C.최종문자, MyFont, Brushes.Black, 0, 0)
                    G.Dispose()
                    e.Graphics.DrawImage(BMP, New Point(C.Left + e.PageSettings.Margins.Left + IIf(dummy, SetForm.tb_secx.Text, 0), C.Top + e.PageSettings.Margins.Top + IIf(dummy, SetForm.tb_secy.Text, 0))) ', CInt(GetSize.Width * (v장평 / 100)), GetSize.Height)
                    'e.Graphics.RotateTransform(Me.TextBox3.Text)
                End If
            End If
        Next

        '//페이지가 있던없던 2장복사를 먼저 확인한다.
        '//다음페이지가 잇으면 다음기능을 확인하고 그렇지 않을경우에는 한장복사만 확인한다.
        If dummy = False AndAlso SetForm.cb_dummy.Checked Then   '//2장복사일경우에는  현재복사인지 다음복사인지 체크

            dummy = True
            If SetForm.cmb_dummy.SelectedIndex = 0 Then  '//현재복사는 궂이 다음장없어도 가능하다.
                'dummy = True
                ' MsgBox("잇던없던 현재복사")
                GoTo Dummyflag
            Else    '//다음복사이므로 다음장이잇는지 확인하고해야한다.
                If Me.printindex >= 0 AndAlso Me.printindex < Me.PrintArray.GetUpperBound(0) Then   '//다음장이있다.
                    Me.printindex += 1  '/1장넘기고 
                    Me.GeTviewData(Me.PrintArray(Me.printindex), False)    '//데이터표시하고
                    GoTo Dummyflag  '//바로 출력다시한다.
                End If
                '다음장이없으므로 그냥 넘어간다.
                e.HasMorePages = False
            End If
        Else    '//다음장으로넘깁니다.
            If Me.printindex >= 0 AndAlso Me.printindex < Me.PrintArray.GetUpperBound(0) Then   '//다음장이있다.
                dummy = False   '//장수를 넘어가면 더미를 해제한다.
                Me.printindex += 1
                e.HasMorePages = True
            Else
                e.HasMorePages = False
            End If
        End If
        '   e.Graphics.RotateTransform(Me.TextBox3.Text)
        e.Graphics.Dispose()
    End Sub
    Public Sub Print()
        If MsgBox("인쇄를 하시겠습니까?", MsgBoxStyle.Information + MsgBoxStyle.OkCancel, "확인") = MsgBoxResult.Ok Then
            Arin.WLog2(Auto_Log, "print 바로 출력을 하라는 명령이다()", "\Alllog.txt")
            If Me.Prepare_Print() Then
                pDoc.Print()
            Else
                MsgBox("인쇄가능한 목록이 없습니다", MsgBoxStyle.Critical, "확인")
            End If
        Else
            NOTICE("인쇄가 취소되었습니다", Color.Tomato, Me.lb_msg)
        End If
    End Sub
    Private Sub con_Mmove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
        Arin.WLog2(Auto_Log, "con _move 개체이동할 프로시져인데 현재 안쓴다.()", LogFile)
        If My.Computer.Keyboard.CtrlKeyDown AndAlso e.Button = Windows.Forms.MouseButtons.Left Then
            ' Me.Text = CType(sender, Label).Left & "/" & e.X
            CType(sender, MyControlOLEDBv2.MyLabel).Left += e.X
            CType(sender, MyControlOLEDBv2.MyLabel).Top += e.Y
        End If
    End Sub

    Private Sub ViewBackImage()
        Arin.WLog2(Auto_Log, "viewBackImage 배경이미지를 표시합니다.()", LogFile)
        If Not System.IO.File.Exists(SetForm.tb_picfile.Text) Then
            SetForm.CheckBox4.Checked = False
        Else
            Me.PictureBox1.BackgroundImage = Image.FromFile(SetForm.tb_picfile.Text)
        End If
    End Sub
    Private Sub CheckBox4_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)

    End Sub
    Private Sub Label11_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

    End Sub
    Public Sub CtrPos(ByVal vertical As Boolean, ByVal offset As Short)
        Arin.WLog2(Auto_Log, "ctrpos (선택된 개체들의 위치값을 변경합니다)", LogFile)
        If SelCon Is Nothing OrElse SelCon.Count < 1 Then Exit Sub

        For Each sender As Control In SelCon
            If vertical Then    '//좌우측
                If My.Computer.Keyboard.AltKeyDown Then
                    If offset < 0 Then
                        sender.Top -= 1
                    Else
                        sender.Top += 1
                    End If
                ElseIf My.Computer.Keyboard.CtrlKeyDown Then
                    If offset < 0 Then
                        sender.Top -= 10
                    Else
                        sender.Top += 10
                    End If
                Else
                    sender.Top += offset
                End If
            Else    '//상하측
                If My.Computer.Keyboard.AltKeyDown Then
                    If offset < 0 Then
                        sender.Left -= 1
                    Else
                        sender.Left += 1
                    End If
                ElseIf My.Computer.Keyboard.CtrlKeyDown Then
                    If offset < 0 Then
                        sender.Left -= 10
                    Else
                        sender.Left += 10
                    End If
                Else
                    sender.Left += offset
                End If
            End If

        Next

        Arin.WLog2(Auto_Log, "ctrpos =[ preview 호출합니다]", LogFile)
        Me.preview_window()
        'Me.ViewProperty(sender)
    End Sub
    Private Sub ShowMsg(ByVal Message As String)
        Arin.WLog2(Auto_Log, "showmsg 메세지를 보여줍니다 =" & Message, LogFile)
        Me.lb_msg.Text = "▷ " & Message & Space(1) & TimeOfDay.ToString
    End Sub

    Private Sub cmb_style_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs)
        Arin.WLog2(Auto_Log, "스타일콤보박스에서 keyip 이 감지되었으나 핸들을 true 로 해버린다.", LogFile)
        e.Handled = True
    End Sub
    Public Sub Selected_Style(ByVal SelIndex As Short)
        '//여기서 데이터를 추려내고(필터를 가져온다.)
        '//해당 스타일을 불러온다
        Arin.WLog2(Auto_Log, "스타일 인덱스가 변경되었다.", LogFile)
        If SetForm.cmb_style.SelectedIndex < 0 Then SetForm.cmb_style.SelectedIndex = 0

        Dim DataFilter As String = StyleList(SetForm.cmb_style.SelectedIndex).Filter
        If DataFilter.Trim = "" Then
            DataFilter = "출력 = true" '//인쇄필드는 지선주 구분용으로 재사용한다.
        Else
            DataFilter &= " AND 출력 = true" '//지선주는 인쇄가 True 값이기때문에 해당 값을 제외한다
        End If

        Me.BindingSource1.Sort = ""
        Me.BindingSource1.DataSource = Nothing

        Try
            Dv = New DataView(srcTable, DataFilter, "정렬번호,번호", DataViewRowState.CurrentRows)

            'Dv = New DataView(srcTable, "len(DL명) > 0", "", DataViewRowState.CurrentRows)

            If Dv.Count <= 0 Then '//데이터가없다면
                MsgBox(SetForm.cmb_style.Text & "에 해당하는 데이터가존재하지 않습니다" & vbCrLf & vbCrLf & "다른 스타일을 선택하세요", MsgBoxStyle.Information, "확인")
                Me.PictureBox1.Refresh()
            Else
                Arin.WLog2(Auto_Log, "선택된 스타일에 데이터가있다=" & Dv.Count, LogFile)
                'Me.textbox2.Text = Dv.Count - 1 '//패턴검사시 종료카운터이다...
                Me.VScrollBar1.Minimum = 0
                Me.VScrollBar1.Maximum = Dv.Count - 1

                'MsgBox("스크롤 수=" & Me.VScrollBar1.Maximum)
                Me.LOAD_STYLE()   '//스타일불러오기(여기서 모든컨트롤의 기본 위치와 글꼴이 결정된다)
                If Me.FirstIdx = -1 Then
                    For i As Integer = 0 To Dv.Count - 1    '//맨첨보여줄놈을 찾는다. DV와 원래 인덱스값이 다르기때문에 찾아야한다.
                        If Dv(i)("번호") = Srcnum Then
                            FirstIdx = i
                            Exit For
                        End If
                    Next
                End If

                If FirstIdx = -1 OrElse FirstIdx > Dv.Count - 1 Then FirstIdx = 0 '//찾지못하고 나왓을경우에는 1번쨰 레코드를 보여주도록 한다.


                NoView = True   '//For Validate Index =0


                If FirstIdx = 0 Then    '//Index is first
                    Arin.WLog2(Auto_Log, "View : First Record // Set = 0", "\Alllog.txt")
                Else    '//index is not first
                    Arin.WLog2(Auto_Log, "View : Index Count = " & FirstIdx, "\Alllog.txt")
                End If

                Me.BindingSource1.DataSource = Dv 'Dv   '//여기서셋팅되면서 바로 tview 가 작동된다.
                Me.BindingSource1.Sort = "정렬번호,번호" ',번호"            
                Me.VScrollBar1.Value = FirstIdx
                Me.BindingSource1.Position = FirstIdx

                'MsgBox("ASDF" & Me.BindingNavigatorPositionItem.Text)
                If FirstIdx = 0 Then Me.GeTviewData(Me.BindingNavigatorPositionItem.Text - 1, True)
            End If

        Catch ex As Exception
            '//에러난다면 거의 뭐;;폼을 바로 실행하는경우다
            MsgBox("관리자 모드인가봅니다")

        End Try

        ''Arin.WLog2(Auto_Log, "cmb_style selectindexchanged 에서 preview 를 호출함", "\지중순차로그.txt")
        'Me.preview_window()
    End Sub



    Public Sub LOAD_STYLE(Optional ByVal Div As String = "Z")   '//저장된 스타일을 불러옵니다.
        '  MsgBox("LOADSTYLE" & "/" & Div)
        '  MsgBox("LOADSTYLE" & "/" & Div)
        Arin.WLog2(Auto_Log, "load_style : 스타일을 불러옵니다. div= " & Div, LogFile)
        Dim Arinini As New MyINI(StyleDir.FullName & "\" & StyleList(SetForm.cmb_style.SelectedIndex).File)
        Dim pos(), font(), visible, mytext As String
        Dim Tobj As MyControlOLEDBv2.MyLabel
        Dim DR() As DataRow
        Dim idx As Integer = 0

        '//모든아이템을 돈다
        For i As Integer = 0 To Me.AllLabels.GetUpperBound(0)   '//모든아이템을 돈다.
            Tobj = Me.AllLabels(i).ctl
            If Div.ToUpper = "Z" Then '//모든아이템을 가져오고
                '//메모리에서 찾는다.
                Tobj.Tag = ""
                DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = 'STYLE" & Tobj.Name.ToUpper & "POS'")
                If DR.GetUpperBound(0) = 0 Then
                    pos = DR(0)(1).ToString.Split(",")
                    Tobj.Location = New Point(pos(0), pos(1))
                    Tobj.Size = New Size(pos(2), pos(3))
                End If

                DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = 'STYLE" & Tobj.Name.ToUpper & "FONT'")
                If DR.GetUpperBound(0) = 0 Then
                    font = DR(0)(1).ToString.Split(",")
                    Tobj.장평 = font(5)
                    Tobj.장높이 = font(6)
                    Tobj.MyFont = New Font(font(0), font(1), IIf(font(3).ToUpper = "TRUE", FontStyle.Bold, FontStyle.Regular), GraphicsUnit.Point)
                End If

                DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = 'STYLE" & Tobj.Name.ToUpper & "VISIBLE'")
                If DR.GetUpperBound(0) = 0 Then
                    visible = DR(0)(1).ToString
                    Tobj.Visible = CType(visible, Boolean)
                End If

                DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = 'STYLE" & Tobj.Name.ToUpper & "MYTEXT'")
                If DR.GetUpperBound(0) = 0 Then
                    mytext = DR(0)(1).ToString
                    Select Case Tobj.Name.ToUpper.Substring(0, 1)
                        Case "X"    '//사용자문자일경우에는 문자열도 저장해야한다.
                            If mytext <> "" Then Tobj.MyText = Arin.TextDec(mytext) '//ini구조상 바로저장하면안되기때문에 변환해서 저장한다.
                    End Select
                End If

                DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = 'STYLE" & Tobj.Name.ToUpper & "SPACE'")
                If DR.GetUpperBound(0) = 0 Then Tobj.공백 = DR(0)(1).ToString
            Else    '//특정아이템구분일때 

                If Tobj.Name.ToUpper.Substring(0, 1) = Div Then
                    If Div.ToUpper = "H" Then   '//H의경우는 따로 찾아본다.

                        '//메모리에서 찾는다.
                        Tobj.Tag = ""
                        DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = 'STYLE" & Tobj.Name.ToUpper & "POS'")
                        If DR.GetUpperBound(0) = 0 Then
                            pos = DR(0)(1).ToString.Split(",")
                            Tobj.Location = New Point(pos(0), pos(1))
                            Tobj.Size = New Size(pos(2), pos(3))
                        End If

                        DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = 'STYLE" & Tobj.Name.ToUpper & "FONT'")
                        If DR.GetUpperBound(0) = 0 Then
                            font = DR(0)(1).ToString.Split(",")
                            Tobj.장평 = font(5)
                            Tobj.장높이 = font(6)
                            Tobj.MyFont = New Font(font(0), font(1), IIf(font(3).ToUpper = "TRUE", FontStyle.Bold, FontStyle.Regular), GraphicsUnit.Point)
                        End If

                        DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = 'STYLE" & Tobj.Name.ToUpper & "VISIBLE'")
                        If DR.GetUpperBound(0) = 0 Then
                            visible = DR(0)(1).ToString
                            Tobj.Visible = CType(visible, Boolean)
                        End If

                        DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = 'STYLE" & Tobj.Name.ToUpper & "MYTEXT'")
                        If DR.GetUpperBound(0) = 0 Then
                            mytext = DR(0)(1).ToString
                            Select Case Tobj.Name.ToUpper.Substring(0, 1)
                                Case "X"    '//사용자문자일경우에는 문자열도 저장해야한다.
                                    If mytext <> "" Then Tobj.MyText = Arin.TextDec(mytext) '//ini구조상 바로저장하면안되기때문에 변환해서 저장한다.
                            End Select
                        End If

                        DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = 'STYLE" & Tobj.Name.ToUpper & "SPACE'")
                        If DR.GetUpperBound(0) = 0 Then Tobj.공백 = DR(0)(1).ToString

                    Else
                        '//메모리에서 찾는다.
                        Tobj.Tag = ""
                        DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = 'STYLE" & Tobj.Name.ToUpper & "POS'")
                        If DR.GetUpperBound(0) = 0 Then
                            pos = DR(0)(1).ToString.Split(",")
                            Tobj.Location = New Point(pos(0), pos(1))
                            Tobj.Size = New Size(pos(2), pos(3))
                        End If

                        DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = 'STYLE" & Tobj.Name.ToUpper & "FONT'")
                        If DR.GetUpperBound(0) = 0 Then
                            font = DR(0)(1).ToString.Split(",")
                            Tobj.장평 = font(5)
                            Tobj.장높이 = font(6)
                            Tobj.MyFont = New Font(font(0), font(1), IIf(font(3).ToUpper = "TRUE", FontStyle.Bold, FontStyle.Regular), GraphicsUnit.Point)
                        End If

                        DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = 'STYLE" & Tobj.Name.ToUpper & "VISIBLE'")
                        If DR.GetUpperBound(0) = 0 Then
                            visible = DR(0)(1).ToString
                            Tobj.Visible = CType(visible, Boolean)
                        End If

                        'DR = StyleList(setform.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = 'STYLE" & Tobj.Name.ToUpper & "MYTEXT'")
                        'If DR.GetUpperBound(0) = 0 Then
                        'mytext = DR(0)(1).ToString
                        'Select Case Tobj.Name.ToUpper.Substring(0, 1)
                        '    Case "U", "A", "B", "D", "E"    '//사용자문자일경우에는 문자열도 저장해야한다.
                        'If mytext <> "" Then Tobj.MyText = Arin.TextDec(mytext) '//ini구조상 바로저장하면안되기때문에 변환해서 저장한다.
                        'End Select
                        'End If

                        DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = 'STYLE" & Tobj.Name.ToUpper & "SPACE'")
                        If DR.GetUpperBound(0) = 0 Then Tobj.공백 = DR(0)(1).ToString
                    End If
                End If
            End If

        Next

        If Div.ToUpper <> "Z" Then Return '//모든템이아니다
        Arin.WLog2(Auto_Log, "load_style 기본값 체크박스등의 값을 불러온다. 이것은 맨첨에만 불러오면 된다. ", LogFile)
        ''''''''''''''''''' 개체조정''우측 스타일 체크박스를 가져온다.
        For Each B As Control In SetForm.TabPage2.Controls
            If B.GetType.Name.ToUpper = "CHECKBOX" Then '//체크박스라면 태그를 저장한다.
                CType(B, Windows.Forms.CheckBox).Checked = Arinini.Read("STYLE", B.Name, False)  '//기본값 false
            End If
        Next

        If Admin Then
            For Each A As ToolStripDropDownItem In Me.mainmenu.DropDownItems    '//여기서 체크박스인것들만
                If A.GetType.Name.ToUpper = "TOOLSTRIPMENUITEM" Then
                    If CType(A, ToolStripMenuItem).CheckOnClick Then
                        CType(A, ToolStripMenuItem).Checked = Arinini.Read("STYLE", A.Name, False)
                    End If
                End If
            Next
        End If


        'For Each B As Control In Me.TabPage3.Controls
        '    If B.GetType.Name.ToUpper = "CHECKBOX" Then '//체크박스라면 태그를 저장한다.
        '        CType(B, Windows.Forms.CheckBox).Checked = Arinini.Read("STYLE", B.Name, False)  '//기본값 false
        '    End If
        'Next
        ''''''''''''''''''''''''''''외'''''''''''''''''''''''''''''''''
        SetForm.tb_marginX.Text = StyleList(SetForm.cmb_style.SelectedIndex).MarginX 'Arinini.Read("STYLE", "MarginX", 10)
        SetForm.tb_marginY.Text = StyleList(SetForm.cmb_style.SelectedIndex).MarginY ' Arinini.Read("STYLE", "MarginY", 10)
        SetForm.tb_scalex.Text = StyleList(SetForm.cmb_style.SelectedIndex).ScaleX ' Arinini.Read("STYLE", "ScaleX", "1.5")
        SetForm.tb_scaley.Text = StyleList(SetForm.cmb_style.SelectedIndex).ScaleY ' Arinini.Read("STYLE", "ScaleY", "1.3")
        ''''''''''''2중
        SetForm.cb_dummy.Checked = StyleList(SetForm.cmb_style.SelectedIndex).Dummy 'Arinini.Read("STYLE", "dummy", False)
        SetForm.cmb_dummy.SelectedIndex = StyleList(SetForm.cmb_style.SelectedIndex).Dummytype ' Arinini.Read("STYLE", "dummytype", 0)
        SetForm.tb_secx.Text = StyleList(SetForm.cmb_style.SelectedIndex).dummmyx ' Arinini.Read("STYLE", "dummmyx", "0")
        SetForm.tb_secy.Text = StyleList(SetForm.cmb_style.SelectedIndex).dummmyy ' Arinini.Read("STYLE", "dummmyy", "300")

        SetForm.tb_picfile.Text = StyleList(SetForm.cmb_style.SelectedIndex).Backimg ' Arinini.Read("STYLE", "backimg", My.Application.Info.DirectoryPath & "\image\wall.bmp").ToString.Trim(Chr(0))
        Me.pDoc.DefaultPageSettings.Landscape = StyleList(SetForm.cmb_style.SelectedIndex).LandScape ' Arinini.Read("STYLE", "LandScape", False)
        If StyleList(SetForm.cmb_style.SelectedIndex).LandScape Then
            SetForm.rad_land.Checked = True
        Else
            SetForm.rad_port.Checked = True
        End If
        'SetForm.rad_land.Checked = IIf(StyleList(SetForm.cmb_style.SelectedIndex).LandScape, 1, 0)
        'Me.SetLayOut(IIf(Me.cmb_landscape.SelectedIndex = 0, False, True))

        SetForm.CheckBox4.Checked = StyleList(SetForm.cmb_style.SelectedIndex).Viewimage ' Arinini.Read("STYLE", "ViewImage", True)
        SetForm.tb_myfontsize.Text = StyleList(SetForm.cmb_style.SelectedIndex).PrintFontOffset    ' Arinini.Read("STYLE", "PrintFontOffset", 0)

        'Me.PictureBox1.Width = StyleList(setform.cmb_style.SelectedIndex).CanvasX 'Arinini.Read("STYLE", "CanvasX", 297) '520
        'Me.PictureBox1.Height = StyleList(setform.cmb_style.SelectedIndex).CanvasY ' Arinini.Read("STYLE", "CanvasY", 520) '520

        NOTICE(SetForm.cmb_style.Text & "스타일을 불러왔습니다.", Me.lb_msg)

    End Sub
    Public Sub SAVE_STYLE()
        Arin.WLog2(Auto_Log, "ini파일에 스타일을 저장합니다. ", LogFile)
        Dim Arinini As New MyINI(StyleDir.FullName & "\" & StyleList(SetForm.cmb_style.SelectedIndex).File)
        Dim Tobj As MyControlOLEDBv2.MyLabel
        '//현재 선택된 스타일을 저장합니다.
        If SetForm.cmb_style.SelectedIndex < 0 Then
            erp.SetError(SetForm.cmb_style, "저장할 스타일이 선택되어있지 않습니다")
            NOTICE("스타일을 선택하세요", Me.lb_msg)
            Return
        End If
        erp.SetError(SetForm.cmb_style, vbNullString)

        'Dim Div As Char

        For i As Integer = 0 To Me.AllLabels.GetUpperBound(0)
            Tobj = Me.AllLabels(i).ctl
            Arinini.Write("STYLE", Tobj.Name & "pos", Tobj.Left & "," & Tobj.Top & "," & Tobj.Width & "," & Tobj.Height)
            Arinini.Write("STYLE", Tobj.Name & "font", Tobj.MyFont.Name & "," & Tobj.MyFont.Size & "," & Tobj.MyFont.Underline & "," & Tobj.MyFont.Bold & "," & Tobj.MyFont.Italic & "," & Tobj.장평 & "," & Tobj.장높이)
            Arinini.Write("STYLE", Tobj.Name & "visible", "true") '기본값으로 표시로 정해놓고 체크박스 체크한다.
            Arinini.Write("STYLE", Tobj.Name & "space", Tobj.공백)
            'Select Case Tobj.Name.ToUpper.Substring(0, 1)
            '    Case "U", "A", "B", "D", "E"
            'Arinini.Write("STYLE", Tobj.Name & "mytext", Arin.TextEnc(Tobj.MyText))
            'End Select

            'Div = Tobj.Name.Substring(0, 1) '1자리만끊어서 체크박스 태그랑 연결한다.
            'For Each B As Control In Me.TabPage1.Controls
            '    If B.GetType.Name.ToUpper = "CHECKBOX" Then '//체크박스라면 태그를 저장한다.
            '        If B.Tag <> Nothing AndAlso B.Tag.ToString.ToUpper = Div.ToString.ToUpper Then '//해당 체크박스를 찾았으면 체크박스 상태로 저장을한다.
            '            Arinini.Write("STYLE", Tobj.Name & "visible", CType(B, Windows.Forms.CheckBox).Checked) 'A.Visible)
            '            Exit For
            '        End If
            '    End If
            'Next
        Next



        For Each TC As TabPage In SetForm.TabControl1.TabPages  '//탭컨트롤1의 모든 페이지에서 체크박스의 상태를 저장한다.
            For Each B As Control In TC.Controls
                If B.GetType.Name.ToUpper = "CHECKBOX" Then '//체크박스라면 태그를 저장한다.
                    Arinini.Write("STYLE", B.Name, CType(B, Windows.Forms.CheckBox).Checked) 'A.Visible)
                End If
            Next
        Next

        'For Each B As Control In Me.TabPage1.Controls
        '    If B.GetType.Name.ToUpper = "CHECKBOX" Then '//체크박스라면 태그를 저장한다.
        '        Arinini.Write("STYLE", B.Name, CType(B, Windows.Forms.CheckBox).Checked) 'A.Visible)
        '    End If
        'Next
        'For Each B As Control In Me.TabPage3.Controls
        '    If B.GetType.Name.ToUpper = "CHECKBOX" Then '//체크박스라면 태그를 저장한다.
        '        Arinini.Write("STYLE", B.Name, CType(B, Windows.Forms.CheckBox).Checked) 'A.Visible)
        '    End If
        'Next

        'Arinini.Write("STYLE", "CanvasX", Me.PictureBox1.Width)  '//캔버스사이즈저장한다.
        'Arinini.Write("STYLE", "CanvasY", Me.PictureBox1.Height)

        Arinini.Write("STYLE", "ViewImage", SetForm.CheckBox4.Checked)
        Arinini.Write("STYLE", "MarginX", SetForm.tb_marginX.Text)
        Arinini.Write("STYLE", "MarginY", SetForm.tb_marginY.Text)
        Arinini.Write("STYLE", "ScaleX", SetForm.tb_scalex.Text)
        Arinini.Write("STYLE", "ScaleY", SetForm.tb_scaley.Text)

        If SetForm.tb_picfile.Text.Trim = "" Then
            Arinini.Write("STYLE", "backimg", "")
        Else
            Dim newpath As String = CStr(My.Application.Info.DirectoryPath & "\image\").ToUpper
            Dim NEwpathp As Short = (SetForm.tb_picfile.Text.ToUpper.IndexOf(newpath))
            If NEwpathp = -1 Then
                Arinini.Write("STYLE", "backimg", SetForm.tb_picfile.Text)
            Else
                Arinini.Write("STYLE", "backimg", SetForm.tb_picfile.Text.Substring(NEwpathp + newpath.Length))
            End If
        End If

        Arinini.Write("STYLE", "PrintFontOffset", SetForm.tb_myfontsize.Text)
        Arinini.Write("STYLE", "LandScape", Me.pDoc.DefaultPageSettings.Landscape)

        '//더미 체크박스랑 더미콤보박스 인덱스랑 변위 x,y
        Arinini.Write("STYLE", "dummy", SetForm.cb_dummy.Checked)
        Arinini.Write("STYLE", "dummytype", SetForm.cmb_dummy.SelectedIndex)
        Arinini.Write("STYLE", "dummmyx", SetForm.tb_secx.Text)
        Arinini.Write("STYLE", "dummmyy", SetForm.tb_secy.Text)
        ' Arinini.Write("STYLE", "picstyle", Me.ComboBox1.SelectedIndex)

        '//스타일저장시에 현재 레이아웃상태또한 저장하게한다. 이부분은 스타일불러올때 쓰지는 않고
        '//가로/세로 선택할때 불러오게한다(파일에서 직접 불러오게한다 어차피 한번뿐이므로 궃이 메모리에 올리필요없다
        SaveReadLayOut(False) '//레이아웃저장한다.

        NOTICE("기본스타일을 저장했습니다", Me.lb_msg)
        Arin.WLog2(Auto_Log, "save style 완료후 데이터테이블 갱신을 호춣 ", LogFile)
        Me.데이터테이블갱신()

    End Sub
    Public Sub SaveReadLayOut(ByVal read As Boolean)   '//현재 화면구성을 가로/세로 결정합니다.
        '//ini파일에저장한다. 섹션명은 pagetype0 ,pagetyp1  0은 세로 1은 가로다
        Dim ini As New MyINI(StyleDir.FullName & "\" & StyleList(SetForm.cmb_style.SelectedIndex).File)
        Dim Secname As String = "pagetype" & IIf(SetForm.rad_land.Checked, 1, 0) 'Me.cmb_landscape.SelectedIndex

        If read = False Then
            'ini.Write(Secname, "tablelayoutpanel1loc", Me.TableLayoutPanel1.Left & "," & Me.TableLayoutPanel1.Top)
            'ini.Write(Secname, "tablelayoutpanel1size", Me.TableLayoutPanel1.Width & "," & Me.TableLayoutPanel1.Height)
            ini.Write(Secname, "PictureBox1loc", Me.PictureBox1.Left & "," & Me.PictureBox1.Top)
            ini.Write(Secname, "PictureBox1size", Me.PictureBox1.Width & "," & Me.PictureBox1.Height)
            'ini.Write(Secname, "TabControl1loc", Me.TabControl1.Left & "," & Me.TabControl1.Top)
            'ini.Write(Secname, "TabControl1size", Me.TabControl1.Width & "," & Me.TabControl1.Height)
            'ini.Write(Secname, "GroupBox3loc", Me.GroupBox3.Left & "," & Me.GroupBox3.Top)
            'ini.Write(Secname, "GroupBox3size", Me.GroupBox3.Width & "," & Me.GroupBox3.Height)
            'ini.Write(Secname, "GroupBox2loc", Me.GroupBox2.Left & "," & Me.GroupBox2.Top)
            'ini.Write(Secname, "GroupBox2size", Me.GroupBox2.Width & "," & Me.GroupBox2.Height)
            ini.Write(Secname, "cmb_styleloc", SetForm.cmb_style.Left & "," & SetForm.cmb_style.Top)
            ini.Write(Secname, "cmb_stylesize", SetForm.cmb_style.Width & "," & SetForm.cmb_style.Height)
            '   ini.Write(Secname, "ToolStrip2loc", Me.ToolStrip2.Left & "," & Me.ToolStrip2.Top)
            ini.Write(Secname, "mesize", Me.Width & "," & Me.Height)
        Else   '//여기는 읽는 부분
            If SetForm.rad_land.Checked = False Then '//세로
                Me.pDoc.DefaultPageSettings.Landscape = False
                'TableLayoutPanel1.Location = New Point(ini.Read(Secname, "tablelayoutpanel1loc", "0,31").Split(",")(0), ini.Read(Secname, "tablelayoutpanel1loc", "0,31").Split(",")(1))
                'TableLayoutPanel1.Size = New Size(ini.Read(Secname, "tablelayoutpanel1size", "297,522").Split(",")(0), ini.Read(Secname, "tablelayoutpanel1size", "297,522").Split(",")(1))
                PictureBox1.Location = New Point(ini.Read(Secname, "PictureBox1loc", "3,3").Split(",")(0), ini.Read(Secname, "PictureBox1loc", "3,3").Split(",")(1))
                PictureBox1.Size = New Size(ini.Read(Secname, "PictureBox1size", "270,479").Split(",")(0), ini.Read(Secname, "PictureBox1size", "270,479").Split(",")(1))
                'TabControl1.Location = New Point(ini.Read(Secname, "TabControl1loc", "303,34").Split(",")(0), ini.Read(Secname, "TabControl1loc", "303,34").Split(",")(1))
                'TabControl1.Size = New Size(ini.Read(Secname, "TabControl1size", "279,519").Split(",")(0), ini.Read(Secname, "TabControl1size", "279,519").Split(",")(1))
                ''GroupBox3.Location = New Point(ini.Read(Secname, "GroupBox3loc", "11,368").Split(",")(0), ini.Read(Secname, "GroupBox3loc", "11,368").Split(",")(1))
                'GroupBox3.Size = New Size(ini.Read(Secname, "GroupBox3size", "246,78").Split(",")(0), ini.Read(Secname, "GroupBox3size", "246,78").Split(",")(1))
                'GroupBox2.Location = New Point(ini.Read(Secname, "GroupBox2loc", "11,170").Split(",")(0), ini.Read(Secname, "GroupBox2loc", "11,170").Split(",")(1))
                'GroupBox2.Size = New Size(ini.Read(Secname, "GroupBox2size", "245,192").Split(",")(0), ini.Read(Secname, "GroupBox2size", "245,192").Split(",")(1))
                'cmb_style.Location = New Point(ini.Read(Secname, "cmb_styleloc", "11,18").Split(",")(0), ini.Read(Secname, "cmb_styleloc", "11,18").Split(",")(1))
                'cmb_style.Size = New Size(ini.Read(Secname, "cmb_stylesize", "245,146").Split(",")(0), ini.Read(Secname, "cmb_stylesize", "245,146").Split(",")(1))
                '   ToolStrip2.Location = New Point(ini.Read(Secname, "ToolStrip2loc", "3,451").Split(",")(0), ini.Read(Secname, "ToolStrip2loc", "3,451").Split(",")(1))
                Me.Size = New Size(ini.Read(Secname, "mesize", "588,632").Split(",")(0), ini.Read(Secname, "mesize", "588,632").Split(",")(1))
            Else
                Me.pDoc.DefaultPageSettings.Landscape = True
                'TableLayoutPanel1.Location = New Point(ini.Read(Secname, "tablelayoutpanel1loc", "0,31").Split(",")(0), ini.Read(Secname, "tablelayoutpanel1loc", "0,31").Split(",")(1))
                'TableLayoutPanel1.Size = New Size(ini.Read(Secname, "tablelayoutpanel1size", "710,292").Split(",")(0), ini.Read(Secname, "tablelayoutpanel1size", "710,292").Split(",")(1))
                PictureBox1.Location = New Point(ini.Read(Secname, "PictureBox1loc", "325,3").Split(",")(0), ini.Read(Secname, "PictureBox1loc", "325,3").Split(",")(1))
                PictureBox1.Size = New Size(ini.Read(Secname, "PictureBox1size", "355,200").Split(",")(0), ini.Read(Secname, "PictureBox1size", "355,200").Split(",")(1))
                'TabControl1.Location = New Point(ini.Read(Secname, "TabControl1loc", "3,326").Split(",")(0), ini.Read(Secname, "TabControl1loc", "3,326").Split(",")(1))
                'TabControl1.Size = New Size(ini.Read(Secname, "TabControl1size", "711,228").Split(",")(0), ini.Read(Secname, "TabControl1size", "711,228").Split(",")(1))
                ''GroupBox3.Location = New Point(ini.Read(Secname, "GroupBox3loc", "513,6").Split(",")(0), ini.Read(Secname, "GroupBox3loc", "513,6").Split(",")(1))
                'GroupBox3.Size = New Size(ini.Read(Secname, "GroupBox3size", "184,78").Split(",")(0), ini.Read(Secname, "GroupBox3size", "184,78").Split(",")(1))
                'GroupBox2.Location = New Point(ini.Read(Secname, "GroupBox2loc", "262,6").Split(",")(0), ini.Read(Secname, "GroupBox2loc", "262,6").Split(",")(1))
                'GroupBox2.Size = New Size(ini.Read(Secname, "GroupBox2size", "245,192").Split(",")(0), ini.Read(Secname, "GroupBox2size", "245,192").Split(",")(1))
                'cmb_style.Location = New Point(ini.Read(Secname, "cmb_styleloc", "11,18").Split(",")(0), ini.Read(Secname, "cmb_styleloc", "11,18").Split(",")(1))
                'cmb_style.Size = New Size(ini.Read(Secname, "cmb_stylesize", "245,139").Split(",")(0), ini.Read(Secname, "cmb_stylesize", "245,139").Split(",")(1))
                '  ToolStrip2.Location = New Point(ini.Read(Secname, "ToolStrip2loc", "3,159").Split(",")(0), ini.Read(Secname, "ToolStrip2loc", "3,159").Split(",")(1))
                Me.Size = New Size(ini.Read(Secname, "mesize", "730,643").Split(",")(0), ini.Read(Secname, "mesize", "730,643").Split(",")(1))
            End If
        End If

    End Sub



    Private Sub cmb_controls_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
        '//개체가 선택되면 해당 개체의 내역을 보여준다.
        'Me.Timer1.Enabled = False
        Arin.WLog2(Auto_Log, "개체목록 콤보박스에서 특정 개체가 선택되었다 view property 호출", LogFile)

    End Sub


    Public Sub CtrSize(ByVal vertical As Boolean, ByVal offset As Short)
        If SelCon Is Nothing OrElse SelCon.Count < 1 Then Exit Sub

        For Each sender As MyControlOLEDBv2.MyLabel In SelCon
            If vertical Then    '//상하
                If My.Computer.Keyboard.AltKeyDown Then
                    If offset < 0 Then
                        sender.장높이 -= 1
                    Else
                        sender.장높이 += 1
                    End If
                ElseIf My.Computer.Keyboard.CtrlKeyDown Then
                    If offset < 0 Then
                        sender.장높이 -= 10
                    Else
                        sender.장높이 += 10
                    End If
                Else
                    sender.장높이 += offset
                End If
            Else    '//좌우
                If My.Computer.Keyboard.AltKeyDown Then
                    If offset < 0 Then
                        sender.장평 -= 1
                    Else
                        sender.장평 += 1
                    End If
                ElseIf My.Computer.Keyboard.CtrlKeyDown Then
                    If offset < 0 Then
                        sender.장평 -= 10
                    Else
                        sender.장평 += 10
                    End If
                Else
                    sender.장평 += offset
                End If
            End If
        Next

        Me.preview_window()
    End Sub
    Public Sub LOAD_STYLEC(ByVal StyleName As String, ByVal Div As String)
        '//기타스타일은 빈도가 적으니 파일에서 불러오기로한다.;;메모리는 싫타.
        Dim Arinini As New MyINI(FileC)
        If Not IO.File.Exists(FileC) Then
            MSG("기타스타일설정 파일이 존재하지 않습니다\n\n관리자에 문의하세요", MsgBoxStyle.Critical, "오류")
            Return
        End If
        Dim pos(), font(), visible As String '//구전산번호를 구현해본다.
        Dim Tobj As MyControlOLEDBv2.MyLabel

        For i As Integer = 0 To Me.AllLabels.GetUpperBound(0)
            Tobj = Me.AllLabels(i).ctl
            Try
                If Div.ToUpper = "Z" Then '//모든아이템을 가져오고
                    pos = Arinini.Read(StyleName, Tobj.Name & "pos").Split(",")
                    font = Arinini.Read(StyleName, Tobj.Name & "font").Trim(Chr(0)).Split(",")
                    visible = Arinini.Read(StyleName, Tobj.Name & "visible")
                    '//상태를 읽어서 바로 적용한다.
                    Tobj.Location = New Point(pos(0), pos(1))
                    Tobj.Size = New Size(pos(2), pos(3))
                    Tobj.MyFont = New Font(font(0), font(1), IIf(font(3).ToUpper = "TRUE", FontStyle.Bold, FontStyle.Regular), GraphicsUnit.Point)
                    Tobj.장평 = font(5)
                    Tobj.장높이 = font(6)
                    Tobj.공백 = Arinini.Read(StyleName, Tobj.Name & "space", 0)
                    Tobj.Visible = CType(visible, Boolean)
                Else '이곳에 O가올것이다.
                    If Tobj.Name.ToUpper.Substring(0, 1) = Div Then
                        pos = Arinini.Read(StyleName, Tobj.Name & "pos").Split(",")
                        font = Arinini.Read(StyleName, Tobj.Name & "font").Trim(Chr(0)).Split(",")
                        visible = Arinini.Read(StyleName, Tobj.Name & "visible")
                        '//상태를 읽어서 바로 적용한다.
                        Tobj.Location = New Point(pos(0), pos(1))
                        Tobj.Size = New Size(pos(2), pos(3))
                        Tobj.MyFont = New Font(font(0), font(1), IIf(font(3).ToUpper = "TRUE", FontStyle.Bold, FontStyle.Regular), GraphicsUnit.Point)
                        Tobj.장평 = font(5)
                        Tobj.장높이 = font(6)
                        Tobj.공백 = Arinini.Read(StyleName, Tobj.Name & "space", 0)
                        Tobj.Visible = CType(visible, Boolean)
                    End If
                End If
            Catch ex As Exception
                Arin.WLog2(Auto_Log, "LOAD_STYLE_CUSTOM 오류:" & ex.Message.ToString, "LOAD_STYLEC")
            End Try
        Next
        NOTICE(StyleName & "기타스타일을 불러왔습니다.", Me.lb_msg)
        Me.preview_window()
    End Sub
    Public Sub SAVE_STYLEC(ByVal stylename As String, ByVal div As String) '//기타스타일 저장한다.
        Dim Arinini As New MyINI(FileC)
        '//현재 선택된 스타일을 저장합니다.
        Arinini.Write(stylename, "DESC", stylename)
        Dim Tobj As MyControlOLEDBv2.MyLabel

        For i As Integer = 0 To Me.AllLabels.GetUpperBound(0)
            Tobj = Me.AllLabels(i).ctl
            Arinini.Write(stylename, Tobj.Name & "pos", Tobj.Left & "," & Tobj.Top & "," & Tobj.Width & "," & Tobj.Height)
            Arinini.Write(stylename, Tobj.Name & "font", Tobj.MyFont.Name & "," & Tobj.MyFont.Size & "," & Tobj.MyFont.Underline & "," & Tobj.MyFont.Bold & "," & Tobj.MyFont.Italic & "," & Tobj.장평 & "," & Tobj.장높이)
            Arinini.Write(stylename, Tobj.Name & "visible", Tobj.Visible)
            Arinini.Write(stylename, Tobj.Name & "space", Tobj.공백)
        Next
        NOTICE("기타스타일을 저장했습니다", Me.lb_msg)
    End Sub
    Private Sub Button30_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Me.CtrSize(False, -5)
    End Sub
    Private Sub Button29_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Me.CtrSize(False, 5)
    End Sub
    Private Sub Button32_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Me.CtrSize(True, -5)
    End Sub
    Private Sub Button31_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Me.CtrSize(True, 5)
    End Sub
    Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Me.CtrPos(False, -5)
    End Sub
    Private Sub Button6_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Me.CtrPos(False, 5)
    End Sub
    Private Sub Button27_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Me.CtrPos(True, -5)
    End Sub
    Private Sub Button26_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Me.CtrPos(True, 5)
    End Sub
    Private Sub BindingNavigatorPositionItem_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles BindingNavigatorPositionItem.KeyUp
        '//현재위치에서 엔터켯을경우 데이터베이스 위치값을 변경한다.(position)
        If e.KeyCode = Keys.Enter Then
            If IsNumeric(Me.BindingNavigatorPositionItem.Text) Then Me.GeTviewData(Me.BindingNavigatorPositionItem.Text - 1, True)
        End If
    End Sub
    'Private Sub NPartternCheck()
    '    Dim 번호패턴검사 As Integer = 0

    '    '//패턴검사시작
    '    ' Me.PictureBox1.Image = Image.FromFile(My.Application.Info.DirectoryPath & "\image\start.png")


    '    Dim endcnt As Integer = Me.textbox2.Text

    '    For i As Integer = Me.textbox1.Text To Me.textbox2.Text
    '        '  If chkFlag Then Exit For
    '        showcnt(i, endcnt, "패턴검사중")
    '        Me.textbox1.Text = i
    '        번호패턴검사 = ChkNumPattern(i)
    '        '  MsgBox(번호패턴검사)

    '        If 번호패턴검사 = 0 Then    '1은 길이패턴이 없고 3이나 2는 문자패턴이다
    '            NOTICE("일련번호=" & i + 1 & "번 문자,길이 패턴이 존재하지 않습니다", Me.lb_msg)
    '            My.Computer.Audio.Play(My.Application.Info.DirectoryPath & "\sound\ding.wav", AudioPlayMode.Background)
    '            'If MsgBox("Sdf", MsgBoxStyle.OkCancel) = MsgBoxResult.Ok Then
    '            Me.BindingSource1.Position = i
    '            Exit For
    '        End If
    '    Next
    '    If Me.textbox1.Text = Me.textbox2.Text Then  '//완료되었다면
    '        My.Computer.Audio.Play(My.Application.Info.DirectoryPath & "\sound\notify.wav", AudioPlayMode.Background)
    '        NOTICE("패턴검사가 완료되었습니다", Me.lb_msg)
    '    End If
    '    Me.bt_chkpattern.Text = "시작(&S)"
    'End Sub
    Private Sub showcnt(ByVal cnt1 As Integer, ByVal cnt2 As Integer, Optional ByVal tag As String = "")
        Me.lb_msg.Text = cnt1 & "/" & cnt2 & Space(1) & tag
        My.Application.DoEvents()
    End Sub


    Private Sub cmb_landscape_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Me.SaveReadLayOut(True)
    End Sub

    Private Sub printform_MouseWheel(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseWheel
        If e.Delta < 0 Then
            'If Me.BindingNavigatorPositionItem.Text < Me.BindingNavigatorCountItem.Text Then
            Me.BindingNavigatorMoveNextItem.PerformClick()
            Me.BindingNavigatorPositionItem.Focus()
            'End If
        Else
            If Me.BindingNavigatorPositionItem.Text > 0 Then
                Me.BindingNavigatorMovePreviousItem.PerformClick()
                Me.BindingNavigatorPositionItem.Focus()
            End If
        End If
    End Sub



    Public Sub preview_window()    '//미리보기화면을 생성합니다.

        Dim MyFont As Font
        Dim NewFontSize As Int16 = 10
        Dim dummy As Boolean = False    '//이값이 true 이면 출력시 변위를 지정해서 출력한다.
        Dim BackScr As New Bitmap(Me.PictureBox1.Width, Me.PictureBox1.Height, Me.PictureBox1.CreateGraphics)
        Dim Ga As Graphics = Graphics.FromImage(BackScr)
        Dim Brush As SolidBrush
        Dim obj As MyControlOLEDBv2.MyLabel


        '페이지 구분을 이해하고 몇개를 찍을지 결정한다.
        'Debug.Print("프린터인덱스=" & Me.printindex)
        'Debug.Print("프린터배열=" & Me.PrintArray.GetUpperBound(0))

        ' If Me.printindex <> -1 Then Me.GeTviewData(Me.PrintArray(Me.printindex)) '//페이지를 갱신하고 출력을 시작한다.
        'Dummyflag:  '//--2장출력일경우 이부분에서 다시 시작한다.

        'If Not Me.PictureBox1.BackgroundImage Is Nothing Then
        ' Ga.DrawImage(Me.PictureBox1.BackgroundImage, 0, 0, Me.PictureBox1.Width, Me.PictureBox1.Height)
        ' End If

        For i As Integer = 0 To Me.AllLabels.GetUpperBound(0)   '//모든 개체들에 대해서 인쇄를 설정한다.
            obj = Me.AllLabels(i).ctl
            If obj.Visible AndAlso obj.MyText <> "" Then   '//화면에 보이는것만 한다.                
                NewFontSize = obj.MyFont.Size + SetForm.tb_myfontsize.Text
                If NewFontSize < 0 Then NewFontSize = 0
                Brush = New SolidBrush(obj.MyForeColor) '//전경색으로 브러쉬를 만든다.

                MyFont = New Font(obj.MyFont.FontFamily, NewFontSize, obj.MyFont.Style)
                If obj.장평 = 100 AndAlso obj.장높이 = 100 Then '//장평미사용 문자열 처리
                    'Ga.RotateTransform(45)
                    Ga.DrawString(obj.최종문자, MyFont, Brush, obj.Location)
                Else    '//장평사용 이미지 처리
                    Dim NewX, Newy As Integer
                    Dim SrcDpix, SrcDPiY As Single
                    'MsgBox(Tobj.장높이)
                    SrcDpix = obj.CreateGraphics.DpiX
                    SrcDPiY = obj.CreateGraphics.DpiY

                    NewX = obj.GetSize(MyFont).Width * (obj.장평 / 100) * (Ga.DpiX / SrcDpix)
                    Newy = obj.GetSize(MyFont).Height * (obj.장높이 / 100) * (Ga.DpiY / SrcDPiY)

                    Dim BMP As New Bitmap(NewX, Newy, Ga)
                    Dim G As Graphics = Graphics.FromImage(BMP)

                    G.ResetTransform()
                    G.ScaleTransform((obj.장평 / 100), (obj.장높이 / 100))
                    G.DrawString(obj.최종문자, MyFont, Brush, 0, 0)
                    G.Dispose()
                    Ga.DrawImage(BMP, New Point(obj.Left, obj.Top)) ', CInt(GetSize.Width * (v장평 / 100)), GetSize.Height)
                    'Ga.RotateTransform(20



                End If
            End If
        Next

        If SetForm.cb_dummy.Checked Then '//복사가 선택되어있으며 ㄴ한번더 출력한다.
            For i As Integer = 0 To Me.AllLabels.GetUpperBound(0)   '//모든 개체들에 대해서 인쇄를 설정한다.
                obj = Me.AllLabels(i).ctl
                If obj.Visible AndAlso obj.MyText <> "" Then   '//화면에 보이는것만 한다.                
                    NewFontSize = obj.MyFont.Size + SetForm.tb_myfontsize.Text
                    If NewFontSize < 0 Then NewFontSize = 0
                    Brush = New SolidBrush(obj.MyForeColor) '//전경색으로 브러쉬를 만든다.

                    MyFont = New Font(obj.MyFont.FontFamily, NewFontSize, obj.MyFont.Style)
                    If obj.장평 = 100 AndAlso obj.장높이 = 100 Then '//장평미사용 문자열 처리
                        Ga.DrawString(obj.최종문자, MyFont, Brushes.Gray, (obj.Left + SetForm.tb_secx.Text), (obj.Top + SetForm.tb_secy.Text))
                    Else    '//장평사용 이미지 처리
                        Dim NewX, Newy As Integer
                        Dim SrcDpix, SrcDPiY As Single
                        'MsgBox(Tobj.장높이)
                        SrcDpix = obj.CreateGraphics.DpiX
                        SrcDPiY = obj.CreateGraphics.DpiY

                        NewX = obj.GetSize(MyFont).Width * (obj.장평 / 100) * (Ga.DpiX / SrcDpix)
                        Newy = obj.GetSize(MyFont).Height * (obj.장높이 / 100) * (Ga.DpiY / SrcDPiY)
                        Dim BMP As New Bitmap(NewX, Newy, Ga)
                        Dim G As Graphics = Graphics.FromImage(BMP)

                        G.ResetTransform()
                        G.ScaleTransform((obj.장평 / 100), (obj.장높이 / 100))
                        G.DrawString(obj.최종문자, MyFont, Brushes.Gray, 0, 0)
                        G.Dispose()
                        Ga.DrawImage(BMP, CSng(obj.Left + SetForm.tb_secx.Text), CSng(obj.Top + SetForm.tb_secy.Text)) ', CInt(GetSize.Width * (v장평 / 100)), GetSize.Height)
                    End If
                End If
            Next
        End If
        Ga.Dispose()
        Me.PictureBox1.Image = BackScr
    End Sub

    Private Sub BindingSource1_PositionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles BindingSource1.PositionChanged
        'MsgBox("BindingSource1_PositionChanged=" & Now.ToString & "current=" & Me.BindingNavigatorPositionItem.Text & "mnoview=" & NoView)
        Debug.Print("BindingSource1_PositionChanged : " & Me.BindingSource1.Position)
        Debug.Print("스크롤바값 범위값 " & Me.VScrollBar1.Minimum & "/" & Me.VScrollBar1.Maximum)
        If Me.BindingSource1.Position >= 0 Then Me.VScrollBar1.Value = Me.BindingSource1.Position
        If Me.NoView Then
            Me.NoView = False
        Else
            Me.GeTviewData(Me.BindingNavigatorPositionItem.Text - 1, True)
        End If

    End Sub

    Private Sub VScrollBar1_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles VScrollBar1.Scroll
        Debug.Print("Scroll Old:" & e.OldValue & "/ New :" & e.NewValue & "/ Current : " & Me.VScrollBar1.Value)
        Debug.Print("스크롤바값 범위값 " & Me.VScrollBar1.Minimum & "/" & Me.VScrollBar1.Maximum)
        If e.NewValue > 0 Then
            Me.BindingSource1.Position = e.NewValue
        Else
            Debug.Print("스크롤바value값이 0보다 작습니다. 소스의 위치를 0으로 설정합니다")
            Me.BindingSource1.Position = 0
        End If
    End Sub

    Private Sub PictureBox1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseClick
        Dim Tobj As MyControlOLEDBv2.MyLabel
        Dim selitem As New ArrayList

        Tobj = Nothing

        For i As Integer = 0 To Me.AllLabels.GetUpperBound(0)
            If Me.AllLabels(i).ctl.Visible AndAlso Me.AllLabels(i).ctl.MyText <> "" AndAlso _
                ((e.X >= Me.AllLabels(i).ctl.Left) And e.X <= (Me.AllLabels(i).ctl.Left + Me.AllLabels(i).ctl.GetSize.Width)) _
                AndAlso ((e.Y >= Me.AllLabels(i).ctl.Top) AndAlso (e.Y <= (Me.AllLabels(i).ctl.Top + Me.AllLabels(i).ctl.GetSize.Height))) Then
                Tobj = Me.AllLabels(i).ctl
                selitem.Add(Me.AllLabels(i).ctl)
                'Exit For
            End If
        Next

        If Tobj Is Nothing Then Return '//선택된게 없으면 날린다

        'If Me.chk_multisel.Checked Then '//다중목록에서 선택시가 체크되어있으면 목록을 표시해준다.
        If selitem.Count > 1 Then
            Dim A As New selitem
            For si As Short = 1 To selitem.Count
                A.ListBox1.Items.Add(CType(selitem.Item(si - 1), MyControlOLEDBv2.MyLabel).설명)
            Next
            If A.ShowDialog() = Windows.Forms.DialogResult.OK Then
                Tobj = selitem.Item(A.ListBox1.SelectedIndex)
            Else   '//캔슬시에는 첫번째 아템으로 한다.
                Tobj = selitem.Item(0)
            End If
        End If
        'End If

        Dim Exist As Boolean = False   '//선택개체에 존재여부
        If SelCon Is Nothing Then
            SelCon.Add(Tobj)
        Else
            If e.Button = Windows.Forms.MouseButtons.Right Then
                For Each obj As MyControlOLEDBv2.MyLabel In SelCon
                    If obj.Name = Tobj.Name Then    '//삭제된다.
                        obj.MyForeColor = Color.Black
                        SelCon.Remove(obj)
                        Exist = True
                        Exit For
                    End If
                Next
                If Exist = False Then
                    SelCon.Add(Tobj)
                    Tobj.MyForeColor = Color.Tomato
                End If
            ElseIf e.Button = Windows.Forms.MouseButtons.Left Then '왼쪽클리이면 지우고 다시 셋팅
                For Each SC As MyControlOLEDBv2.MyLabel In SelCon
                    SC.MyForeColor = Color.Black
                Next
                SelCon.Clear()
                SelCon.Add(Tobj)
                Tobj.MyForeColor = Color.DodgerBlue

                If My.Computer.Keyboard.CtrlKeyDown Then   '//컨트롤이 눌러졋으면 해당 그룹을 전부 찾는다.
                    'MsgBox(Tobj.Name)
                    SelCon.Clear()
                    For z As Short = 0 To Me.AllLabels.GetUpperBound(0)
                        If Me.AllLabels(z).ctl.Name.Substring(0, 1) = Tobj.Name.Substring(0, 1) Then
                            Me.AllLabels(z).ctl.MyForeColor = Color.Blue
                            SelCon.Add(Me.AllLabels(z).ctl)
                        End If
                    Next
                End If

            Else   '//가운데버튼이다. 가운데는 폰트변경으로한다.
                SetForm.bt_fontchange.PerformClick()
            End If
        End If

        SetForm.cmb_controls.Text = Tobj.설명
        SetForm.ViewProperty(Tobj)

        Me.preview_window()
    End Sub

    Private Sub PictureBox1_MouseDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDoubleClick
        Dim Tobj As MyControlOLEDBv2.MyLabel
        Tobj = Nothing

        For i As Integer = 0 To Me.AllLabels.GetUpperBound(0)
            If Me.AllLabels(i).ctl.Visible AndAlso Me.AllLabels(i).ctl.MyText <> "" AndAlso _
                ((e.X >= Me.AllLabels(i).ctl.Left) And e.X <= (Me.AllLabels(i).ctl.Left + Me.AllLabels(i).ctl.GetSize.Width)) _
                AndAlso ((e.Y >= Me.AllLabels(i).ctl.Top) AndAlso (e.Y <= (Me.AllLabels(i).ctl.Top + Me.AllLabels(i).ctl.GetSize.Height))) Then
                Tobj = Me.AllLabels(i).ctl
                Exit For
            End If
        Next

        If Tobj Is Nothing Then Return '//선택된게 없으면 날린다

        Dim Msg As New System.Text.StringBuilder("변경할 값을 입력하세요")
        Msg.AppendLine("줄바꿈을하려면 \n 을 입력하세요")
        Msg.AppendLine("예) 세로로 12를 출력하려면 1\n2 을 입력하세요")
        Msg.AppendLine()
        Msg.AppendLine("변경한 값은 현재페이지에만 적용됩니다")


        Dim Val As String = InputBox(Msg.ToString, "변경", Tobj.MyText)
        If Val = "" Then Return
        Val = Val.Replace("\n", vbCrLf)
        Tobj.MyText = Val

        Me.preview_window()
    End Sub

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

    Private Sub 길이패턴연습(ByVal srcstr As String, ByVal pname As String, ByVal log As String, ByVal loadStyle As String, ByVal S라벨() As MyControlOLEDBv2.MyLabel)
        Dim Wlen As Short = srcstr.Length : If Wlen <= 0 Then Return '//없는 글귀가 왓을때 턴해버린다.
        Dim SepPos As Short = srcstr.IndexOf(";")
        Dim DR() As DataRow
        Dim CTLPOS() As String
        Dim CTLFONT() As String
        Dim CTLVISIBLE As Boolean

        DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & "DESC'")
        If DR.GetUpperBound(0) = 0 Then '//길이패턴이 있으면
            Arin.WLog2(Auto_Log, "길이패턴 검색 길이=" & Wlen & " 구분자위치=" & SepPos & " 미들네임=" & pname, log)
            For Each C As MyControlOLEDBv2.MyLabel In S라벨
                Try
                    DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & C.Name & "POS'")
                    If DR.GetUpperBound(0) = 0 Then
                        CTLPOS = DR(0)(1).ToString.Split(",")
                        C.Location = New Point(CTLPOS(0), CTLPOS(1))
                        C.Size = New Size(CTLPOS(2), CTLPOS(3))
                    End If

                    DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & C.Name & "FONT'")
                    If DR.GetUpperBound(0) = 0 Then
                        CTLFONT = DR(0)(1).ToString.Split(",")
                        C.MyFont = New Font(CTLFONT(0), CTLFONT(1), IIf(CTLFONT(3).ToUpper = "TRUE", FontStyle.Bold, FontStyle.Regular), GraphicsUnit.Point)
                        C.장평 = CTLFONT(5)
                        C.장높이 = CTLFONT(6)
                    End If

                    DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & C.Name & "VISIBLE'")
                    If DR.GetUpperBound(0) = 0 Then
                        CTLVISIBLE = DR(0)(1).ToString
                        C.Visible = CType(CTLVISIBLE, Boolean)
                    End If

                    DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & C.Name & "SPACE'")
                    If DR.GetUpperBound(0) = 0 Then
                        C.공백 = DR(0)(1).ToString
                    End If
                    C.Tag = "L"
                Catch ex As Exception
                    Arin.WLog2(Auto_Log, "길이패턴오류 길이=" & Wlen & " Message=" & ex.Message.ToString, log)
                End Try
            Next
        Else
            Arin.WLog2(Auto_Log, "길이패턴불일치 기본스타일 복원  길이=" & Wlen & " 문자열=" & srcstr, log)
            Me.LOAD_STYLE(loadStyle)  '//패턴이 존재하지 않을경우 S스타일을 초기화합니다(이전 패턴타입을 초기화하는것이다)
        End If
    End Sub
    Private Sub 문자패턴연습(ByVal srcstr As String, ByVal pname As String, ByVal log As String, ByVal S라벨() As MyControlOLEDBv2.MyLabel)
        Dim Wlen As Short = srcstr.Length : If Wlen <= 0 Then Return '//없는 글귀가 왓을때 턴해버린다.
        Dim SepPos As Short = srcstr.IndexOf(";")
        Dim DR() As DataRow
        Dim CTLPOS() As String
        Dim CTLFONT() As String
        Dim CTLVISIBLE As Boolean

        DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & "DESC'")
        If DR.GetUpperBound(0) = 0 Then '//길이패턴이 있으면
            Arin.WLog2(Auto_Log, "문자패턴 검색 길이=" & Wlen & " 구분자위치=" & SepPos & " 미들네임=" & pname, log)
            For Each C As MyControlOLEDBv2.MyLabel In S라벨
                Try
                    DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & C.Name & "POS'")
                    If DR.GetUpperBound(0) = 0 Then
                        CTLPOS = DR(0)(1).ToString.Split(",")
                        C.Location = New Point(CTLPOS(0), CTLPOS(1))
                        C.Size = New Size(CTLPOS(2), CTLPOS(3))
                    End If

                    DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & C.Name & "FONT'")
                    If DR.GetUpperBound(0) = 0 Then
                        CTLFONT = DR(0)(1).ToString.Split(",")
                        C.MyFont = New Font(CTLFONT(0), CTLFONT(1), IIf(CTLFONT(3).ToUpper = "TRUE", FontStyle.Bold, FontStyle.Regular), GraphicsUnit.Point)
                        C.장평 = CTLFONT(5)
                        C.장높이 = CTLFONT(6)
                    End If

                    DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & C.Name & "VISIBLE'")
                    If DR.GetUpperBound(0) = 0 Then
                        CTLVISIBLE = DR(0)(1).ToString
                        C.Visible = CType(CTLVISIBLE, Boolean)
                    End If

                    DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & C.Name & "SPACE'")
                    If DR.GetUpperBound(0) = 0 Then
                        C.공백 = DR(0)(1).ToString
                    End If
                    C.Tag = "L"
                Catch ex As Exception
                    Arin.WLog2(Auto_Log, "문자패턴오류 길이=" & Wlen & " Message=" & ex.Message.ToString, log)
                End Try
            Next
        Else
            Arin.WLog2(Auto_Log, "문자패턴불일치 길이=" & Wlen & " 문자열=" & srcstr, log)
        End If
    End Sub

    Private Sub cmb_style_SelectionChangeCommitted(ByVal sender As Object, ByVal e As System.EventArgs)
        '//스타일을 직접 선택햇을때 기본idx값을 0 으로한다.
        ' MsgBox("스타일직접선택")
        FirstIdx = 0
    End Sub

    Private Sub tb_ntype_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles tb_ntype.MouseEnter
        Me.tb_ntype.Focus()
        Me.tb_ntype.SelectAll()
    End Sub


    Private Sub ToolStripButton6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton6.Click
        If MsgBox("현재 스타일(기본)을 저장하시겠습니까?", MsgBoxStyle.Information + MsgBoxStyle.YesNo, "스타일저장") = MsgBoxResult.Yes Then
            SAVE_STYLE()
        Else
            NOTICE("스타일(기존)저장이 취소되었습니다", Me.lb_msg)
        End If
    End Sub

    Private Sub BindingNavigatorPositionItem_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles BindingNavigatorPositionItem.MouseEnter
        Me.BindingNavigatorPositionItem.Focus()
        Me.BindingNavigatorPositionItem.SelectAll()
    End Sub

    Private Sub cm_styleedit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cm_styleedit.Click
        StyleEdit.ListIndex = SetForm.cmb_style.SelectedIndex
        StyleEdit.Path = Me.StyleDir
        StyleEdit.Show()
    End Sub

    Private Sub bt_canvasD_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles bt_canvasD.MouseDown, bt_canvasL.MouseDown, bt_canvasR.MouseDown, bt_canvasU.MouseDown
        If e.Button = Windows.Forms.MouseButtons.Right Then
            Select Case sender.name.ToString.ToUpper
                Case "BT_CANVASD"
                    Me.PictureBox1.Top += 5
                Case "BT_CANVASU"
                    Me.PictureBox1.Top -= 5
                Case "BT_CANVASR"
                    Me.PictureBox1.Left += 5
                Case "BT_CANVASL"
                    Me.PictureBox1.Left -= 5
            End Select
        ElseIf e.Button = Windows.Forms.MouseButtons.Left Then

            Select Case sender.name.ToString.ToUpper
                Case "BT_CANVASL"
                    Me.PictureBox1.Width -= 2
                Case "BT_CANVASR"
                    Me.PictureBox1.Width += 2
                Case "BT_CANVASU"
                    Me.PictureBox1.Height -= 2
                Case "BT_CANVASD"
                    Me.PictureBox1.Height += 2
            End Select

        ElseIf e.Button = Windows.Forms.MouseButtons.Middle Then
            Select Case sender.name.ToString.ToUpper
                Case "BT_CANVASL"
                    Me.Width -= 2
                Case "BT_CANVASR"
                    Me.Width += 2
                Case "BT_CANVASU"
                    Me.Height -= 2
                Case "BT_CANVASD"
                    Me.Height += 2
            End Select


        End If

    End Sub

#End Region
#Region "이곳에서는 사용되지않는 부분"


#End Region

    Private Sub Printform_Karo_Move(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Move
        If Not SetForm Is Nothing Then
            SetForm.Top = Me.Top
            SetForm.Left = Me.Left + Me.Width + 10
        End If
    End Sub


    Private Sub Printform_Karo_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
        If Not SetForm Is Nothing Then
            SetForm.Top = Me.Top
            SetForm.Left = Me.Left + Me.Width + 10
        End If
    End Sub

    Private Sub ToolStripButton2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_print.Click
        Me.Print()
    End Sub

    Private Sub ToolStripButton3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_print_preview.Click
        Me.Print_Preview()
    End Sub
End Class


