Imports System.Drawing
Imports System.Drawing.Printing
Imports System.Math
Imports System.IO
Imports CEpole.C_Epole

Public Class PrintForm
    '//기본 Datatable 인데 사용하기 편하게 Shadow 한다.
    'Public Shadows srctable As ireaDataSet.Detail_tongsinDataTable
    '//Loadstyle 후에 일련번호를 부여한다. (SetControlIndex)
    Dim IDX_일련번호 As Short
    Dim IDX_OLT번호 As Short
    Dim IDX_국축선번 As Short
    Dim IDX_구간명 As Short
    Dim IDX_시설구분 As Short
    Dim IDX_케이블유형 As Short
    Dim IDX_케이블종별 As Short        '2008/07/10
    Dim IDX_케이블명 As Short   '2008/07/10
    Dim IDX_모분기케이블명 As Short '2008/07/10
    Dim IDX_접속점명 As Short '2008/07/10
    Dim IDX_제조회사 As Short
    Dim IDX_설치년월 As Short
    Dim IDX_시공회사 As Short
    Dim IDX_감리원 As Short
    Dim IDX_관리기관 As Short
    Dim IDX_비고 As Short
    'Dim IDX_QRCODe As Short

    'Dim IDX_고정문자1 As Short
    'Dim IDX_고정문자2 As Short
    'Dim IDX_고정문자3 As Short
    'Dim IDX_고정문자4 As Short
    'Dim IDX_고정문자5 As Short
    'Dim IDX_고정문자6 As Short
    'Dim IDX_고정문자7 As Short


#Region "New Function"
    Public Sub New()
        InitializeComponent()
    End Sub
    Public Sub New(ByRef Src As DataTable, vdev As Boolean, ByVal vDefStyleIndex As Short, Optional ByVal IRow As DataRowView = Nothing, Optional DisWaterMK As Boolean = False)
        InitializeComponent()
        SrcTable = Src  '//가져온 테이블을 임시테이블에 저장을 해두고 사용한다.
        Srcrow = IRow  '//이것은 클릭된 행의 데이터이다.
        Me.Admin = vdev
        Me.DefStyleIndex = vDefStyleIndex
        DisableWaterMark = DisWaterMK '//190208
    End Sub
#End Region

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Left = 100
        Me.Initialize(Me.SrcTable, "StyleLCable", My.Application.Info.DirectoryPath & "\epole.ini", DefStyleIndex)
    End Sub

    Public Overrides Sub SetControls()   '//오버라이드됫으며 라벨들을 생성초기화한다.

        AddLog("-> SetControls")
        Dim CtlCnt As Short = 0

        If Me.AllLabels Is Nothing Then ReDim Me.AllLabels(0) '//이건라벨들의 배열이며
        If Me.AllFullLabels Is Nothing Then ReDim Me.AllFullLabels(0) '//이건라벨들의 그룹배열이다. (쪼개지지않은 1개의 아이템을 가지고있다.)

        '//initial...
        Dim FirstIndex As Short = 0
        Dim A_Firstindex As Short = 0

        InitControl(Me.IDX_일련번호, A_Firstindex, FirstIndex, 1, 20, Me.cb_seq, "일련번호", "SQ")
        InitControl(Me.IDX_OLT번호, A_Firstindex, FirstIndex, 10, 10, Me.chk1, "OLT번호", "AA", )
        InitControl(Me.IDX_국축선번, A_Firstindex, FirstIndex, 10, 10, Me.chk2, "국축선번", "AB")
        InitControl(Me.IDX_구간명, A_Firstindex, FirstIndex, 10, 20, Me.chk3, "구간명", "AC")
        InitControl(Me.IDX_시설구분, A_Firstindex, FirstIndex, 10, 20, Me.chk4, "시설구분", "AD")
        InitControl(Me.IDX_케이블유형, A_Firstindex, FirstIndex, 10, 20, Me.chk5, "케이블유형", "AE")
        InitControl(Me.IDX_케이블종별, A_Firstindex, FirstIndex, 10, 20, Me.chk6, "케이블종별", "AF")
        InitControl(Me.IDX_케이블명, A_Firstindex, FirstIndex, 10, 20, Me.chk7, "케이블명", "AG")
        InitControl(Me.IDX_모분기케이블명, A_Firstindex, FirstIndex, 10, 20, Me.chk8, "모분기케이블명", "AH")
        InitControl(Me.IDX_접속점명, A_Firstindex, FirstIndex, 10, 20, Me.chk9, "접속점명", "AI")
        InitControl(Me.IDX_제조회사, A_Firstindex, FirstIndex, 10, 10, Me.chk10, "제조회사", "AJ")
        InitControl(Me.IDX_설치년월, A_Firstindex, FirstIndex, 10, 10, Me.chk11, "설치년월", "AK")
        InitControl(Me.IDX_시공회사, A_Firstindex, FirstIndex, 10, 10, Me.chk12, "시공회사", "AL")
        InitControl(Me.IDX_감리원, A_Firstindex, FirstIndex, 20, 10, Me.chk13, "감리원", "AM")
        InitControl(Me.IDX_관리기관, A_Firstindex, FirstIndex, 20, 10, Me.chk14, "관리기관", "AN")
        InitControl(Me.IDX_비고, A_Firstindex, FirstIndex, 15, 10, Me.chk15, "비고", "AO")

        'InitControl(A_Firstindex, FirstIndex, 1, 10, Me.chkf1, "고정1", "S1", "", True)
        'InitControl(A_Firstindex, FirstIndex, 1, 10, Me.chkf2, "고정2", "S2", "", True)
        'InitControl(A_Firstindex, FirstIndex, 1, 10, Me.chkf3, "고정3", "S3", "", True)
        'InitControl(A_Firstindex, FirstIndex, 1, 10, Me.chkf4, "고정4", "S4", "", True)
        'InitControl(A_Firstindex, FirstIndex, 1, 10, Me.chkf5, "고정5", "S5", "", True)
        'InitControl(A_Firstindex, FirstIndex, 1, 10, Me.chkf6, "고정6", "S6", "", True)
        'InitControl(A_Firstindex, FirstIndex, 1, 10, Me.chkf7, "고정7", "S7", "", True)

    End Sub

    Public Overrides Sub SetControlIndex() '//그룹의 인덱스를 가지고있는 // 나중에 편하게 사용하려고
        AddLog("-> 사용하지않음 :: SetControlIndex")


        'Me.IDX_일련번호 = lbl("일련번호")
        'Me.IDX_OLT번호 = lbl("OLT번호")
        'Me.IDX_국축선번 = lbl("국축선번")
        'Me.IDX_구간명 = lbl("구간명")
        'Me.IDX_시설구분 = lbl("시설구분")
        'Me.IDX_케이블유형 = lbl("케이블유형")
        'Me.IDX_케이블종별 = lbl("케이블종별")
        'Me.IDX_케이블명 = lbl("케이블명")
        'Me.IDX_모분기케이블명 = lbl("모분기케이블명")
        'Me.IDX_접속점명 = lbl("접속점명")
        'Me.IDX_제조회사 = lbl("제조회사")
        'Me.IDX_설치년월 = lbl("설치년월")
        'Me.IDX_시공회사 = lbl("시공회사")
        'Me.IDX_감리원 = lbl("감리원")
        'Me.IDX_관리기관 = lbl("관리기관")
        'Me.IDX_비고 = lbl("비고")
    
    End Sub



    '//메인함수다(오버라이드) 값을 분석하고 표시하는 총괄을 담당한다.
    Public Overrides Sub GeTviewData(ByVal index As Integer, ByVal previewWindow As Boolean, Optional ByRef 번호패턴검사 As Integer = -1)
        Dim OLT번호, 국축선번, 구간명, 시설구분, 케이블유형, 케이블종별, 케이블명, 모분기케이블명, 접속점명, 제조회사, _
        설치년월, 시공회사, 감리원, 관리기관, 비고 As String

        Dim 일련번호 As String

        AddLog(">> 오버라이드된 함수 GetTviewData 진입")

        If Dv.Count <= 0 OrElse index < 0 OrElse index > Dv.Count Then
            AddLog(">> 데이터인덱스가 없거나 문제가 있어서 GettviewData를 리턴합니다")
            Return '//잘못된 인덱스는 리턴
        End If

        '//DataRow_Value -> Group Label
        OLT번호 = GetSpread(index, "OLT번호")
        국축선번 = GetSpread(index, "국축선번")
        구간명 = GetSpread(index, "구간명")
        시설구분 = GetSpread(index, "시설구분")
        케이블유형 = GetSpread(index, "케이블유형")
        케이블종별 = GetSpread(index, "케이블종별")
        케이블명 = GetSpread(index, "케이블명")
        모분기케이블명 = GetSpread(index, "모분기케이블명")
        접속점명 = GetSpread(index, "접속점명")
        제조회사 = GetSpread(index, "제조회사")
        설치년월 = GetSpread(index, "설치년월")
        시공회사 = GetSpread(index, "시공회사")
        감리원 = GetSpread(index, "감리원")
        관리기관 = GetSpread(index, "관리기관")
        비고 = GetSpread(index, "비고")
        일련번호 = GetSpread(index, "번호")

        QRCODE1 = GetSpread(index, "QRCODE")
        QRCODE2 = GetSpread(index, "QRCODE2")
        QRCODE3 = GetSpread(index, "QRCODE3")
        QRCODE4 = GetSpread(index, "QRCODE4")

        Me.AllFullLabels(Me.IDX_일련번호).text = 일련번호
        Me.AllFullLabels(Me.IDX_OLT번호).text = OLT번호
        Me.AllFullLabels(Me.IDX_국축선번).text = 국축선번
        Me.AllFullLabels(Me.IDX_구간명).text = 구간명
        Me.AllFullLabels(Me.IDX_시설구분).text = 시설구분
        Me.AllFullLabels(Me.IDX_케이블유형).text = 케이블유형
        Me.AllFullLabels(Me.IDX_케이블종별).text = 케이블종별
        Me.AllFullLabels(Me.IDX_케이블명).text = 케이블명
        Me.AllFullLabels(Me.IDX_모분기케이블명).text = 모분기케이블명
        Me.AllFullLabels(Me.IDX_접속점명).text = 접속점명
        Me.AllFullLabels(Me.IDX_제조회사).text = 제조회사
        Me.AllFullLabels(Me.IDX_설치년월).text = 설치년월
        Me.AllFullLabels(Me.IDX_시공회사).text = 시공회사
        Me.AllFullLabels(Me.IDX_감리원).text = 감리원
        Me.AllFullLabels(Me.IDX_관리기관).text = 관리기관
        Me.AllFullLabels(Me.IDX_비고).text = 비고
     
        'Me.AllFullLabels(Me.IDX_고정문자1).text = Me.Fixed(0)
        'Me.AllFullLabels(Me.IDX_고정문자2).text = Me.Fixed(1)
        'Me.AllFullLabels(Me.IDX_고정문자3).text = Me.Fixed(2)
        'Me.AllFullLabels(Me.IDX_고정문자4).text = Me.Fixed(3)
        'Me.AllFullLabels(Me.IDX_고정문자5).text = Me.Fixed(4)
        'Me.AllFullLabels(Me.IDX_고정문자6).text = Me.Fixed(5)
        'Me.AllFullLabels(Me.IDX_고정문자7).text = Me.Fixed(6)


        AddLog(">> DataRow_Value -> Group Label_text")

        '//Show WindowTitle
        Me.Text = "출력작업(OLT:" & OLT번호 & Space(1) & " 국축선번:" & 국축선번 & ")"


        '=====================================================================
        Me.Parse_LineBatch(New Short() { _
        Me.IDX_일련번호, _
        Me.IDX_OLT번호, _
        Me.IDX_국축선번, _
        Me.IDX_구간명, _
        Me.IDX_시설구분, _
        Me.IDX_케이블유형, _
        Me.IDX_케이블종별, _
        Me.IDX_케이블명, _
        Me.IDX_모분기케이블명, _
        Me.IDX_접속점명, _
        Me.IDX_제조회사, _
        Me.IDX_설치년월, _
        Me.IDX_시공회사, _
        Me.IDX_감리원, _
        Me.IDX_관리기관, _
        Me.IDX_비고})
        '======================== 기타 =================================================
        If previewWindow Then Me.preview_window() '//이건 기본폼에 정의되어있다.
        '휴 끝났다.......................................................
    End Sub
    
#Region "자주 바꿀일없는 부분"

    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 BindingNavigatorPositionItem_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles BindingNavigatorPositionItem.MouseEnter
        Me.BindingNavigatorPositionItem.Focus()
        Me.BindingNavigatorPositionItem.SelectAll()
    End Sub

#End Region
#Region "자주안고치는것"

    ''' <summary>
    ''' 데이터표시항목아래의 모든 아이템의 클릭이벤트에  지정된 프로시져를 할당한다.
    ''' </summary>
    ''' <remarks></remarks>
    Public Overrides Sub SetEventHandler()
        For Each MI As ToolStripMenuItem In Me.m_viewdata.DropDownItems
            AddHandler MI.Click, AddressOf ViewCheck_Click
        Next
    End Sub

    Private Sub PrintForm_Scroll(ByVal sender As Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles Me.Scroll

    End Sub

    ''' <summary>
    ''' 개체가 선택되었을때 의 이벤트
    ''' </summary>
    ''' <param name="obj"></param>
    ''' <remarks></remarks>
    Private Sub PrintForm_tongsin_SelectedControl(ByVal obj As CEpole.C_label) Handles Me.SelectedControl
        '//특정개체가 선택되었을때 (부모그룹에서 패턴적용여부를 찾아표시한다.)
        AddLog("##다음개체가 선택되었습니다(" & obj.Desc & " 태그=" & obj.Tag & ")")
        Me.lb_selcon.Text = "[" & obj.Desc & "]"
    End Sub

    Private Sub ToolStripButton1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_close.Click
        Me.Close()
    End Sub
    Private Sub m_shortkey_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles m_shortkey.Click
        Me.Show_ShortKey()
    End Sub

#End Region
  
    Private Sub ToolStripButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Me.QSave_PatternIII()
    End Sub

   
    Private Sub bt_savelen_Click(sender As System.Object, e As System.EventArgs) Handles bt_savepattern.Click

    End Sub
End Class


