CheckBoxSet

CheckBoxSet 소개

CheckBoxSet 컴포넌트는 여러 아이템 목록 중에서 한 개 이상의 값을 선택하기 위한 용도로 사용하는 컴포넌트입니다. 각 아이템은 CheckBox 컴포넌트와 비슷하며 아이템의 배치 등의 동작은 Radio 컴포넌트와 비슷합니다.

Radio 컴포넌트는 하나의 답만 선택할 수 있는 객관식 문제라면 CheckBoxSet 컴포넌트는 2개 이상의 답을 선택할 수 있는 객관식 문제입니다.

CheckBoxSet 컴포넌트는 21.0.0.1500 버전부터 지원합니다.

사용 예

넥사크로 스튜디오 옵션창에서 값 선택 시 여러 개 값을 선택할 수 있는 속성이 있습니다. 예를 들어 Form Design > Paste Special 옵션의 경우 컴포넌트 복사 시 복사할 대상을 여러 개 선택할 수 있습니다.

선택할 수 없는 아이템 설정하기

상품 재고 목록에서 재고가 없는 아이템은 선택할 수 없게 설정합니다.

예제

Grid 컴포넌트 stock 칼럼의 값을 0으로 변경하면 해당 데이터를 CheckBoxSet 컴포넌트에서 선택할 수 없게 변경합니다. 다시 데이터를 0 이상의 값으로 변경하면 CheckBoxSet 컴포넌트에서 선택할 수 있게 상태를 변경합니다.

sample_checkboxset_01.xfdl

예제에서 사용한 핵심 기능

readonlycolumn

칼럼값에 따라 선택할 수 있는 상태를 변경할 수 있습니다. 예제에서는 readonlycolumn 데이터를 동적으로 변경해 입력값에 따라 선택 여부 상태를 변경합니다.

editautoselect

edittype 속성값이 "text"인 경우 editautoselect 속성값을 true로 설정하면 사용자가 편집 영역을 클릭했을 때 텍스트를 전체 선택하도록 설정할 수 있습니다. 입력값 수정 시 사용자가 따로 편집 대상을 선택하지 않고 바로 수정할 수 있게 합니다.

editinputtype

입력할 수 있는 값의 범위를 설정합니다. 예제에서는 숫자만 입력할 것이기 때문에 "digit"로 설정합니다. "number"로 설정한 경우에는 마침표("."), 콤마(","), 마이너스("-") 문자를 입력할 수 있습니다.

예제 구현 방법

1

화면에 CheckBoxSet, Grid 컴포넌트를 배치합니다.

2

CheckBoxSet 컴포넌트의 columncount 속성값을 2로 설정합니다.

CheckBoxSet 컴포넌트의 columncount, rowcount, direction 속성값 설정에 따른 동작은 Radio 컴포넌트와 같습니다. 아래 예제를 참고하세요.

가로 방향으로 나열하기

3

Dataset 오브젝트를 추가하고 아래와 같이 데이터를 설정합니다.

4

Dataset 오브젝트를 CheckBoxSet 컴포넌트에 innerdataset으로 바인딩해 줍니다.

innerdataset: dsCheckBoxSet
codecolumn: code
datacolumn: data
readonlycolumn: readonly

5

Dataset 오브젝트를 추가하고 아래와 같이 데이터를 설정합니다.

6

데이터가 입력되었다면 Grid 컴포넌트와 바인딩해 줍니다.

7

Grid 컴포넌트를 더블 클릭하고 Grid Contents Editor를 실행합니다.

8

stock 칼럼에 해당하는 Body 밴드 셀 속성값을 아래와 같이 변경합니다.

displaytype: editcontrol
edittype: text
editautoselect: true
editinputtype: digit

9

Grid 컴포넌트에 바인딩된 Dataset 오브젝트의 oncolumnchanged 이벤트 핸들러 함수를 아래와 같이 추가합니다.

stock 칼럼의 값이 0인지 아닌지에 따라 CheckBoxSet 컴포넌트에 바인딩된 Dataset 오브젝트의 readonly 칼럼값을 변경합니다.

this.dsGrid_oncolumnchanged = function(obj:nexacro.NormalDataset,e:nexacro.DSColChangeEventInfo) {
  if (e.columnid === 'stock') {
    var targetRow = this.dsCheckBoxSet.findRow("code", obj.getColumn(e.row, 0));
    var newValue = e.newvalue;
    var readonlyValue = (newValue === 0) ? 1 : 0;
    this.dsCheckBoxSet.setColumn(targetRow, "readonly", readonlyValue);
  }
};

10

QuickView(Ctrl + F6)를 실행하여 Grid 컴포넌트에서 stock 칼럼 값을 0 또는 다른 값으로 수정해 보고 값에 따라 CheckBoxSet 컴포넌트의 상태가 변경되는지 확인합니다.