Imports C1.Win.C1FlexGrid

Public Class Frm_3_Mach

    Dim Dt As DataTable
    Dim isCopy As Boolean = False
    Dim Init As Boolean = False
    Dim SrcDrv As DataRowView

    Public Sub New()

        ' 디자이너에서 이 호출이 필요합니다.
        InitializeComponent()

        With fxNanBang
            .KeyActionEnter = C1.Win.C1FlexGrid.KeyActionEnum.None
            .KeyActionTab = C1.Win.C1FlexGrid.KeyActionEnum.None
            .SelectionMode = C1.Win.C1FlexGrid.SelectionModeEnum.Cell
            .ShowButtons = C1.Win.C1FlexGrid.ShowButtonsEnum.Always
            .DrawMode = C1.Win.C1FlexGrid.DrawModeEnum.OwnerDraw
            .AllowSorting = C1.Win.C1FlexGrid.AllowSortingEnum.None
            .ShowSortPosition = C1.Win.C1FlexGrid.ShowSortPositionEnum.None

        End With

        With fxNaengBang
            .KeyActionEnter = C1.Win.C1FlexGrid.KeyActionEnum.None
            .KeyActionTab = C1.Win.C1FlexGrid.KeyActionEnum.None
            .SelectionMode = C1.Win.C1FlexGrid.SelectionModeEnum.Cell
            .ShowButtons = C1.Win.C1FlexGrid.ShowButtonsEnum.Always
            .DrawMode = C1.Win.C1FlexGrid.DrawModeEnum.OwnerDraw
            .AllowSorting = C1.Win.C1FlexGrid.AllowSortingEnum.None
            .ShowSortPosition = C1.Win.C1FlexGrid.ShowSortPositionEnum.None
        End With

        With fxKogjo
            .KeyActionEnter = C1.Win.C1FlexGrid.KeyActionEnum.None
            .KeyActionTab = C1.Win.C1FlexGrid.KeyActionEnum.None
            .SelectionMode = C1.Win.C1FlexGrid.SelectionModeEnum.Cell
            .ShowButtons = C1.Win.C1FlexGrid.ShowButtonsEnum.Always
            .DrawMode = C1.Win.C1FlexGrid.DrawModeEnum.OwnerDraw
            .AllowSorting = C1.Win.C1FlexGrid.AllowSortingEnum.None
            .ShowSortPosition = C1.Win.C1FlexGrid.ShowSortPositionEnum.None
        End With

        With fxLight
            .KeyActionEnter = C1.Win.C1FlexGrid.KeyActionEnum.None
            .KeyActionTab = C1.Win.C1FlexGrid.KeyActionEnum.None
            .SelectionMode = C1.Win.C1FlexGrid.SelectionModeEnum.Cell
            .ShowButtons = C1.Win.C1FlexGrid.ShowButtonsEnum.Always
            .DrawMode = C1.Win.C1FlexGrid.DrawModeEnum.OwnerDraw
            .AllowSorting = C1.Win.C1FlexGrid.AllowSortingEnum.None
            .ShowSortPosition = C1.Win.C1FlexGrid.ShowSortPositionEnum.None
        End With

        With fxDanMal
            .KeyActionEnter = C1.Win.C1FlexGrid.KeyActionEnum.None
            .KeyActionTab = C1.Win.C1FlexGrid.KeyActionEnum.None
            .SelectionMode = C1.Win.C1FlexGrid.SelectionModeEnum.Cell
            .ShowButtons = C1.Win.C1FlexGrid.ShowButtonsEnum.Always
            .DrawMode = C1.Win.C1FlexGrid.DrawModeEnum.OwnerDraw
            .AllowSorting = C1.Win.C1FlexGrid.AllowSortingEnum.None
            .ShowSortPosition = C1.Win.C1FlexGrid.ShowSortPositionEnum.None
        End With

        AddHandler fxNanBang.KeyPress, AddressOf fgrid_KeyPress
        AddHandler fxNanBang.AfterEdit, AddressOf fgrid_AfterEdit
        AddHandler fxNanBang.BeforeEdit, AddressOf fgrid_BeginEditS
        AddHandler fxNanBang.OwnerDrawCell, AddressOf flexOwnerDrawCell

        AddHandler fxNaengBang.KeyPress, AddressOf fgrid_KeyPress
        AddHandler fxNaengBang.AfterEdit, AddressOf fgrid_AfterEdit
        AddHandler fxNaengBang.BeforeEdit, AddressOf fgrid_BeginEditS
        AddHandler fxNaengBang.OwnerDrawCell, AddressOf flexOwnerDrawCell

        AddHandler fxKogjo.KeyPress, AddressOf fgrid_KeyPress
        AddHandler fxKogjo.AfterEdit, AddressOf fgrid_AfterEdit
        AddHandler fxKogjo.BeforeEdit, AddressOf fgrid_BeginEditS
        AddHandler fxKogjo.OwnerDrawCell, AddressOf flexOwnerDrawCell

        AddHandler fxLight.KeyPress, AddressOf fgrid_KeyPress
        AddHandler fxLight.AfterEdit, AddressOf fgrid_AfterEdit
        AddHandler fxLight.BeforeEdit, AddressOf fgrid_BeginEditS
        AddHandler fxLight.OwnerDrawCell, AddressOf flexOwnerDrawCell

        AddHandler fxDanMal.KeyPress, AddressOf fgrid_KeyPress
        AddHandler fxDanMal.AfterEdit, AddressOf fgrid_AfterEdit
        AddHandler fxDanMal.BeforeEdit, AddressOf fgrid_BeginEditS
        AddHandler fxDanMal.OwnerDrawCell, AddressOf flexOwnerDrawCell


    End Sub


#Region "FlexGRid Events"

    Private Sub fgrid_BeginEditS(sender As Object, e As C1.Win.C1FlexGrid.RowColEventArgs)
        Dim grid As C1.Win.C1FlexGrid.C1FlexGrid = DirectCast(sender, C1.Win.C1FlexGrid.C1FlexGrid)

        '//데이터입력전에 IME를 맞춘다.
        Select Case grid.Cols(e.Col).Name.ToLower()
            Case "연결된시스템"
                If sender Is fxNaengBang Then
                    Make_냉방기기신재생_List(e.Col)
                ElseIf sender Is fxNanBang Then
                    Make_난방기기신재생_List(e.Col)
                End If
            Case "name", "position", "dept", "bigo", "memo", "jname", "설명", "비고", "메모"
                grid.ImeMode = Windows.Forms.ImeMode.Hangul
            Case Else
                grid.ImeMode = Windows.Forms.ImeMode.Alpha
        End Select

        'If sender Is fxNaengBang Then
        '    Make_냉방기기신재생_List(e.Col)
        'ElseIf sender Is fxNanBang Then
        '    Make_난방기기신재생_List(e.Col)
        'End If


    End Sub

    Private Sub fgrid_AfterEdit(sender As Object, e As C1.Win.C1FlexGrid.RowColEventArgs)
        Dim grid As C1.Win.C1FlexGrid.C1FlexGrid = DirectCast(sender, C1.Win.C1FlexGrid.C1FlexGrid)
        Dim data As Object = grid.GetData(e.Row, e.Col)

        '//난방
        Dim cellstyle_gray As CellStyle = fxNanBang.Styles.Add(Nothing)
        cellstyle_gray.BackColor = Color.Red
        Dim cellstyle_whie As CellStyle = fxNanBang.Styles.Add(Nothing)
        cellstyle_whie.BackColor = Color.White

        '//냉방
        Dim cellstyle_gray2 As CellStyle = fxNaengBang.Styles.Add(Nothing)
        cellstyle_gray2.BackColor = Color.Red
        Dim cellstyle_whie2 As CellStyle = fxNaengBang.Styles.Add(Nothing)
        cellstyle_whie2.BackColor = Color.White

        '//난방
        If grid.Cols(e.Col).Name.ToLower() = "열생산기기방식" Then
            If data.ToString() = "히트펌프" Then
                fxNanBang.Cols("정격보일러효율").AllowEditing = False
                fxNanBang.Cols("정격보일러COP").AllowEditing = True
            Else
                If data.ToString() = "지역난방" Then
                    fxNanBang.Cols("정격보일러효율").AllowEditing = False
                Else
                    fxNanBang.Cols("정격보일러효율").AllowEditing = True
                End If
                fxNanBang.Cols("정격보일러COP").AllowEditing = False
            End If
            fxNanBang.Invalidate()
        End If

        '//냉방
        If grid.Cols(e.Col).Name.ToLower() = "냉동기종류" Then
            If data.ToString() = "히트펌프" Then
                fxNaengBang.Cols("증발식건식냉각기").AllowEditing = False
                fxNaengBang.Cols("냉각수펌프동력").AllowEditing = False
                fxNaengBang.Cols("냉수펌프동력").AllowEditing = True
            Else
                fxNaengBang.Cols("증발식건식냉각기").AllowEditing = True
                fxNaengBang.Cols("냉각수펌프동력").AllowEditing = True
                fxNaengBang.Cols("냉수펌프동력").AllowEditing = True
            End If
            fxNaengBang.Invalidate()
        End If
        If grid.Cols(e.Col).Name.ToLower() = "설명" AndAlso Me.C1DockingTab1.SelectedIndex = 1 Then
            If String.IsNullOrEmpty(data) = False Then
                '//
                For Each drtype As DS.tbl_typeRow In DSET1.tbl_type
                    If drtype.세대타입.ToLower().Equals(data.ToString().ToLower()) Then

                        Dim msg As String = "냉방기기 미설치 시," + vbCrLf + "표준값 적용을 위해 다음과 같이 입력(세대타입별 기기 생성)" + vbCrLf + vbCrLf + _
                            "냉방방식 = (압축식)" + vbCrLf + "냉방기기 용량 = (전용면적별) X 0.1801, COP = 2.894" + vbCrLf + "기기대수 = 타입별 세대수" + vbCrLf + "냉동기종류 = (히트펌프)" + vbCrLf + "사용연료 = (전기)"
                        If MsgBox(msg, MsgBoxStyle.YesNo, "OK") = MsgBoxResult.Yes Then
                            '냉방기기 미설치 시, 표준값 적용을 위해 다음과 같이 입력(세대타입별 기기 생성)냉방방식 = (압축식), 냉방기기 용량 = (전용면적별) X 0.1801, COP = 2.894, 기기대수 = 타입별 세대수, 냉동기종류 = (히트펌프), 사용연료 = (전기) 선택
                            Dim 냉동기용량 As String = grid.GetData(e.Row, grid.Cols("냉동기용량").Index)
                            If String.IsNullOrEmpty(냉동기용량) OrElse 냉동기용량 = "0" Then
                                grid.SetData(e.Row, grid.Cols("냉동기방식").Index, "압축식")

                                Dim value1 As Double = Math.Round(drtype.세대면적 * 0.1801, 3)
                                grid.SetData(e.Row, grid.Cols("냉동기용량").Index, value1) '냉동기용량
                                grid.SetData(e.Row, grid.Cols("열성능비").Index, 2.894)
                                grid.SetData(e.Row, grid.Cols("대수").Index, drtype.세대수) '냉동기용량
                                grid.SetData(e.Row, grid.Cols("냉동기종류").Index, "히트펌프") '냉동기용량
                                grid.SetData(e.Row, grid.Cols("사용연료").Index, "전기") '냉동기용량
                            End If

                        End If

                  
                    End If
                Next
            End If
        End If


        '//공조
        If grid.Cols(e.Col).Name.ToLower() = "공조방식" Then
            If data.ToString() = "환기용" Then
                fxKogjo.Cols("설정치난방").AllowEditing = False
                fxKogjo.Cols("설정치냉방").AllowEditing = False
            Else
                fxKogjo.Cols("설정치난방").AllowEditing = True
                fxKogjo.Cols("설정치냉방").AllowEditing = True
            End If
            fxKogjo.Invalidate()
        ElseIf grid.Cols(e.Col).Name.ToLower() = "열교환기유형" Then '//170827
            If data.ToString() = "열회수불가" OrElse data.ToString() = "0" Then
                fxKogjo.Cols("열회수율").AllowEditing = False
                fxKogjo.Cols("열회수율_냉방").AllowEditing = False
            Else
                fxKogjo.Cols("열회수율").AllowEditing = True
                fxKogjo.Cols("열회수율_냉방").AllowEditing = True
            End If
        End If


        If grid.Cols(e.Col).Name.ToLower() = "연결된시스템" Then
            If sender Is fxNaengBang Then
                b냉방기기신재생업데이트완료 = False
            ElseIf sender Is fxNanBang Then
                b난방기기신재생업데이트완료 = False
            End If
        End If




        Dim tagStr As String = grid.Tag.ToString()
        If tagStr = "light" Then
            If grid.Cols(e.Col).Name = "조명전력" OrElse grid.Cols(e.Col).Name = "대수" Then
                Dim 조명전력 As Integer = grid.GetData(e.Row, grid.Cols("조명전력").Index)
                Dim 대수 As Integer = grid.GetData(e.Row, grid.Cols("대수").Index)
                grid.SetData(e.Row, grid.Cols("조명전력합").Index, 조명전력 * 대수)
                ' ShowSubTotal_Light()
            Else
                If Not MoveCellRight(grid) Then MoveCellDown(grid, e.Col)
            End If
        ElseIf tagStr = "danmal" Then
            If grid.Cols(e.Col).Name = "팬동력" OrElse grid.Cols(e.Col).Name = "대수" Then
                Dim 팬동력 As Integer = grid.GetData(e.Row, grid.Cols("팬동력").Index)
                Dim 대수 As Integer = grid.GetData(e.Row, grid.Cols("대수").Index)
                grid.SetData(e.Row, grid.Cols("전력합").Index, 팬동력 * 대수)
                ' ShowSubTotal_Danmal()
            Else
                If Not MoveCellRight(grid) Then MoveCellDown(grid, e.Col)
            End If
        Else
            Select Case grid.Cols(e.Col).Name.ToLower()
                Case Else
                    If Not MoveCellRight(grid) Then MoveCellDown(grid, e.Col)
                    Exit Select
            End Select
        End If

        'grid.AutoSizeCols()
    End Sub

    Private Function FindRowIndex(grid As C1.Win.C1FlexGrid.C1FlexGrid, IDX As Integer, Optional IDXField As String = "IDX") As Integer
        For i As Integer = 1 To grid.Rows.Count
            Dim oIDX As Integer = CInt(grid.GetData(i, grid.Cols(IDXField).Index))
            If IDX = oIDX Then
                Return i
            End If
        Next
        Return -1
    End Function

    Private Sub fgrid_KeyPress(sender As Object, e As KeyPressEventArgs)

        '일반선택상태일때 엔터키를 누른다면
        If e.KeyChar = Chr(&HD) Then
            '엔터는 아래 혹은 우측으로
            Dim grid As C1.Win.C1FlexGrid.C1FlexGrid = DirectCast(sender, C1.Win.C1FlexGrid.C1FlexGrid)
            e.Handled = True
            If Not MoveCellRight(grid) Then
                MoveCellDown(grid, grid.Cols("설명").Index)
            End If
        ElseIf e.KeyChar = Chr(&H8) Then
            '탭은 우측으로
            Dim grid As C1.Win.C1FlexGrid.C1FlexGrid = DirectCast(sender, C1.Win.C1FlexGrid.C1FlexGrid)
            e.Handled = True
            MoveCellRight(grid)
        End If
    End Sub

    Private Function MoveCellDown(grid As C1.Win.C1FlexGrid.C1FlexGrid, Optional firstcol As Integer = -1) As [Boolean]
        Dim colidx As Integer = grid.CursorCell.c1
        '현재
        If firstcol > -1 Then
            colidx = firstcol
        End If
        Dim rowidx As Integer = grid.CursorCell.TopRow
        Dim newidx As Integer = rowidx + 1

        '다음셀을 찾는다.
        If newidx < grid.Rows.Count Then
            grid.[Select](newidx, colidx)
            Return True
        Else
            '마지막줄이므로 처리하지않ㄴ든다.
            Return False
        End If

    End Function

    Private Function MoveCellRight(grid As C1.Win.C1FlexGrid.C1FlexGrid) As [Boolean]

        Dim colidx As Integer = grid.CursorCell.c1
        '현재
        Dim newidx As Integer = colidx + 1
        Dim find As [Boolean] = False

        '다음셀을 찾는다.
        While True
            If newidx + 1 <= grid.Cols.Count Then
                If Not grid.Cols(newidx).IsVisible OrElse Not grid.Cols(newidx).AllowEditing Then
                    newidx += 1
                    Continue While
                Else
                    grid.[Select](grid.CursorCell.TopRow, newidx)
                    find = True
                    Exit While
                End If
            Else
                Exit While
            End If
        End While
        Return find

    End Function

    Sub flexOwnerDrawCell(sender As Object, e As C1.Win.C1FlexGrid.OwnerDrawCellEventArgs)
        Dim grid As C1.Win.C1FlexGrid.C1FlexGrid = sender
        If e.Row >= grid.Rows.Fixed AndAlso e.Col = grid.Cols.Fixed - 1 Then
            e.Text = (e.Row - grid.Rows.Fixed) + 1
        End If


        If e.Row > 0 Then
            Select Case grid.Cols(e.Col).Name

                Case "정격보일러효율" '//난방

                    Dim valo As Object = grid.GetData(e.Row, grid.Cols("열생산기기방식").Index)
                    If Not valo Is Nothing Then
                        Dim vals As String = valo.ToString()
                        If vals = "히트펌프" OrElse vals = "지역난방" Then
                            e.Graphics.DrawString("X", Me.Font, Brushes.Red, e.Bounds.Left, e.Bounds.Top)
                            e.Graphics.FillRectangle(Brushes.LightGray, e.Bounds)
                            e.Handled = True
                        End If

                    End If

                Case "정격보일러COP" '//난방

                    Dim valo As Object = grid.GetData(e.Row, grid.Cols("열생산기기방식").Index)
                    If Not valo Is Nothing Then
                        Dim vals As String = valo.ToString()
                        If vals <> "히트펌프" Then
                            e.Graphics.DrawString("X", Me.Font, Brushes.Red, e.Bounds.Left, e.Bounds.Top)
                            e.Graphics.FillRectangle(Brushes.LightGray, e.Bounds)
                            e.Handled = True
                        End If

                    End If


                Case "냉각수펌프동력"
                    Dim valo As Object = grid.GetData(e.Row, grid.Cols("냉동기종류").Index)
                    If Not valo Is Nothing Then
                        Dim vals As String = valo.ToString()
                        If vals = "히트펌프" Then
                            e.Graphics.DrawString("X", Me.Font, Brushes.Red, e.Bounds.Left, e.Bounds.Top)
                            e.Graphics.FillRectangle(Brushes.LightGray, e.Bounds)
                            e.Handled = True
                        End If
                    End If

                Case "증발식건식냉각기" '//난방

                    Dim valo As Object = grid.GetData(e.Row, grid.Cols("냉동기종류").Index)
                    If Not valo Is Nothing Then
                        Dim vals As String = valo.ToString()
                        If vals = "히트펌프" Then
                            e.Graphics.DrawString("X", Me.Font, Brushes.Red, e.Bounds.Left, e.Bounds.Top)
                            e.Graphics.FillRectangle(Brushes.LightGray, e.Bounds)
                            e.Handled = True
                        End If
                    End If


                Case "설정치난방", "설정치냉방" '//공조  170718

                    Dim valo As Object = grid.GetData(e.Row, grid.Cols("공조방식").Index)
                    If Not valo Is Nothing Then
                        Dim vals As String = valo.ToString()
                        If vals = "환기용" Then
                            e.Graphics.DrawString("X", Me.Font, Brushes.Red, e.Bounds.Left, e.Bounds.Top)
                            e.Graphics.FillRectangle(Brushes.LightGray, e.Bounds)
                            e.Handled = True
                        End If
                    End If

                Case "열회수율", "열회수율_냉방" '//공조 170827
                    Dim valo As Object = grid.GetData(e.Row, grid.Cols("열교환기유형").Index)
                    If Not valo Is Nothing Then
                        Dim vals As String = valo.ToString()
                        If vals = "열회수불가" OrElse vals = "0" Then
                            e.Graphics.DrawString("X", Me.Font, Brushes.Red, e.Bounds.Left, e.Bounds.Top)
                            e.Graphics.FillRectangle(Brushes.LightGray, e.Bounds)
                            e.Handled = True
                        End If
                    End If

                Case "냉동기종류"
                    Dim valo As Object = grid.GetData(e.Row, grid.Cols("냉동기방식").Index)
                    If Not valo Is Nothing Then
                        Dim vals As String = valo.ToString()
                        If vals = "흡수식" OrElse vals = "지역난방" Then
                            e.Graphics.DrawString("X", Me.Font, Brushes.Red, e.Bounds.Left, e.Bounds.Top)
                            e.Graphics.FillRectangle(Brushes.LightGray, e.Bounds)
                            e.Handled = True
                        End If
                    End If

            End Select
        End If
    End Sub

    Private Sub RefreshCellFormat()
        ''//관리자는 색상을 파란색으로한다.
        'If fxList.Styles("chi0") Is Nothing Then
        '    Dim newstyle As C1.Win.C1FlexGrid.CellStyle = fxList.Styles.Add("chi0")
        '    newstyle.ForeColor = Color.Blue
        'End If
        'If fxList.Styles("chi1") Is Nothing Then
        '    Dim newstyle As C1.Win.C1FlexGrid.CellStyle = fxList.Styles.Add("chi1")
        '    newstyle.ForeColor = Color.Black
        'End If

        'For i As Integer = 1 To Me.fxList.Rows.Count - 1
        '    Dim obj_admin As Object = Me.fxList.GetData(i, Me.fxList.Cols("admin").Index)
        '    Dim admin As Boolean = False
        '    If Not obj_admin Is Nothing Then admin = CBool(obj_admin)

        '    If admin Then
        '        fxList.Rows(i).Style = fxList.Styles("chi0")
        '    Else
        '        fxList.Rows(i).Style = fxList.Styles("chi1")
        '    End If
        'Next
    End Sub

#End Region



    Sub EndEdit()
        Me.Validate()

        Me.fxDanMal.FinishEditing()
        Me.fxKogjo.FinishEditing()
        Me.fxLight.FinishEditing()
        Me.fxNaengBang.FinishEditing()
        Me.fxNanBang.FinishEditing()

        Me.bs_공조기기.EndEdit()
        Me.bs_난방기기.EndEdit()
        Me.bs_냉방기기.EndEdit()
        Me.bS_실내단말기.EndEdit()
        Me.bs_조명기기.EndEdit()
    End Sub
    Private Sub MdiMain_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed

        EndEdit()

        CEnergy.ARINCLASS.SaveLoad_FrmSetting(Me, Me.bs_난방기기.Position, True)
    End Sub

    Private Sub MdiMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        '//공유데이터셋에 연결한다.
        Me.bs_난방기기.DataSource = DSET1
        Me.bs_냉방기기.DataSource = DSET1
        Me.bs_공조기기.DataSource = DSET1
        Me.bs_조명기기.DataSource = DSET1
        Me.bS_실내단말기.DataSource = DSET1

        Dt = DSET1.tbl_nanbangkiki
        AddHandler DSET1.tbl_nanbangkiki.TableNewRow, AddressOf AddNewDataRow_nanbangkiki '//난방기기
        AddHandler DSET1.tbl_nangbangkiki.TableNewRow, AddressOf AddNewDataRow_nangbangkiki '//냉방기기
        AddHandler DSET1.tbl_kongjo.TableNewRow, AddressOf AddNewDataRow_kongjo '//공조기기
        AddHandler DSET1.tbl_light.TableNewRow, AddressOf AddNewDataRow_Light '//조명기기
        AddHandler DSET1.tbl_danmal.TableNewRow, AddressOf AddNewDataRow_Danmal '//조명기기

        AddHandler DSET1.tbl_nangbangkiki.ColumnChanged, AddressOf DataColumnChanged_light

        '//콤보컨트롤 바인딩
        Binding_Zone()

        '//모든컨트롤의 cTrl_enter 를 추가합니다
        'BindProperty(CType(Me.SplitContainer1.Panel2.Controls, Control.ControlCollection))
        Me.Init = True

        Try
            Me.bs_난방기기.Position = CEnergy.ARINCLASS.Read_LastPos_Frm(Me)
        Catch ex As Exception
            Me.bs_난방기기.MoveFirst()
        End Try

        bs_CurrentChanged(sender, e)
        Validate_Control()

        '//제목줄 크기변경
        fxDanMal.Rows()(0).HeightDisplay *= 2
        fxDanMal.Rows()(0).StyleDisplay.WordWrap = True

        fxKogjo.Rows()(0).HeightDisplay *= 2
        fxKogjo.Rows()(0).StyleDisplay.WordWrap = True

        fxLight.Rows()(0).HeightDisplay *= 2
        fxLight.Rows()(0).StyleDisplay.WordWrap = True

        fxNaengBang.Rows()(0).HeightDisplay *= 2
        fxNaengBang.Rows()(0).StyleDisplay.WordWrap = True

        fxNanBang.Rows()(0).HeightDisplay *= 2
        fxNanBang.Rows()(0).StyleDisplay.WordWrap = True

        '//열너비 자동
        ReadfGridColWidth(Me.Name, fxDanMal)
        ReadfGridColWidth(Me.Name, fxKogjo)
        ReadfGridColWidth(Me.Name, fxLight)
        ReadfGridColWidth(Me.Name, fxNaengBang)
        ReadfGridColWidth(Me.Name, fxNanBang)

        '//소계표시
        'ShowSubTotal_Light()
        ' ShowSubTotal_Danmal()

        If Program = EProgram.친환경평가 Then
            fxNanBang.Cols("펌프제어유형").Visible = False
            fxNaengBang.Cols("냉수펌프제어").Visible = False
            fxNaengBang.Cols("냉각수펌프제어").Visible = False
        Else
            fxNanBang.Cols("펌프제어유형").Visible = True
            fxNaengBang.Cols("냉수펌프제어").Visible = True
            fxNaengBang.Cols("냉각수펌프제어").Visible = True
        End If

        Me.Show()
        Application.DoEvents()

    End Sub
#Region "Control_Enter"
    Private Sub BindProperty(ByVal Ctl As Control.ControlCollection)
        For Each C As Control In Ctl
            If C.Controls.Count > 1 Then
                BindProperty(C.Controls)
            Else
                If C.GetType.ToString.ToUpper.IndexOf("MYTB") <> -1 Then
                    AddHandler CType(C, MyTb).KeyDown, AddressOf TextBOx_KeyDown
                ElseIf C.GetType.ToString.ToUpper.IndexOf("MYCMB") <> -1 Then
                    AddHandler CType(C, MyCmb).KeyDown, AddressOf Cmd_KeyDown
                End If
            End If
        Next
    End Sub

    Private Sub TextBOx_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs)
        If e.KeyCode = Keys.Enter AndAlso e.Control Then
            Try
                Dim Field As String = (CType(sender, MyTb).DataBindings.Item("text").BindingMemberInfo.BindingField)
                For Each Dr As DataRow In Dt.Select(Me.bs_난방기기.Filter, "")
                    Dr(Field) = CType(sender, MyTb).Text
                Next
                Work_msg_timer("모든값이 변경되었습니다", 25)
            Catch ex As Exception

            End Try

        End If
    End Sub
    Private Sub Cmd_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs)
        If e.KeyCode = Keys.Enter AndAlso e.Control Then
            Try
                Dim Field As String = (CType(sender, MyCmb).DataBindings.Item("selectedvalue").BindingMemberInfo.BindingField)
                For Each Dr As DataRow In Dt.Select(Me.bs_난방기기.Filter, "")
                    Dr(Field) = CType(sender, MyCmb).SelectedValue
                Next
                Work_msg_timer("모든값이 변경되었습니다", 25)
            Catch ex As Exception

            End Try
        End If
    End Sub
#End Region

    Public Overrides Function AcceptChanged() As Boolean
        Me.Validate()

        Me.fxDanMal.FinishEditing()
        Me.fxKogjo.FinishEditing()
        Me.fxLight.FinishEditing()
        Me.fxNaengBang.FinishEditing()
        Me.fxNanBang.FinishEditing()

        Me.bs_공조기기.EndEdit()
        Me.bs_난방기기.EndEdit()
        Me.bs_냉방기기.EndEdit()
        Me.bS_실내단말기.EndEdit()
        Me.bs_조명기기.EndEdit()

        DSET1.tbl_nanbangkiki.AcceptChanges()
        DSET1.tbl_nangbangkiki.AcceptChanges()
        DSET1.tbl_kongjo.AcceptChanges()
        DSET1.tbl_danmal.AcceptChanges()
        DSET1.tbl_light.AcceptChanges()

        'ShowSubTotal_Danmal()
        'ShowSubTotal_Light()

        Return MyBase.AcceptChanged()
    End Function


    Private Sub DataColumnChanged_light(sender As Object, e As System.Data.DataColumnChangeEventArgs)
        Select Case e.Column.ColumnName.ToLower
            Case "냉동기방식"
                Select Case e.ProposedValue
                    Case "흡수식", "지역냉방"
                        e.Row("냉동기종류") = "(없음)"
                        fxNaengBang.Cols("냉동기종류").AllowEditing = False
                        fxNaengBang.Invalidate()
                    Case Else
                        Try
                            fxNaengBang.Cols("냉동기종류").AllowEditing = True
                            fxNaengBang.Invalidate()
                        Catch ex As Exception

                        End Try
                End Select
        End Select
    End Sub



    Sub ShowSubTotal_Light()
        Dim grid As C1.Win.C1FlexGrid.C1FlexGrid = fxLight
        If grid.Styles("subtotal") Is Nothing Then
            grid.SubtotalPosition = C1.Win.C1FlexGrid.SubtotalPositionEnum.BelowData
            Dim style As C1.Win.C1FlexGrid.CellStyle = grid.Styles.Add("subtotoal")
            style.ForeColor = SystemColors.ControlDarkDark '//글자색
            style.BackColor = Color.Gainsboro '//배경색
            style.Font = New Font(Me.Font, FontStyle.Bold)
        End If
        grid.Subtotal(C1.Win.C1FlexGrid.AggregateEnum.Clear)
        If (grid.Rows.Count > 1) Then
            grid.Subtotal(C1.Win.C1FlexGrid.AggregateEnum.Sum, 0, -1, grid.Cols("조명전력합").Index, "조명전력합")
            grid.SetData(grid.Rows.Count - 1, 0, "합계")
            grid.Rows(grid.Rows.Count - 1).Style = fxLight.Styles("subtotoal")
            'grid.AutoSizeCols()
        End If

    End Sub

    Sub ShowSubTotal_Danmal()
        Dim grid As C1.Win.C1FlexGrid.C1FlexGrid = fxDanMal
        If grid.Styles("subtotal") Is Nothing Then
            grid.SubtotalPosition = C1.Win.C1FlexGrid.SubtotalPositionEnum.BelowData
            Dim style As C1.Win.C1FlexGrid.CellStyle = grid.Styles.Add("subtotoal")
            style.ForeColor = SystemColors.ControlDarkDark
            style.BackColor = Color.Gainsboro
            style.Font = New Font(Me.Font, FontStyle.Bold)
        End If

        grid.Subtotal(C1.Win.C1FlexGrid.AggregateEnum.Clear)
        If (grid.Rows.Count > 1) Then
            grid.Subtotal(C1.Win.C1FlexGrid.AggregateEnum.Sum, 0, -1, grid.Cols("전력합").Index, "전력합")
            grid.SetData(grid.Rows.Count - 1, 0, "합계") '//제목줄을 합계로 변경한다.
            grid.Rows(grid.Rows.Count - 1).Style = fxDanMal.Styles("subtotoal") '//색상변경
            'grid.AutoSizeCols()
        End If

    End Sub

#Region "난방기기"


    Private Sub MdiMain_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
        Select Case e.KeyCode
            Case Keys.F12
        End Select
    End Sub

    Private Function GetMaxCode(ByVal dt As DataTable) As String
        Try
            Dim Dr As DataRow = dt.Select("", "code desc")(0)
            Return Format(CInt(Dr("code")) + 1, "0000")
        Catch ex As Exception
            Return "0001"
        End Try
    End Function

    Dim 이전목록 As String = ""
    Dim b난방기기신재생업데이트완료 As Boolean = False
    Sub Make_난방기기신재생_List(colindex As Integer)
        ' If b난방기기신재생업데이트완료 Then Return



        'Dim bs연결된신재생_난방 As New BindingSource(DSET1, "tbl_new") With {.Filter = filter, .Sort = "code"}
        'Dim cmd연결된신재생_난방 As New ComboBox With {.DataSource = bs연결된신재생_난방, .DisplayMember = "설명", .ValueMember = "code"}
        'cmd연결된신재생_난방.DataBindings.Add(New Binding("SelectedValue", bs_난방기기, "연결된시스템"))
        'fxNanBang.Cols("연결된시스템").Editor = cmd연결된신재생_난방

        Dim filter As String = "code = '0' or  신재생냉난방구분 like '%난방%' or  신재생냉난방구분 like '%급탕%' "
        Dim sl As New System.Collections.SortedList()
        Dim 현재목록 As String = ""
        For Each dr As DS.tbl_newRow In DSET1.tbl_new.Select(filter, "code")
            sl.Add(dr.code, dr.설명)
            현재목록 += dr.code + dr.설명
        Next

        If 현재목록 <> 이전목록 Then
            이전목록 = 현재목록
            b난방기기신재생업데이트완료 = False


            fxNanBang.Cols(colindex).DataType = GetType(String)
            fxNanBang.Cols(colindex).DataMap = sl

            'Console.WriteLine("Make_난방기기신재생_List")

        Else
            b난방기기신재생업데이트완료 = True
        End If




    End Sub

    Dim b냉방기기신재생업데이트완료 As Boolean = False
    Sub Make_냉방기기신재생_List(colindex As Integer)
        If b냉방기기신재생업데이트완료 Then Return

        'Console.WriteLine("Make_냉방기기신재생_List")

        'Dim bs연결된신재생_난방 As New BindingSource(DSET1, "tbl_new") With {.Filter = filter, .Sort = "code"}
        'Dim cmd연결된신재생_난방 As New ComboBox With {.DataSource = bs연결된신재생_난방, .DisplayMember = "설명", .ValueMember = "code"}
        'cmd연결된신재생_난방.DataBindings.Add(New Binding("SelectedValue", bs_난방기기, "연결된시스템"))
        'fxNanBang.Cols("연결된시스템").Editor = cmd연결된신재생_난방

        Dim filter As String = "code = '0' or   신재생냉난방구분 like '%냉%'"
        Dim sl As New System.Collections.SortedList()
        For Each dr As DS.tbl_newRow In DSET1.tbl_new.Select(filter, "code")
            sl.Add(dr.code, dr.설명)
        Next
        fxNaengBang.Cols(colindex).DataType = GetType(String)
        fxNaengBang.Cols(colindex).DataMap = sl

        b냉방기기신재생업데이트완료 = True
    End Sub

    Private Sub Binding_Zone()

        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        Dim cmd구분 As New ComboBox()
        With cmd구분.Items
            .Add("(없음)")
            .Add("난방용")
            .Add("급탕용")
            .Add("난방급탕용")
        End With
        fxNanBang.Cols("난방급탕구분").Editor = cmd구분

        Dim cmd난방방식 As New ComboBox()
        With cmd난방방식.Items
            .Add("(없음)")
            .Add("보일러")
            .Add("지역난방")
            .Add("전기보일러")
            .Add("히트펌프")
        End With
        fxNanBang.Cols("열생산기기방식").Editor = cmd난방방식

        '//230715
        Dim cmd펌프제어유형 As New ComboBox()
        With cmd펌프제어유형.Items
            .Add("(없음)")
            .Add("비제어")
            .Add("정압")
            .Add("변압")
        End With
        fxNanBang.Cols("펌프제어유형").Editor = cmd펌프제어유형


        '//난방기기(신재생)
        Make_난방기기신재생_List(fxNanBang.Cols("연결된시스템").Index)
        'Dim filter As String = "code like '1%' or (code like '2%' and 지열냉난방구분 = '난방급탕용')"
        'Dim bs연결된신재생_난방 As New BindingSource(DSET1, "tbl_new") With {.Filter = filter, .Sort = "code"}
        'Dim cmd연결된신재생_난방 As New ComboBox With {.DataSource = bs연결된신재생_난방, .DisplayMember = "설명", .ValueMember = "code"}
        'cmd연결된신재생_난방.DataBindings.Add(New Binding("SelectedValue", bs_난방기기, "연결된시스템"))
        'fxNanBang.Cols("연결된시스템").Editor = cmd연결된신재생_난방

        Dim cmd사용연료 As New ComboBox()
        With cmd사용연료.Items
            .Add("(없음)")
            .Add("난방유")
            .Add("천연가스")
            .Add("액화가스")
            .Add("전기")
            .Add("지역난방")
        End With
        fxNanBang.Cols("사용연료").Editor = cmd사용연료
        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        Dim cmd냉방방식 As New ComboBox()
        With cmd냉방방식.Items
            .Add("압축식")
            .Add("흡수식")
            .Add("압축식(LNG)")
            .Add("지역냉방")
        End With
        cmd냉방방식.DropDownStyle = ComboBoxStyle.DropDownList
        fxNaengBang.Cols("냉동기방식").Editor = cmd냉방방식

        Dim cmd냉수펌프제어 As New ComboBox()
        With cmd냉수펌프제어.Items
            .Add("(없음)")
            .Add("제어")
            .Add("대수제어")
            .Add("비제어")
        End With
        cmd냉수펌프제어.DropDownStyle = ComboBoxStyle.DropDownList
        fxNaengBang.Cols("냉수펌프제어").Editor = cmd냉수펌프제어
        fxNaengBang.Cols("냉각수펌프제어").Editor = cmd냉수펌프제어



        Dim cmd냉동기종류 As New ComboBox()
        With cmd냉동기종류.Items
            .Add("(없음)")
            .Add("수냉식")
            .Add("공냉식")
            .Add("히트펌프")
        End With
        cmd냉동기종류.DropDownStyle = ComboBoxStyle.DropDownList
        fxNaengBang.Cols("냉동기종류").Editor = cmd냉동기종류

        '//냉방기기(신재생)
        Make_냉방기기신재생_List(fxNaengBang.Cols("연결된시스템").Index)

        'Filter = "code like '1%' or (code like '2%' and 지열냉난방구분 = '냉방용')"
        'Dim bs연결된신재생_냉방 As New BindingSource(DSET1, "tbl_new") With {.Filter = filter, .Sort = "code"}
        'Dim cmd연결된신재생_냉방 As New ComboBox With {.DataSource = bs연결된신재생_냉방, .DisplayMember = "설명", .ValueMember = "code"}
        'fxNaengBang.Cols("연결된시스템").Editor = cmd연결된신재생_냉방


        Dim sl연료 As New ComboBox
        With sl연료.Items
            .Add("(없음)")
            .Add("난방유")
            .Add("천연가스")
            .Add("액화가스")
            .Add("지역난방")
            .Add("지역냉방")
            .Add("전기")
        End With
        sl연료.DropDownStyle = ComboBoxStyle.DropDownList
        fxNaengBang.Cols("사용연료").Editor = sl연료
        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        Dim cmd공조방식 As New ComboBox
        cmd공조방식.DropDownStyle = ComboBoxStyle.DropDownList
        With cmd공조방식.Items
            .Add("정풍량")
            .Add("변풍량")
            .Add("환기용")
        End With
        fxKogjo.Cols("공조방식").Editor = cmd공조방식

        '//170827 (디자이너에서 콤보 설정함)
        'Dim cmd열교환기유형 As New ComboBox
        'cmd열교환기유형.DropDownStyle = ComboBoxStyle.DropDownList
        'With cmd열교환기유형.Items
        '    .Add("열회수불가")
        '    .Add("현열교환")
        '    .Add("전열교환")
        'End With
        'fxKogjo.Cols("열교환기유형").Editor = cmd열교환기유형

        '//조명기기종류 형광등;LED등;기타고효율등;일반등
        ' 'Console.WriteLine("yk2")
        Dim sl As New Dictionary(Of String, String) '//170514
        sl.Add("형광등", "형광등")
        sl.Add("LED등", "LED등")
        sl.Add("기타고효율등", "기타고효율등")
        sl.Add("일반등", "일반등")
        fxLight.Cols("조명종류").DataType = GetType(String)
        fxLight.Cols("조명종류").DataMap = sl


        Dim s2l As New Dictionary(Of String, String) '//170514
        s2l.Add("증발식(개방형)", "증발식(개방형)")
        s2l.Add("증발식(폐쇄형)", "증발식(폐쇄형)")
        s2l.Add("건식", "건식")
        fxNaengBang.Cols("증발식건식냉각기").DataType = GetType(String)
        fxNaengBang.Cols("증발식건식냉각기").DataMap = s2l





    End Sub

    Private Sub AddNewDataRow_nanbangkiki(ByVal sender As Object, ByVal e As System.Data.DataTableNewRowEventArgs)
        e.Row.Item("code") = GetMaxCode(DSET1.tbl_nanbangkiki)
    End Sub
    Private Sub AddNewDataRow_nangbangkiki(ByVal sender As Object, ByVal e As System.Data.DataTableNewRowEventArgs)
        e.Row.Item("code") = GetMaxCode(DSET1.tbl_nangbangkiki)
    End Sub
    Private Sub AddNewDataRow_kongjo(ByVal sender As Object, ByVal e As System.Data.DataTableNewRowEventArgs)
        e.Row.Item("code") = GetMaxCode(DSET1.tbl_kongjo)
    End Sub
    Private Sub AddNewDataRow_Light(ByVal sender As Object, ByVal e As System.Data.DataTableNewRowEventArgs)
        e.Row.Item("code") = GetMaxCode(DSET1.tbl_light)
    End Sub
    Private Sub AddNewDataRow_Danmal(ByVal sender As Object, ByVal e As System.Data.DataTableNewRowEventArgs)
        e.Row.Item("code") = GetMaxCode(DSET1.tbl_danmal)
    End Sub
#End Region

    Private Sub Validate_Control()
        If Not Init Then Return
        If isCopy Then Return
    End Sub

    Private Sub bs_CurrentChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bs_난방기기.CurrentChanged
        If Not Init Then Return
        Dim Drv As DataRowView = CType(bs_난방기기.Current, DataRowView)
        If Drv Is Nothing Then Return

        Dim 열생산기기방식 As String = ""
        If Not Drv("열생산기기방식") Is DBNull.Value Then
            열생산기기방식 = Drv("열생산기기방식").ToString()
        End If

        If 열생산기기방식 = "히트펌프" Then
            fxNanBang.Cols("정격보일러효율").AllowEditing = False
            fxNanBang.Cols("정격보일러COP").AllowEditing = True
        Else
            If 열생산기기방식 = "지역난방" Then
                fxNanBang.Cols("정격보일러효율").AllowEditing = False
            Else
                fxNanBang.Cols("정격보일러효율").AllowEditing = True
            End If

            fxNanBang.Cols("정격보일러COP").AllowEditing = False
        End If

        Me.bs_난방기기.EndEdit()
    End Sub

    Private Sub Frm_V20091231_Zone_MouseWheel(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseWheel
        If e.Delta < 0 Then
            If Me.bs_난방기기.Position < Me.bs_난방기기.Count Then Me.bs_난방기기.Position += 1
        Else
            If Me.bs_난방기기.Position > 0 Then Me.bs_난방기기.Position -= 1
        End If
        Me.Validate()
        My.Application.DoEvents()
    End Sub

    Private Sub bs_CurrentItemChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles bs_난방기기.CurrentItemChanged, bs_공조기기.CurrentItemChanged, bs_냉방기기.CurrentItemChanged
        Try
            Me.bs_난방기기.EndEdit()
        Catch ex As Exception

        End Try

        Try
            Me.bS_실내단말기.EndEdit()
        Catch ex As Exception

        End Try

        Try
            Me.bs_공조기기.EndEdit()
        Catch ex As Exception

        End Try

        Try
            Me.bs_냉방기기.EndEdit()
        Catch ex As Exception

        End Try

        Try
            Me.bs_조명기기.EndEdit()
        Catch ex As Exception

        End Try

        Dim drv As DataRowView = Me.bs_냉방기기.Current
        If Not drv Is Nothing Then
            Dim 냉동기종류 As String = ""
            If Not drv("냉동기종류") Is DBNull.Value Then
                냉동기종류 = drv("냉동기종류").ToString()
            End If

            If 냉동기종류 = "히트펌프" Then
                fxNaengBang.Cols("증발식건식냉각기").AllowEditing = False
                fxNaengBang.Cols("냉각수펌프동력").AllowEditing = False
                fxNaengBang.Cols("냉수펌프동력").AllowEditing = True
            Else
                fxNaengBang.Cols("증발식건식냉각기").AllowEditing = True
                fxNaengBang.Cols("냉각수펌프동력").AllowEditing = True
                fxNaengBang.Cols("냉수펌프동력").AllowEditing = True
            End If
        End If




    End Sub



    Private Sub bt_add_light_Click(sender As Object, e As EventArgs)
        bs_난방기기.AddNew()
    End Sub

    Private Sub C1Button2_Click(sender As Object, e As EventArgs)
        If bs_난방기기.Count > 0 Then bs_난방기기.RemoveCurrent()
    End Sub

    Private Sub C1Button3_Click(sender As Object, e As EventArgs)
        bs_냉방기기.AddNew()
    End Sub

    Private Sub C1Button1_Click(sender As Object, e As EventArgs)
        If bs_냉방기기.Count > 0 Then bs_냉방기기.RemoveCurrent()
    End Sub

    Private Sub C1Button5_Click(sender As Object, e As EventArgs)
        bs_공조기기.AddNew()
    End Sub

    Private Sub C1Button4_Click(sender As Object, e As EventArgs)
        If bs_공조기기.Count > 0 Then bs_공조기기.RemoveCurrent()
    End Sub

    Private Sub C1Button7_Click(sender As Object, e As EventArgs)
        bs_조명기기.AddNew()
    End Sub

    Private Sub C1Button6_Click(sender As Object, e As EventArgs)
        If bs_조명기기.Count > 0 Then bs_조명기기.RemoveCurrent()
    End Sub

    Private Sub C1Button9_Click(sender As Object, e As EventArgs)
        bS_실내단말기.AddNew()
    End Sub

    Private Sub C1Button8_Click(sender As Object, e As EventArgs)
        If bS_실내단말기.Count > 0 Then bS_실내단말기.RemoveCurrent()
    End Sub

    Private Sub RibbonButton1_Click(sender As Object, e As EventArgs) Handles RibbonButton1.Click
        AcceptChanged()
    End Sub

    Private Sub btAdd_Click(sender As Object, e As EventArgs) Handles btAdd.Click
        EndEdit()
        If C1DockingTab1.SelectedIndex = 0 Then
            Me.bs_난방기기.AddNew()
        ElseIf C1DockingTab1.SelectedIndex = 1 Then
            Me.bs_냉방기기.AddNew()
        ElseIf C1DockingTab1.SelectedIndex = 2 Then
            Me.bs_공조기기.AddNew()
        ElseIf C1DockingTab1.SelectedIndex = 3 Then
            Me.bs_조명기기.AddNew()
            'ShowSubTotal_Light()
        Else
            Me.bS_실내단말기.AddNew()
            'ShowSubTotal_Danmal()
        End If
    End Sub

    Private Sub btDel_Click(sender As Object, e As EventArgs) Handles btDel.Click
        EndEdit()
        If C1DockingTab1.SelectedIndex = 0 Then
            Dbbase.DelCrow(Me.bs_난방기기, True)
        ElseIf C1DockingTab1.SelectedIndex = 1 Then
            Dbbase.DelCrow(Me.bs_냉방기기, True)
        ElseIf C1DockingTab1.SelectedIndex = 2 Then
            Dbbase.DelCrow(Me.bs_공조기기, True)
        ElseIf C1DockingTab1.SelectedIndex = 3 Then
            Dbbase.DelCrow(Me.bs_조명기기, True)
        Else
            Dbbase.DelCrow(Me.bS_실내단말기, True)
        End If
    End Sub

    Private Sub fxDanMal_SelChange(sender As Object, e As EventArgs) Handles fxDanMal.SelChange

    End Sub

    Private Sub fxDanMal_BeforeFreezeRow(sender As Object, e As C1.Win.C1FlexGrid.RowColEventArgs) Handles fxDanMal.BeforeFreezeRow

    End Sub

    Private Sub fxDanMal_BeforeMouseDown(sender As Object, e As BeforeMouseDownEventArgs) Handles fxDanMal.BeforeMouseDown
        Dim hti As HitTestInfo = fxDanMal.HitTest(e.X, e.Y)
        If (hti.Column = 0) Then
            '//줄헤더를 클릭했다
            '//해당줄 데이터를 모두 선택해준다.
            Dim cellrange As New CellRange()
            cellrange.c1 = 0
            cellrange.c2 = fxDanMal.Cols.Count - 1
            cellrange.r1 = 0
            cellrange.r2 = hti.Row
            fxDanMal.SelectionMode = SelectionModeEnum.CellRange
            fxDanMal.Select(cellrange, True)

        End If
        'Console.WriteLine(String.Format("fxDanMal_SelChange : {0},{1}", hti.Row, hti.Column))
    End Sub

    Private Sub 열너비자동조정ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 열너비자동조정ToolStripMenuItem.Click

        Dim MenuItem As ToolStripMenuItem = sender
        If Not MenuItem Is Nothing Then
            Dim cMenu As ContextMenuStrip = MenuItem.Owner
            If Not cMenu Is Nothing Then
                Dim grid As C1.Win.C1FlexGrid.C1FlexGrid = cMenu.SourceControl
                grid.AutoSizeCols()
            End If
        End If


    End Sub

    Private Sub 열너비저장ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 열너비저장ToolStripMenuItem.Click

        Dim MenuItem As ToolStripMenuItem = sender
        If Not MenuItem Is Nothing Then
            Dim cMenu As ContextMenuStrip = MenuItem.Owner
            If Not cMenu Is Nothing Then
                Dim grid As C1.Win.C1FlexGrid.C1FlexGrid = cMenu.SourceControl
                SavefGridColWidth(Me.Name, grid)
            End If
        End If


    End Sub

    Private Sub 열너비초기화ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 열너비초기화ToolStripMenuItem.Click

        Dim MenuItem As ToolStripMenuItem = sender
        If Not MenuItem Is Nothing Then
            Dim cMenu As ContextMenuStrip = MenuItem.Owner
            If Not cMenu Is Nothing Then
                Dim grid As C1.Win.C1FlexGrid.C1FlexGrid = cMenu.SourceControl
                '//모든데이터의 열너비를 초기화한다.
                ClearfGridColWidth(grid)
            End If
        End If

    End Sub

    Private Sub fxLight_Click(sender As Object, e As EventArgs) Handles fxLight.Click

    End Sub

End Class