Course D-1
자주 사용되는 컨트롤 실습
목표
기존 프로젝트를 복사하여 새로운 폼을 생성해보고 XtraTabControl을 사용한 코드 작성 패턴, TreeList와 ChartControl에 데이터 바인딩을 실습합니다.
학습 인정 시간: 4 시간
개발 화면



1. 폼 생성
1.1) 기존 프로젝트 파일 복사
이전 과정에서 개발했던 "공통 코드 관리(DEV002_xxx)"의 프로젝트 폴더로 이동하여 bin, obj 폴더를 제거합니다.
해당 프로젝트 폴더와 Visual Studio Solution(.sln) 파일이 포함 되어있는 폴더를 복사합니다.
복사된 폴더의 이름을 "DEV004_xxx"로 변경하고, 해당 폴더 내 솔루션 파일(.sln)과 ".git" 폴더를 제거한 다음 마찬가지로 프로젝트 폴더의 이름도 변경합니다.



프로젝트 폴더 내 Visual C# Project File(.csproj)의 이름을 "DEV004_xxx.csproj"로 변경하고 실행하여 [VisualStudio→파일→모두 저장(Ctrl+Shift+S)]으로 "프로젝트 폴더"와 동일한 위치에 솔루션 파일(.sln)을 저장합니다.


솔루션 탐색기에서 클래스 파일 이름을 "DEV004_xxx.cs"로 변경하면 해당 클래스의 모든 참조 이름을 변경하겠냐는 알림 창이 뜨고, 확인 버튼을 클릭합니다.
마지막으로 [프로젝트 속성] 창에서 어셈블리 이름을 변경합니다.


1.2) 저장 프로시저 복사
DEV002_xxx 프로젝트의 조회, 저장용 프로시저를 열어 CREATE 문으로 수정 후 각각 "P_DEV004_xxx_Q", "P_DEV004_xxx_S"를 새로 생성합니다.

1.3) 폼 정보 등록 [GPM→개발→폼 정보]
[GPM Tools]로 프로젝트 파일을 생성한게 아니기 때문에 폼 정보를 다음과 같이 수동으로 등록합니다.
저장 후 [VisualStudio→도구→GPM Tools]를 실행하여 등록했던 폼 정보가 정상적으로 불러와지는지 확인합니다.


2. XtraTabControl (GST.Platform.Client.Controls.TabEx)
2.1) 화면 디자인 수정
디자인 탭에서 도구 상자를 통해 TabEx 컨트롤을 폼에 추가하고 아래 사진과 같이 디자인 정보를 수정합니다.

2.2) 활성화 된 탭에 따른 코드 처리 패턴 적용
폼에 탭 컨트롤을 이용하여 화면을 구분하였고, GSTBrowser의 공통 버튼 기능에 대하여 활성화 된 탭에 따라 기능을 다르게 처리해야 하므로 코드를 수정합니다. ( ※ 자세한 설명은 [링크]의 내용과 Example 코드 확인 )
OnLoad 메서드에서 탭 페이지별 버튼의 상태를 초기화합니다.
생성자에서 텝 페이지가 변경되었을 때 GSTBrowser에 버튼 상태를 변경되기 전 페이지(
e.PrevPage)의 Tag 속성에 입력하고, 변경된 페이지(e.Page)의 Tag 속성에 등록된 버튼 상태 정보를 확인하여 업데이트하는 이벤트 핸들러를 등록합니다.
각 버튼별 클릭 메서드(
ClickRetrieveButton, ClickNewButton ...)에 현재 선택된 탭 페이지를 비교하는 코드를 작성합니다.
3. TreeList (GST.Platform.Client.Controls.TreeListEx)
3.1) 조회용 프로시저(P_DEV004_xxx_Q)에 쿼리 추가
TreeList 컨트롤에 바인딩 할 데이터를 조회하기 위해 새로운 작업 타입(
@p_work_type='tree_view')의 쿼리를 등록합니다. (※parent_key_id,key_id필드에 대해서는 아래에서 설명)

3.2) 디자인 수정
두 번째 텝 페이지에 GroupControlEx와 TreeListEx 컨트롤을 추가하고, GPM Tools를 통해 조회용 프로시저 결과 테이블을 사용하여 트리의 컬럼에 생성합니다.
이후 TreeList의 디자이너 옵션 팝업에서 KeyFieldName과 ParentFieldName 속성에 각각
key_id,parent_key_id값을 설정하고 [GPM Tools→용어 정보]에서 용어 정보를 세팅합니다.



3.3) 조회 기능 수정
조회용 프로시저 실행 메서드(Func_P_DEV004_xxx_Q)에 작업 타입이
"tree_view"일때 트리 컨트롤에 데이터가 바인딩 되도록 수정합니다.ClickRetrieveButton 메서드에서 두 번째 탭 페이지가 활성화 되어있을 때 작업 타입
"tree_view"로 Func_P_DEV004_xxx_Q 메서드를 호출합니다.
3.4) TreeList 요약 정보

4. ChartControl
4.1) 조회용 프로시저(P_DEV004_xxx_Q)에 쿼리 추가
ChartControl에 바인딩 할 데이터를 조회하기 위해 새로운 작업 타입(
@p_work_type='chart')의 쿼리를 등록합니다.

4.2) 디자인 수정
세 번째 탭 페이지를 추가하여 해당 페이지에 GroupControlEx와 ChartControl을 배치하고 용어 정보를 수정합니다.


4.3) 탭 페이지 버튼 상태 초기화
새로 추가한 탭 페이지에 대한 초기 버튼 상태를 등록합니다.
4.4) 조회 기능 수정
조회용 프로시저 실행 메서드(Func_P_DEV004_xxx_Q)에 작업 타입이
"chart"일때 차트 컨트롤에 데이터가 바인딩 되도록 수정합니다.ClickRetrieveButton 메서드에서 세 번째 탭 페이지가 활성화 되어있을 때 작업 타입
"chart"로 Func_P_DEV004_xxx_Q 메서드를 호출합니다.※ 차트에 데이터를 바인딩하는 패턴에는 쿼리 결과에 따라 여러 케이스가 있으며 실습 과정에선 가장 일반적인 패턴을 사용합니다.
5. 체크 리스트
각 탭 페이지별로 GSTBrowser의 공통 버튼 상태가 제대로 변경되는지 확인합니다.
[처리영역] 탭 페이지에서 검색 / 신규→저장 / 수정→저장 / 삭제 기능이 올바르게 동작하는지 확인합니다.
[조회영역] 탭 페이지에서 트리의 레벨과 전체 노드의 개수가 Footer영역에 정상적으로 표현되는지 확인합니다.
[차트] 탭 페이지에서 그래프가 정상적으로 표현되는지 확인합니다.
Last updated