17.데이터 바인딩, 콘텐츠 에디터, 이벤트 생성

Edit

17.1데이터 바인딩

Dataset 오브젝트의 데이터를 컴포넌트에 연결해 텍스트를 표시하거나 컴포넌트의 속성값을 설정할 수 있습니다. 그리고 컴포넌트에서 편집한 값은 Dataset 오브젝트의 데이터로 반영됩니다. 데이터를 컴포넌트에 연결하는 작업을 데이터 바인딩이라고 합니다. Grid 컴포넌트처럼 Dataset 오브젝트의 데이터를 모두 연결하거나 Edit 컴포넌트처럼 선택한 Row에 해당하는 특정 컬럼 데이터만 연결할 수 있습니다.

17.1.1데이터 바인딩 설정하기

폼 디자인 시 생성한 Dataset 오브젝트를 컴포넌트에 끌어다 놓거나 속성창에서 바인딩 관련 속성을 선택해 데이터를 바인딩할 수 있습니다.

Dataset 오브젝트를 컴포넌트에 끌어다 놓을 때 컴포넌트의 종류에 따라 formats 속성값 설정, Bind InnerDataset 또는 Bind Item Editor 기능이 호출됩니다. 각 설정창에서 연결할 속성과 컬럼 정보를 지정할 수 있습니다.

그림 17-1Bind Global Dataset

formats 속성값 설정

Grid, ListView 컴포넌트처럼 binddataset, formats 속성을 가진 컴포넌트는 Dataset 오브젝트를 끌어다놓거나 속성창에서 binddataset 속성값 설정 시 Dataset 오브젝트의 데이터에 따라 formats 속성값을 자동으로 설정합니다.

formats 속성값은 Grid Contents Editor 또는 ListView Contents Editor에서 원하는 형태로 수정할 수 있습니다.

Bind InnerDataset

ListBox나 Combo와 같이 목록 형식으로 데이터를 표현할 수 있는 컴포넌트에 Dataset을 바인딩하는 경우에 Dataset의 칼럼을 지정할 수 있는 Bind InnerDataset 기능이 호출됩니다.

표 17-1Inner Bind Dataset

속성

설명

codecolumn

내부에서 코드로 사용되는 칼럼을 지정

datacolumn

컴포넌트에 보이는 칼럼을 지정

컴포넌트에 따라 설정할 수 있는 컬럼은 달라질 수 있습니다. 아래 표를 참고하세요.

표 17-2Inner Bind Dataset

컴포넌트

컬럼과 연결되는 속성

Combo, ListBox, Radio

codecolumn, datacolumn

Calendar

backgroundcolumn, bordercolumn, datecolumn, textcolorcolumn

Menu, PopupMenu,

TrayPopupMenu

captioncolumn, checkboxcolumn, enablecolumn, hotkeycolumn, iconcolumn, idcolumn, levelcolumn, userdatacolumn

TrayPopupMenu는 Bind InnerDataset 창을 사용하지 않고 Tray 설정 화면에서 innerdataset을 설정하고 각 컬럼 연결 속성을 설정합니다.

Bind Item Editor

Dataset 오브젝트를 끌어다 놓을 때 innerdataset 속성을 가지고 있는 컴포넌트의 경우에는 Bind InnerDataset 또는 Bind Item을 선택할 수 있습니다. innerdataset 속성이 없는 컴포넌트는 Bind Item Editor가 바로 실행됩니다.

그림 17-2Bind Item Editor

표 17-3Bind Item Editor


속성

설명

1

Bind ID

사용자 분류 ID

2

Object

Dataset이 바인딩 되는 컴포넌트 ID

3

Property

Dataset이 바인딩 되는 컴포넌트 속성

4

Dataset

컴포넌트에 바인딩하는 Dataset

5

Column ID

컴포넌트에 바인딩하는 Dataset의 칼럼 ID

Dataset이 폼이나 컴포넌트에 바인딩되면 Project Explorer의 해당 아이템에 다른 컴포넌트와 다르게 표시가 되어 쉽게 확인할 수 있습니다.

그림 17-3Bind Mark

17.1.2Bind Item 추가, 편집하기

Create Component & Bind Item Editor

Bind Item Editor와 마찬가지로 컴포넌트에 Dataset을 바인딩하는 경우에 사용합니다. 차이점은 Bind Item Editor의 경우 미리 생성된 컴포넌트에 바인딩하지만, Create Component & Bind Item Editor는 컴포넌트 생성과 동시에 바인딩할 수 있도록 하는 기능을 제공합니다.

Ctrl키를 누른 상태에서 Dataset 오브젝트를 Form영역으로 끌어다 놓거나 오른쪽 마우스를 클릭하고 나타나는 메뉴에서 [Create Component & Bind Dataset] 항목을 선택하고 Dataset을 선택하면 편집창을 띄울 수 있습니다.

Bind Item List는 Bind Item Editor에서 추가한 값입니다. 해당 목록에서 직접 편집할 수는 없으며 정보만 확인합니다.

컨텍스트 메뉴에서 [Create Component & Bind Dataset] 항목을 선택해 컴포넌트를 생성하면 left 속성값이 0, top 속성값이 0으로 생성됩니다.

Bind State 아이콘 표시하고 편집하기

Form에서 오른쪽 마우스를 클릭했을 때 나타나는 메뉴에서 [State View]를 선택하고 [Bind] 항목을 선택하면 Bind State 상태가 되고 바인딩된 컴포넌트를 확인할 수 있습니다.

바인딩된 컴포넌트는 오른쪽 하단에 Dataset 아이콘이 표시되고 아이콘을 클릭하면 Bind Item Editor가 표시됩니다.

속성창에서 편집하기

컴포넌트를 선택하고 속성창에서 [Bindable] 아이콘을 클릭하면 각 속성별로 Bind Item을 추가하거나 편집할 수 있습니다.

17.1.3데이터 바인딩 정보 확인하기

Invisible Objects 창

앱 개발 시 사용하지만, 화면에 보이지 않는 오브젝트는 별도로 관리할 수 있는 Invisible Objects 영역이 제공됩니다. 해당 창은 도킹창 형태로 제공합니다.

Invisible Object창이 표시되지 않는다면 Design 화면에서 컨텍스트 메뉴를 호출하고 [Show Invisible Object Area]를 선택하면 Invisible Object창을 열 수 있습니다.

Invisible Object창에서 컨텍스트 메뉴를 호출하면 Icon 표시 방법을 변경할 수 있습니다.

Binding Components List 창

Invisible Objects 창에서 선택한 Dataset 오브젝트와 바인딩된 컴포넌트 목록을 표시합니다. 목록으로 표시된 컴포넌트 항목 위로 마우스 커서를 가져가면 바인딩 정보를 표시하고 컴포넌트 항목을 더블클릭하면 디자인 화면에서 해당 컴포넌트로 포커스를 이동합니다.

17.2콘텐츠 에디터

17.2.1Grid Contents Editor

Grid 컴포넌트는 속성창에서 볼 수 있는 속성 외에 Grid를 구성하는 각 Cell 단위별로 추가적인 속성을 가지고 있습니다. Grid Contents Editor는 Grid의 추가적인 속성을 편집할 수 있는 기능을 제공합니다.

디자인 창에서 Grid 컴포넌트를 더블 클릭하면 Grid Contents Editor를 호출할 수 있습니다.

Grid Contents Editor는 기본 편집 창, 속성 창 및 Design Source로 구성되어 있습니다. 기본 편집 창에서는 컨텍스트 메뉴와 단축키를 사용하여 Cell을 추가/삭제하거나 속성을 편집할 수 있습니다. 기본 편집 창의 최상단에는 Column Index가 표시되고 아래로는 Head, Body, Summary로 구분되어 표시됩니다. 속성 창에는 Cell 구분, 해당 Cell의 속성 목록, 각각의 속성값이 표시됩니다.

기본 편집 창

그림 17-4Grid Contents Editor[Formats]

Grid Contents Editor 상단 툴바 또는 오른쪽 마우스 클릭 후 나타나는 메뉴에서 필요한 기능을 선택할 수 있습니다.

표 17-4Bind Item Editor


속성

설명

1

Format

Format을 추가하거나 삭제할 수 있습니다.

2

Add Column

Column을 추가합니다.

기본 기능은 Body Column을 추가하며 선택에 따라 Left, Right Column을 추가할 수 있습니다.

3

Add Head Row

Head Row를 추가합니다.

4

Add Body Row

Body Row를 추가합니다.

5

Add Summary Row

Summary Row를 추가합니다.

6

Add

선택한 Row나 Column 항목을 마지막 항목으로 추가합니다.

Cell을 선택한 경우에는 Columns, Rows 중 하나를 선택합니다.

7

Insert

선택한 Row나 Column 항목을 이전 항목으로 추가합니다.

Cell을 선택한 경우에는 Columns, Rows 중 하나를 선택합니다.

8

Delete

선택한 Row나 Column 항목을 삭제합니다.

Cell을 선택한 경우에는 Columns, Rows 중 하나를 선택합니다.

9

Merge Cells

2개 이상의 셀을 선택한 경우 셀을 합칩니다.

기본 기능은 선택한 셀을 하나로 합치며 선택에 따라 개별셀 속성은 유지한 상태로 합치는 기능을 사용할 수 있습니다.

10

Split Cell

합쳐진 셀을 해제합니다.

11

Same Width

선택한 Column 너비를 조정합니다.

마지막에 선택된 Column 기준으로 조정하거나 직접 값을 지정할 수 있습니다.

12

Same Height

선택한 Row 높이를 조정합니다.

마지막에 선택된 Row 기준으로 조정하거나 직접 값을 지정할 수 있습니다.

13

속성창

선택한 항목의 속성창

head 또는 Body 영역의 Row가 많은 경우 에디터 왼쪽에 있는 제목 영역을 더블클릭하면 해당 영역만 보이거나 전체 영역이 보이도록 선택할 수 있습니다.

Format

같은 데이터를 다양한 관점에서 살펴보거나 사용권한에 따라 데이터 일부를 감추어야 하는 경우 하나의 Grid에서 여러 Format을 사용해 데이터를 처리할 수 있습니다.

새로 Format을 추가하거나 기존 Format을 복사한 후 일부 항목을 수정할 수 있습니다. Grid에서 Format을 적용할 때는 formatid 속성값을 지정해 원하는 Format을 선택합니다.

Design Source

Design Source 창에서는 편집된 내용을 XML 형태로 표시되며 원하는 항목을 직접 수정할 수 있습니다.

그림 17-5Grid Contents Editor[Design Source]

17.2.2ListView Contents Editor

ListView 컴포넌트는 속성창에서 볼 수 있는 속성 외에 ListView를 구성하는 각 Band, Cell 단위별로 추가적인 속성을 가지고 있습니다. ListView Contents Editor는 ListView의 추가적인 속성을 편집할 수 있는 기능을 제공합니다.

디자인 창에서 ListView 컴포넌트를 더블 클릭하면 ListView Contents Editor를 호출할 수 있습니다.

ListView Contents Editor는 기본 편집 창, 밴드 편집 창, 속성 창 및 Design Source로 구성되어 있습니다. 기본 편집 창에서는 컨텍스트 메뉴와 단축키를 사용하여 Body, Detail 밴드를 추가/삭제하거나 속성을 편집할 수 있습니다. 기본 편집 창의 왼쪽은 Body, Detail 로 구분되어 표시됩니다. 속성 창에는 밴드 또는 셀 속성값이 표시됩니다.

기본 편집 창

그림 17-6Grid Contents Editor[Formats]

ListView Contents Editor 상단 툴바 또는 오른쪽 마우스 클릭 후 나타나는 메뉴에서 필요한 기능을 선택할 수 있습니다.

표 17-5Bind Item Editor


속성

설명

1

Format

Format을 추가하거나 삭제할 수 있습니다.

2

툴바

Body, Detail 밴드를 추가, 삭제하거나 밴드 편집 창으로 전환합니다.

컨텍스트 메뉴에서도 선택할 수 있습니다.


Append Body(Detail): Body(Detail) 밴드를 추가합니다. 이미 추가된 경우에는 비활성화됩니다.

Delete Body(Detail): Body(Detail) 밴드를 삭제합니다.

Edit Body(Detail): Body(Detail) 밴드 편집 창으로 전환합니다. 밴드 영역 내 각 셀을 편집할 수 있습니다.

3

속성창

선택한 Body(Detail) 밴드의 속성을 표시하고 편집할 수 있습니다.

밴드 편집 창

기본 편집 창에서 [Edit Body] 또는 [Edit Detail] 메뉴 선택 시 밴드 편집 모드로 전환됩니다.

표 17-6Bind Item Editor


속성

설명

1

툴바 (셀)

셀을 선택하거나 편집 영역의 위치를 수정할 수 있으며 새로운 셀을 추가할 수 있습니다.

Select: 하나 이상의 셀을 선택할 수 있습니다.

Move: 화면이 그려지는 캔버스 영역의 위치를 이동합니다.

Cell: 새로운 셀을 추가합니다.

Exit Editor: 기본 편집 모드로 전환합니다.

2

툴바 (Align)

배치된 셀의 위치를 정렬하거나 크기를 맞출 수 있습니다.

Align 항목의 설명을 참고하세요.

3

편집창

컴포넌트를 Form 편집창에 배치하는 것처럼 캔버스 위에 셀을 배치하고 위치와 크기를 지정할 수 있습니다.

Form 편집 시 사용하는 Position 속성, 트래커, Fit to Content, PositionBase, 가이드 기능을 사용할 수 있습니다.

Form 디자인 | 포지션, 가이드 항목의 설명을 참고하세요.

4

속성창

선택한 셀의 속성을 표시하고 편집할 수 있습니다.

Format

같은 데이터를 다양한 관점에서 살펴보거나 사용권한에 따라 데이터 일부를 감추어야 하는 경우 하나의 ListView에서 여러 Format을 사용해 데이터를 처리할 수 있습니다.

새로 Format을 추가하거나 기존 Format을 복사한 후 일부 항목을 수정할 수 있습니다. ListView에서 Format을 적용할 때는 formatid 속성값을 지정해 원하는 Format을 선택합니다.

Design Source

Design Source 창에서는 편집된 내용을 XML 형태로 표시되며 원하는 항목을 직접 수정할 수 있습니다.

그림 17-7Grid Contents Editor[Design Source]

17.2.3Json Contents Editor

DataObject 오브젝트처럼 contents 속성값이 true이고 메타인포에서 ContentsInfo 태그 contentsformat 설정값이 "json"인 오브젝트의 관련 속성 선택 시 편집할 수 있습니다.

표 17-7Bind Item Editor


속성

설명

1

URL

URL 입력 후 [Get] 버튼을 클릭하면 해당 JSON 리소스를 받아와 표시합니다.

2

Json Contents

JSON 리소스를 편집합니다.

type 설정값에 따라 하위 아이템을 추가할 수 있습니다.

3

보기 모드

Contents 탭 선택 시 트리 형태로 데이터를 표시합니다.

Source 탭 선택 시 코드 형태로 데이터를 표시합니다.

Source 탭에서 코드 수정 시 오류가 발생한 경우 오류 발생 위치를 표시합니다.

17.2.4Data Path Editor

Dataset 오브젝트에서 binddataobject 속성값으로 DataObject 오브젝트를 선택하고 속성창에서 dataobjectpath 속성 선택 시 편집할 수 있습니다.

표 17-8Bind Item Editor


속성

설명

1

Target Source

binddataobject 속성값으로 선택한 DataObject를 표시합니다.

DataObject 오브젝트가 contents 속성값을 가진 경우에는 해당 contents를 표시하고 그렇지 않은 경우에는 URL 항목값을 입력하고 데이터를 가져올 수 있습니다.

2

DataObject Path

Dataobject Root Path를 설정합니다.

Json Contents 결과에서 항목을 선택해 지정할 수 있습니다.

Path 설정 후 [Refresh] 버튼을 클릭하면 [Filtered Contents] 탭에 필터링한 결과값을 표시합니다.

3

Json Contents

[Contents] 탭 선택 시 트리 형태로 데이터를 표시합니다.

[Filtered Contents] 탭 선택 시 트리 형태로 필터링한 데이터를 표시합니다.

4

Columns

Json Contents 데이터에서 항목을 선택해 컬럼 datapath 값으로 설정합니다.

17.2.5XML Contents Editor

기본적인 XML 코드를 추가할 수 있는 콘텐트 에디터입니다. Plugin 컴포넌트처럼 contents 속성값이 true이고 메타인포에서 ContentsInfo 태그 contentsformat 설정값이 "xml"인 오브젝트의 관련 속성 선택 시 편집할 수 있습니다.

17.2.6Basic Contents Editor

지정한 형식에 따라 XML 코드를 생성할 수 있는 콘텐트 에디터입니다. 오브젝트의 contents 속성값이 true이고 메타인포에서 ContentsInfo 태그 contentsformat 설정값이 "ObjectItem"인 오브젝트의 관련 속성 선택 시 편집할 수 있습니다.

오브젝트에서 정의한 typename, maxoccurs, minoccurs 설정값에 따라 추가할 수 있는 아이템의 종류나 개수가 정해집니다.

표 17-9Bind Item Editor


속성

설명

1

Object Tree

maxoccurs, minoccurs 설정값에 따라 하위 아이템을 추가할 수 있습니다.

2

속성창

선택한 아이템에서 설정할 수 있는 속성을 표시하고 편집할 수 있습니다.

typename으로 설정한 클래스에 해당하는 속성을 표시합니다.

3

보기 모드

Contents 탭 선택 시 트리 형태로 데이터를 표시합니다.

Source 탭 선택 시 코드 형태로 데이터를 표시합니다.

17.3이벤트 생성

이벤트를 편집할 컴포넌트를 선택하고 속성창의 이벤트 편집 모드를 선택하여, 컴포넌트의 이벤트를 작성할 수 있습니다. 이벤트는 사용자가 직접 스크립트로 작성할 수도 있지만 속성창에서 해당 이벤트를 더블 클릭하면 자동으로 이벤트 함수를 생성할 수 있습니다.

그림 17-8Create Event Function

폼에 배치된 컴포넌트를 더블 클릭하면, 해당 컴포넌트의 특정 이벤트가 자동으로 생성됩니다. onclick 이벤트를 가지고 있는 경우에는 onclick 이벤트가 생성되며 그 외의 경우에는 지정된 이벤트가 생성됩니다.

컴포넌트를 선택하고 이벤트 함수를 생성하는 경우에는 아래와 같은 규칙에 따라 생성합니다.

컴포넌트 선택 조건

이벤트 함수명 생성 규칙

하나의 컴포넌트 선택

[컴포넌트 ID]_[이벤트명]

두 개 이상의 같은 종류 컴포넌트 선택

[컴포넌트 TYPE]_[이벤트명]

두 개 이상의 다른 종류 컴포넌트 선택

Common_[이벤트명]

예를 들어 Button 컴포넌트 2개를 선택하고 디자인 화면에서 마우스를 더블클릭하거나 속성창에서 이벤트를 선택하고 마우스를 더블클릭하면 아래와 같이 이벤트 함수명이 생성됩니다.