무념무상 님, 안녕하세요.
그레이프시티입니다.
이미지와 함께 상세하게 문의주심에 감사드립니다.
컬럼 헤더를 중간 row에 지정한다는 말씀은, 전체 체크박스가 있는 행까지를 컬럼 헤더로 지정하고 싶다는 뜻으로 이해되는데, 맞을까요?
그렇다면, ColumHeader의 RowCount 속성을 통해 컬럼 헤더를 여러 행으로 설정하고, 그중 특정 셀의 셀 타입을 체크박스 셀타입으로 설정하실 수 있습니다.
아울러, 말씀하신 전체체크박스 기능은 CellClick 이벤트를 통해 구현할 수 있을 것 보여집니다.
하기 샘플 코드를 개발에 참고하여주시기 바랍니다.
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' 컬럼헤더 병합 설정
FpSpread1.ActiveSheet.ColumnHeader.RowCount = 3
FpSpread1.ActiveSheet.AddColumnHeaderSpanCell(0, 0, 1, 9)
FpSpread1.ActiveSheet.AddColumnHeaderSpanCell(1, 0, 2, 1)
FpSpread1.ActiveSheet.AddColumnHeaderSpanCell(1, 1, 2, 1)
FpSpread1.ActiveSheet.AddColumnHeaderSpanCell(1, 2, 2, 1)
FpSpread1.ActiveSheet.AddColumnHeaderSpanCell(1, 3, 1, 9)
' 컬럼헤더 배경색 설정
FpSpread1.ActiveSheet.ColumnHeader.Cells(1, 0, 2, 12).BackColor = Color.LightGray
' 체크박스 셀 설정
Dim check As New FarPoint.Win.Spread.CellType.CheckBoxCellType()
FpSpread1.ActiveSheet.ColumnHeader.Cells(1, 0).CellType = check
FpSpread1.ActiveSheet.Columns(0).CellType = check
' 체크박스 셀 값 초기화
FpSpread1.ActiveSheet.ColumnHeader.Cells(1, 0).Value = False
FpSpread1.ActiveSheet.Cells(0, 0, FpSpread1.ActiveSheet.RowCount - 1, 0).Value = False
' 체크박스 정렬 설정
FpSpread1.ActiveSheet.ColumnHeader.Columns(0).HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center
FpSpread1.ActiveSheet.Columns(0).HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center
' CellClick Event 추가
AddHandler FpSpread1.CellClick, AddressOf FpSpread1_CellClick
End Sub
Private Sub FpSpread1_CellClick(ByVal sender As Object, ByVal e As FarPoint.Win.Spread.CellClickEventArgs)
' 클릭한 셀이 컬럼 헤더이고, 체크박스 셀로 설정한 위치인 경우
If e.ColumnHeader And e.Column = 0 And e.Row = 1 Then
' 전체체크박스의 값을 변경
FpSpread1.ActiveSheet.ColumnHeader.Cells(e.Row, e.Column).Value = Not FpSpread1.ActiveSheet.ColumnHeader.Cells(e.Row, e.Column).Value
' 전체체크박스 값에 따라 하위의 모든 체크박스 값을 변경
If FpSpread1.ActiveSheet.ColumnHeader.Cells(e.Row, e.Column).Value Then
FpSpread1.ActiveSheet.Cells(0, 0, FpSpread1.ActiveSheet.RowCount - 1, 0).Value = True
Else
FpSpread1.ActiveSheet.Cells(0, 0, FpSpread1.ActiveSheet.RowCount - 1, 0).Value = False
End If
End If
End Sub
만약 원하시는 기능과 다를 경우, 답글로 말씀 부탁 드립니다.
감사합니다.
그레이프시티 드림