포도시님, 안녕하세요.
그레이프시티입니다.
문의 주신 내용에 대하여 답변드리기에 앞서, 셀의 Text 속성, Value 속성, EditorValue 속성에 대해 간략하게 설명드리고자 합니다.
먼저, Text 속성의 값에는 셀에 표시된 대로 서식이 지정된 데이터가 포함됩니다.
반면 Value 속성의 값은 데이터 모델에 저장된 서식이 지정되지 않은 데이터를 포함합니다.
또한 EditorValue 속성을 설정하여, Value 속성에 저장될 데이터 유형을 설정할 수 있습니다. ComboBox에 설정할 수 있는 EditorValue 속성 값은 다음과 같습니다.
- EditorValue.Text: 선택된 항목의 텍스트
- EditorValue.Index: 선택된 항목의 인덱스
- EditorValue.ItemData: 선택된 항목과 관련된 ItemData 값
따라서 ComboBox 셀타입으로 설정된 셀에서 Text 속성값을 가져오면, 셀에 보여지는 선택된 항목의 값을 그대로 가져옵니다. 반면, getValue 메소드를 사용하면, 해당 ComboBox 셀에 설정된 EditorValue 속성 값에 따라 저장된 데이터를 가지고 올 수 있습니다.
다시 문의로 돌아와 질문주신 두가지 내용에 대하여 안내드립니다. 앞서 말씀드린 각 속성 값에 대한 내용을 참고하며 하기 내용을 살펴봐주시길 바랍니다.
1. ComboBox 셀에 기본 선택값을 설정하는 방법
ComboBoxCellType으로 설정된 셀에 Value 값을 입력하여 기본 선택값을 설정하실 수 있습니다. 이때, Value 값에 입력하는 값은 해당 콤보박스의 EditorValue 값에 따라 달라집니다.
하기 샘플 코드에서는 콤보박스에 표기되는 항목(Item) 중 첫번째 항목을 기본 값으로 설정하고 있습니다. EditorValue가 String으로 설정된 경우에는 Value 속성으로 String을 입력하고, 만약 EditorValue가 Index로 설정된 경우라면 Value 속성 값으로 해당 항목의 인덱스를 입력합니다.
' EditorValue.String 인 경우
Dim tmp_celltype As New FarPoint.Win.Spread.CellType.ComboBoxCellType
tmp_celltype.EditorValue = FarPoint.Win.Spread.CellType.EditorValue.String
tmp_celltype.Items = {"aaa", "bbb", "ccc"}
FpSpread1.ActiveSheet.Cells(0, 0).CellType = tmp_celltype
FpSpread1.ActiveSheet.Cells(0, 0).Value = tmp_celltype.Items(0)
'EditorValue.Index 인 경우
Dim tmp_celltype2 As New FarPoint.Win.Spread.CellType.ComboBoxCellType
tmp_celltype2.EditorValue = FarPoint.Win.Spread.CellType.EditorValue.Index
tmp_celltype2.Items = {"aaa", "bbb", "ccc"}
FpSpread1.ActiveSheet.Cells(0, 1).CellType = tmp_celltype2
FpSpread1.ActiveSheet.Cells(0, 1).Value = 0
2. ComboBox 셀에 입력된 텍스트를 가지고 오는 방법
방법1) 콤보박스 셀의 EitorValue와 관계없이, FpSpread1.ActiveSheet.getText(rowIndex, columnIndex)로 Text 값을 가지고 옵니다.
방법2) 콤보박스 셀의 EditorValue를 String으로 설정한 후, FpSpread1.ActiveSheet.getValue(rowIndex, columnIndex)로 셀의 Value 값을 가지고 옵니다.
위 두가지에 대해 살펴보실 수 있도록 간단한 샘플 프로젝트를 만들어 전달드립니다.
해당 샘플 프로젝트에서는 Value 속성값이 Nothing(Null)이 아닌 셀을 클릭했을 때, 해당 셀의 Text 속성과 Value 속성의 값을 메세지박스로 보여주고 있습니다. 첨부된 샘플 프로젝트를 참고하여주시기 바랍니다.
추가로, 말씀해주신 하기 두가지 현상은 저희쪽에서 재현이 되고 있지 않습니다.
1) EditorValue가 Index로 설정되어 있을 때, 기본값이 첫번째 항목으로 선택되어있는 현상.
2) EditorValue가 Index로 설정되어 있을 때, getText(0,0) 실행 시 String이 아닌 인덱스를 가져오는 현상.
만약 앞서 안내드린 방법으로 해결이 되지 않는 경우, 말씀해주신 현상이 재현되는 간단한 샘플 프로젝트를 공유해주시면 확인 후 다시 안내드릴 수 있도록 하겠습니다.
추가로 궁금하신 사항이 있을 경우, 언제든 문의주시기 바랍니다.
감사합니다.
그레이프시티 드림