FX (Software FX, Inc.) All rights reserved -...

225
www.yessdata.com . 문서에 포함된 정보는 알리지 않고 변경될 있으며 Software FX (Software FX, Inc)㈜예쓰월드 측에 어떠한 책임도 없습니다. 문서에 포함되어 있는, 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는 라이센스 동의나 기밀 유지 동의(NDA) 가정 하에서만 제공됩니다. 소프트웨어는 이러한 동의들의 조건에 일치하는 경우에만 사용되거나 복사될 있습니다. 목적으로 복사하는 경우를 제외하고는 소프트웨어를 모든 종류의 매체에 복사하는 것은 위법 행위입니다. 매뉴얼의 어떤 부분에 대해서도 Software FX 사가 하게 문서로써 나타내어 허가한 경우를 제외하고는 사진 복사, 녹음, 정보 저장/검색 시스템을 포함한 어떤 형태나 어떤 수단과 전자적이거나 기계적인 법을 통해서 구매자의 개인적 용도 이외의 어떠한 목적으로도 재생하거나 전송할 없습니다. Software FX 사는 매뉴얼에 포함된 내용에 관해서 표시된 경우나 암시된 경우 모두에 대해서 특정 목적을 위해서 시장성이 있다거나 목적에 적합함에 대한 암시적, 명시적인 보장을 없습니다. 사업 이윤의 손실, 사업 중단, 사업 정보의 손실, 또는 다른 벌금 등으로 인한 재정적 손실 등으로 인한 피해 등을 포함하는 무한한 피해 범위에 대해서 설령 Software FX 사가 이러한 손실이 발생할 사실을 알고 있었다 하더라도, 어떠한 경우에도 Software FX 사는 책임이 없습니다. 특정 국가에서는 필연적이거나 우연적인 경우에 대해서 책임 면제나 한계를 허가하지 않기 때문에 위의 제한은 귀하에게는 적용되지 않을 수도 있습니다. © 1999 소프트웨어 FX (Software FX, Inc.) All rights reserved Printed in the United States of America Chart FX(Chart FX)Software FX 사의 등록 상표입니다. 다른 제품들과 브랜드 이름들은 소유자의 상표이거나 등록 상표입니다. YESSWorld ㈜예쓰월드의 상호이며, YESSDATA.COM ㈜예쓰월드에서 운영하는 사이트 입니다.

Transcript of FX (Software FX, Inc.) All rights reserved -...

Page 1: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

.

이 문서에 포함된 정보는 알리지 않고 변경될 수 있으며 Software FX사(Software FX, Inc)와 ㈜예쓰월드 측에 어떠한 책임도 없습니다. 이 문서에 포함되어 있는, 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는 라이센스 동의나 기밀 유지 동의(NDA) 가정 하에서만 제공됩니다. 이 소프트웨어는 이러한 동의들의 조건에 일치하는 경우에만 사용되거나 복사될 수 있습니다. 백업 목적으로 복사하는 경우를 제외하고는 이 소프트웨어를 모든 종류의 매체에 복사하는 것은 위법 행위입니다. 이 매뉴얼의 어떤 부분에 대해서도 Software FX사가 명백하게 문서로써 나타내어 허가한 경우를 제외하고는 사진 복사, 녹음, 정보 저장/검색 시스템을 포함한 어떤 형태나 어떤 수단과 전자적이거나 기계적인 방법을 통해서 구매자의 개인적 용도 이외의 어떠한 목적으로도 재생하거나 전송할 수 없습니다. Software FX사는 이 매뉴얼에 포함된 내용에 관해서 명백히 표시된 경우나 암시된 경우 모두에 대해서 특정 목적을 위해서 시장성이 있다거나 그 목적에 적합함에 대한 암시적, 명시적인 보장을 할 수 없습니다. 사업 이윤의 손실, 사업 중단, 사업 정보의 손실, 또는 다른 벌금 등으로 인한 재정적 손실 등으로 인한 피해 등을 포함하는 무한한 피해 범위에 대해서 설령 Software FX사가 이러한 손실이 발생할 사실을 알고 있었다 하더라도, 어떠한 경우에도 Software FX사는 책임이 없습니다. 특정 국가에서는 필연적이거나 우연적인 경우에 대해서 책임 면제나 한계를 허가하지 않기 때문에 위의 제한은 귀하에게는 적용되지 않을 수도 있습니다. © 1999 소프트웨어 FX (Software FX, Inc.) All rights reserved Printed in the United States of America Chart FX(Chart FX)는 Software FX사의 등록 상표입니다. 다른 제품들과 브랜드 이름들은 각 소유자의 상표이거나 등록 상표입니다. YESSWorld는 ㈜예쓰월드의 상호이며, YESSDATA.COM은 ㈜예쓰월드에서 운영하는 웹 사이트 입니다.

Page 2: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

.

Chart FX(Chart FX) 프로그래머 가이드

목차(Table of Contents)

Page 3: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

.

Page 4: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

.

소개 개요......................................................................................................................................................... 3

이 매뉴얼에 대하여 ................................................................................................................................. 4

기술 지원 받기 ........................................................................................................................................ 4

CHART FX의 통합 ................................................................................................................................. 6

CHART FX 예제들 .................................................................................................................................. 9

CHART FX OLE 서버 ........................................................................................................................... 13

CHART FX 인터넷 에디션 호환성 정보 ................................................................................................ 17

Chapter 1. Chart FX의 기본적 사항

차트 만들기........................................................................................................................................... 21

디자인 시에 프로퍼티(PROPERTIES) 설정하기 .................................................................................. 21

실행 시에 프로퍼티(PROPERTIES) 설정하기...................................................................................... 22

객체 지향 프로그래밍과 COM 지원 ...................................................................................................... 23

CHART FX 마법사 ................................................................................................................................ 24

Chapter 2. Chart FX에 대한 데이터 전달

소개....................................................................................................................................................... 29

API를 사용한 데이터 전달........................................................................................ 30 포인터의 개수를 알 수 없는 경우.............................................................................................. 32 숨은 포인터들 .......................................................................................................................... 32 기존의 값 변경 ......................................................................................................................... 33 화면 깜박임 제거 ..................................................................................................................... 33 스크롤바 제어 .......................................................................................................................... 34

CHART FX 데이터 제공자 .................................................................................................................... 35

데이터 바인딩(BINDING)...................................................................................................................... 37

ADO RESULTSET에 연결 ................................................................................................................... 40

Page 5: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

.

배열에서 데이터 읽기 ........................................................................................................................... 41

컬렉션(COLLECTION)에서 데이터 읽기 .............................................................................................. 43

텍스트 파일에서 데이터 읽기 ............................................................................................................... 45

Chapter 3. 좌표축 작업

개요....................................................................................................................................................... 49

AXIS 개체 ............................................................................................................................................. 50

AXIS 형식 정의 ..................................................................................................................................... 51

AXIS 이름 붙이기.................................................................................................................................. 52

AXIS 스크롤링 ...................................................................................................................................... 54

모눈 표시와 눈금 표시 ......................................................................................................................... 56

Chapter 4. Chart FX 색상 작업

색 종류 .................................................................................................................................................. 61

기본 색상 바꾸기................................................................................................................................... 61

색상 팔레트(PALETTE) ........................................................................................................................ 62

각 데이터 표시 요소에 개별적인 색상 지정하기. .................................................................................. 63

배경색 바꾸기 ....................................................................................................................................... 63

색상안. .................................................................................................................................................. 64

패턴(PATTERN) ................................................................................................................................... 64

Chapter 5. 차트 데이터 표시 요소 사용자 정의 하기

점 크기와 모양 ...................................................................................................................................... 67

원뿔과 원통 모양................................................................................................................................... 67

선 스타일과 두께................................................................................................................................... 68

Page 6: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

.

자동적으로 파이 조각 나누기 ............................................................................................................... 68

Chapter 6. 3차원 효과

차트를 3차원 모드에서 나타내기 ......................................................................................................... 71

자동적으로 차트 회전 시키기 ............................................................................................................... 71

차트 묶기(CLUSTER) ........................................................................................................................... 71

3차원 깊이와 원근 효과 ....................................................................................................................... 72

Chapter 7. 특수 차트 타입으로 작업하기

XY 그래프 ............................................................................................................................................. 75 데이터 전달 .............................................................................................................................................................75 FAQ .............................................................................................................................................................................77 분산 차트(SCATTER CHART)에서 점 하이라이트 표시하기 ......................................................................................78

다중 유형 차트 ...................................................................................................................................... 79

다중 중첩 차트 ...................................................................................................................................... 80

GANTT 차트 ......................................................................................................................................... 81

재무 차트 .............................................................................................................................................. 84

표면형 및 경계선형 차트....................................................................................................................... 86

버블 차트 .............................................................................................................................................. 89

Chapter 8. 상수 표시선과 컬러 줄무늬

상수 표시선의 예제 ............................................................................................................................... 93

컬러 줄무늬의 예제 ............................................................................................................................... 94

Page 7: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

.

Chapter 9. 파일 처리와 템플릿

IMPORT 메소드와 EXPORT 메소드..................................................................................................... 97

CHART FX 3.0 필터 ............................................................................................................................. 98

유용한 정보........................................................................................................................................... 99

Chapter 10. 마우스 이벤트 감지

데이터 표시 요소 드래깅..................................................................................................................... 103

요청에 따른 메뉴 표시 ........................................................................................................................ 103

유용한 정보 사용자 정의하기 ............................................................................................................. 103

풍선 도움말 사용자 정의하기 ............................................................................................................. 104

마우스 추적......................................................................................................................................... 105

Chapter 10. 차트 인쇄

차트 인쇄 ........................................................................................................................................... 109

용지 방향 설정 .................................................................................................................................... 109

컬러 인쇄 또는 흑백 인쇄.................................................................................................................... 109

한 페이지에 여러 차트 인쇄하기......................................................................................................... 110

프린터 드라이버 설정 ......................................................................................................................... 111

Chapter 11. 차트 FX 도구 사용자 정의

CHART FX 도구 . 개요 ....................................................................................................................... 115

도구 막대 사용자 정의 ........................................................................................................................ 116 COMMANDS 객체와 TOOLBAROBJ 객체 간의 관계............................................................................................... 118 도구 막대 보이기/숨기기........................................................................................................................................... 119 도구 막대 위치 지정 .................................................................................................................................................. 119 도구 막대 내의 버튼 숨기기/보이기 .......................................................................................................................... 120

Page 8: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

.

도구 막대 버튼에 대한 명령 변경 .............................................................................................................................. 121 도구 막대에 버튼 추가 하기 ...................................................................................................................................... 122 유용한 정보 변경하기 ............................................................................................................................................... 124 도구 막대 아이콘 변경하기 ....................................................................................................................................... 125 세부 명령(SUBCOMMAND)에 대한 작업.................................................................................................................. 127 선택 메뉴(SELECTOR)에 대한 작업 ....................................................................................................................... 128 사용자 정의 명령 추가 .............................................................................................................................................. 129 사용자 정의 도구 막대 작성 및 제시 ......................................................................................................................... 131

CHART FX DATAEDITOR 객체 ......................................................................................................... 133

PALETTEBAR 객체 ............................................................................................................................ 134

PATTERNBAR 객체 ........................................................................................................................... 135

LEGEND BOX 객체 ............................................................................................................................ 136

SERIES LEGEND BOX 객체.............................................................................................................. 137

Chapter 12. 실시간 차트

개요..................................................................................................................................................... 141

실시간 데이터 전달 ............................................................................................................................. 142

범례 스크롤링 ..................................................................................................................................... 144

Chapter 13. 개방적인 페인팅 구조

차트 페인팅 사용자 정의. 개요 .......................................................................................................... 147

CPI 상수.............................................................................................................................................. 148

PREPAINT 이벤트 예제...................................................................................................................... 150

PAINTMARKER 이벤트 예제.............................................................................................................. 151

Chapter 14. Chart FX UI 크로스 레퍼런스

GENERAL 대화 상자 .......................................................................................................................... 155

SERIES 대화 상자 .............................................................................................................................. 157

Page 9: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

.

AXIS 대화 상자 ................................................................................................................................... 161 AXIS SCALE 대화 상자 ............................................................................................................................................ 163 AXIS LABELS 대화 상자........................................................................................................................................... 165 AXIS GRIDLINES 대화 상자..................................................................................................................................... 166

3D EFFECTS 대화 상자 ..................................................................................................................... 168

CONSTANT 대화 상자 및 STRIPES 대화 상자 .................................................................................. 170

DATA/BEHAVIOR 대화 상자 .............................................................................................................. 172

COMMANDS 대화 상자 ...................................................................................................................... 174

EXTENSIONS 대화 상자 .................................................................................................................... 175

Chapter 15. Annotation(주석) 객체

개요..................................................................................................................................................... 179

주석 확장(ANNOTATION EXTENSION) 활성화 ................................................................................ 179

자동적으로 객체 생성하기 .................................................................................................................. 181

적용 문제 ............................................................................................................................................ 183

Appendix A. 마이그레이션(Migration) 문제

CHART FX 3.0으로부터의 마이그레이션 ......................................................................................... 187

프로젝트 파일 변환 ............................................................................................................................. 187

더 이상 사용하지 않는 API/대치된 API............................................................................................... 188

Appendix B. 필요한 메모리

CHART FX 메모리 요구사항 .............................................................................................................. 193

Page 10: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

.

Appendix c. 적용 문제

어플리케이션 적용하기 ...................................................................................................................... 197

Appendix D. 호환성 문제

ACTIVEX와 DLL 중의 선택 ................................................................................................................ 201

CHART FX와 비주얼 C++.................................................................................................................. 202

CHART FX와 볼랜드의 제품들 .......................................................................................................... 205

Appendix E. 라이센싱 문제

CHART FX 라이센싱 적용 방법......................................................................................................... 209

색인

Page 11: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

1

Chart FX 프로그래머 가이드

Chart FX의 사용을 환영합니다

이 절에서 다루는 주제들

소개 이 매뉴얼에 대하여

기술 지원 받기 Chart FX와 사용자의 개발 도구와의 통합

Chart FX 예제 모음

Page 12: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

2

Page 13: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

3

환영합니다! Chart FX를 차트 도구로 선택해 주신 여러분께 감사 드립니다. 여러분은 Chart FX가 제공하는 유연하고도 강력한 차트 작성 능력에 필적할 만한 다른 차트 작성 제품이 없다는 것을 곧 아시게 될 것입니다. Chart FX는 여러분의 어플리케이션을 이전 보다 훨씬 강력한 것으로 만들어 주는 새로운 특징으로 가득 차 있습니다. 예를 들면: Chart FX는 COM 기반으로 제작되었습니다. COM은 용이하게 사용 가능한 객체를 투명하게 나타내고 최근의 객체 기반 언어와 도구들에 의해 정의된 객체의 형식과도 호환성을 가지기 때문에 Chart FX는 프로그램하기가 쉬운 특성을 가집니다. 또한 COM은 부수적인 개발/테스팅 노력이 없이 Chart FX의 API가 모든 종류의 컴파일/ 인터프리터 언어로부터 쉽게 호출이 될 수 있도록 확실하게 보장해 줍니다. Chart FX는 이해하기 쉽고 모든 개발 환경과 호환성을 가지는 완벽한 객체 지향 API를 제공하며 비주얼 베이직과 다른 비주얼 개발 도구들이 제공하는 비주얼 개발 기능을 이용할 수 있도록 합니다. Chart FX는 1993년 처음 세상에 선보인 이후로 개발자들이 선호하는 선도적인 차트 작성 컴포넌트로 자리를 지켜 왔습니다. 이번의 새로운 버전이 출시되면서 Chart FX는 가장 강력한 특성들을 제공할 뿐만 아니라 이로 인해서 사용자가 느끼는 전체적인 성능과 속도는 전혀 영향이 없도록 설계된 것입니다. 핵심적인 컴포넌트들은 이전 버전의 Chart FX에서와 같은 메모리 사양을 요구하고 있어서 적용의 용이성과 적용된 어플리케이션의 메모리나 하드웨어 요구 사양에 어떠한 나쁜 영향도 미치지 않도록 했습니다. Chart FX는 확장성을 고려해서 설계 되었습니다. 따라서 이러한 특성으로 인해서 이 제품의 기능을 확장할 수 있는 강력한 애드-온(add-on)을 설치할 수 있습니다. 특수한 목적에 대해 분리된 기능으로 확장할 수 있는 능력을 가짐으로 해서 Chart FX는 이전보다도 더 기능적인 모습을 갖추게 되었습니다. 예를 들어, Chart FX 확장의 하나로 주식 시장 데이터에 대한 차트를 구현하는 재무 관련 어플리케이션을 위해서 특별히 설계된 ‘Chart FX 재무 에디션’이 제공됩니다. 다른 좋은 예로써 여러분이나 여러분의 어플리케이션을 사용하는 사용자가 작성한 차트 위에 풍선 도움말 등의 주석을 달 수 있도록 무료로 제공되는 ‘주석 확장(annotation extension)’을 들 수 있습니다. 또한 Chart FX 마법사를 통해서 몇 초 만에 멋진 차트들을 제작할 수 있습니다. 마법사 기능은 단 한 줄의 코드도 작성하지 않고서 몇 가지 단계를 거쳐 여러분이 선호하는 차트와 시각적인 특성들을 설정할 수 있도록 합니다. Chart FX 사용자 인터페이스 또한 Windows 98, XP, NT 4.0, Windows 2000등 새로운 운영체제에 적합하도록 강화되었습니다. 예를 들자면 한번의 마우스 클릭으로 모든 차트의 요소들에 대해 12개 이상의 색상을 사용할 수 있도록 하는 팔레트 막대 같은 것도 사용 가능합니다. Chart FX는 엄청난 수의 차트 종류로 유명합니다. 이제 거기에다가 버블, 윤곽, 피라미드, 곡선 영역, Multistacked, XY 선, XY 영역, 영역 스플라인 등등 더 많은 차트 형식들이 포함되었습니다.

Page 14: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

4

이 매뉴얼에 대하여 이 매뉴얼은 가장 일반적으로 사용되는 Chart FX의 몇몇 특징들에 대해서 다루게 됩니다. 이 매뉴얼은 API 레퍼런스 용으로 제작된 것은 아닙니다. 만일 객체, 프로퍼티, 메소드, 이벤트 등을 포함해서 Chart FX API에 대해서 알고 싶으시다면 ‘\help’ 디렉토리에 있는 ‘Chart FX API 가이드’를 참조하시기 바랍니다. 이 전자 문서 도움말 파일은 Chart FX API에 대해서 문법, 예제, 설명 등을 포함한 상세한 정보를 제공합니다. 그리고 이 매뉴얼은 비주얼 베이직 6.0에서 제공되는 예제 코드를 바탕으로 하고 있으며 Chart FX ActiveX 컨트롤을 사용하고 있습니다. 만일 OCX 모델을 지원하는 다른 개발 도구를 사용하고 있는 경우에도 이 매뉴얼에 설명된 일반적인 주제들에 대한 정보를 참고할 수 있을 것입니다. 다른 몇몇 개발 도구에 대한 특정 예제들은 ‘\samples’ 디렉토리 내에서 찾을 수 있습니다. 기술 지원

최신 정보와 제품 업데이트에 관한 정보는 저희 웹사이트 http://support.softwarefx.com 에서 항상 제공되고 있습니다.

Chart FX의 대표 메일 연락처는 [email protected]입니다.

㈜예쓰월드 웹 사이트의 기술지원란 이나 Software FX사의 웹사이트에서 제공하는 E-Mail주소를 이용하시기 바랍니다.

한국내 기술 지원은 전화 번호로는 지원되지 않습니다. 그러나 라이센싱과 마케팅 정보에 대해서는 (02) 567-9169번을 이용하실 수 있습니다.

연락을 하실 때는 사용하고 있는 Chart FX의 시리얼 번호와 Chart FX 컴포넌트의 모델과 버전을 미리 준비해 주십시오.

Note

Page 15: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

5

온라인 지원 (http://support.softwarefx.com) 이 사이트에서 지식 데이터베이스 문서, 예제 코드, 일반적인 문서, 제품 업데이트, 그리고 다른 중요한 기술 지원 정보를 찾을 수 있습니다. 이 사이트는 사용자가 정보를 쉽고 빠르게 검색할 수 있도록 설계되었습니다. 그리고 이 사이트는 저희의 웹 기반 제품(예를 들어, WebBarFX)을 몇 가지 사용하고 있기 때문에 윈도우 기반 시스템에서만 사용 가능합니다. (Netscape와 IE 모두 사용가능).

support.sofwarefx.com은 마이크로 소프트 인터넷 익스플로러 4.0이나 넷스케이프 네비게이터 4.0이나 그 이상의 버전에서 800x600의 해상도에 최적화 되었습니다. 이 사이트는 등록된 사용자들만 사용 가능합니다. 따라서 구입하신 Chart FX를 등록하지 않으셨다면 http://www.softwarefx.com에서 먼저 등록하십시오 일반적인 문제에 대해서 소프트웨어 FX에 연락하기 전에 이 사이트를 먼저 방문하시도록 강력하게 권장해 드립니다. 국내 유통사인 ㈜예쓰월드 http://www.yessdata.com 을 방문하시면, 기술지원과 세미나 행사 등의 정보를 얻으실 수 있습니다.

Page 16: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

6

Chart FX와 사용자의 개발 도구와의 통합 여러분의 특정한 개발 도구에 대한 Chart FX의 설치를 완성하기 위해서 이 장에서 설명된 지시사항을 따라 주십시오. 비주얼 베이직 (6.0) i) Chart FX ActiveX를 다음과 같이 프로젝트에 포함시킵니다: - Project 메뉴에서 Components...를 선택합니다. - Controls list에서 Chart FX Client Server Control을 선택합니다. ii) Chart FX 헤더 파일(CFXOCX.BAS)을 다음과 같이 포함시킵니다: - Project 메뉴에서 Add Module을 선택합니다. - Existing 모듈에서 ‘ChartFX Client Server\Include’에 있는 CFXOCX.BAS를 선택합니다. 볼랜드 델파이 와 볼랜드 C++ 빌더

Chart FX v2.0는 볼랜드 델파이와 볼랜드 C++ 빌더와 OEM으로 제공됩니다. 설치를 계속하기 전에 기존 버전을 제거해야 합니다.

i) 이전 버전의 Chart FX를 다음과 같이 컴포넌트 라이브러리에서 제거합니다: - File 메뉴에서 Close All을 선택합니다. - Component 메뉴에서 Install Packages…를 선택합니다. - Borland Sample Imported ActiveX Controls 패키지를 선택합니다. - Remove를 클릭합니다. 확인을 위해서 Yes 를 선택합니다. - OK 버튼을 누릅니다. ii) 새로운 Chart FX Client Server 컴포넌트를 다음과 같이 import합니다: - Component 메뉴에서 Import ActiveX Control…을 선택합니다. - 리스트에서 Chart FX Control 을 선택합니다. - Install...을 클릭하고 Yes를 선택합니다. - Into new package를 선택합니다. - File name으로 CFXAX.DPK를 입력합니다. - Description으로 Chart FX ActiveX를 입력합니다. - OK.를 클릭하고 Yes를 선택합니다. - 변경사항을 저장합니다. Note: 다른 환경 통합 문제에 대해서는 appendix D를 참조하십시오. MS 액세스 (97) i) 폼이나 리포트 형식에 Chart FX ActiveX 컨트롤을 다음과 같이 추가합니다: - 디자인을 위해서 폼/리포트를 엽니다 - Insert 메뉴에서 ActiveX Control…을 선택합니다. - 컨트롤을 적당한 크기로 맞춥니다.

Note

Page 17: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

7

비주얼 C++ (6.0) Resource Editor로부터 dialog template에 Chart FX ActiveX를 다음과 같이 포함시킬 수 있습니다: - 대화 상자 내에서 오른쪽 버튼을 클릭하고 Insert ActiveX Control…을 선택합니다. - ActiveX 컨트롤 리스트에서 Chart FX Control 을 선택합니다. - OK를 클릭합니다. - 컨트롤을 적당한 크기로 변경합니다. appendix D에 VC++ 프로젝트에 Chart FX을 포함시키는 다른 방법이 수록되어 있습니다. Visual FoxPro (6.0) i) Chart FX ActiveX를 폼에 다음과 같이 포함시킵니다: - ActiveX Control (OleControl)을 폼에 삽입합니다. - Insert Control을 선택합니다. - Control Type 리스트에서 Chart FX Control을 선택합니다. - OK를 클릭합니다. - 컨트롤을 적당한 크기로 변경합니다. - Control Type 리스트 박스에서 ChartFX Control을 선택합니다. - OK를 클릭합니다. - 차트에서 오른쪽 버튼을 클릭한 후 Properties...를 선택해서 차트 속성을 변경합니다. ii) Chart FX 헤더 파일을 다음과 같이 폼에 포함시킵니다: - Form 메뉴에서 Include File...을 선택합니다. - ‘ChartFX Client Server\Include’ 디렉토리에서 CFXOCX.PRG 을 선택합니다. - 폼 초기화에 다음 라인을 추가합니다: SET PROCEDURE TO <ChartFX 설치 경로>\INCLUDE\CFXOCX ADDITIVE 다른 개발 도구들 개발도구 제작사에서 제공하는 서드 파티의 컴포넌트들을 어떻게 포함시키는지에 대한 지시 사항을 따르시기 바랍니다.

Page 18: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

8

Page 19: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

9

Chart FX 예제들 Chart FX는 이 제품이 제공하는 특징을 사용하려 할 때 참조할 수 있는 많은 예제들을 제공합니다. 이러한 예제들은 사용자의 사용을 도와주며 ‘\samples’ 디렉토리에 저장되어 있습니다. 그리고 이 예제들은 각기 다른 개발 도구들을 이용해서 개발되었습니다.

만일 여러분이 여러분의 개발 도구에 대한 예제들을 찾지 못했다면 패키지 내에 없는 추가 예제들이 제공되어 있는 사이트 (http://support.softwarefx.com)를 방문해 주십시오

다음의 예제 프로젝트들이 Chart FX에 포함되어 있습니다: Colors. 각각 다른 데이터 표시 요소들에 색상을 지정하는 방법을 소개합니다. Constants & Color Stripes. 차트 영역에서 이러한 요소들을 생성하고 처리하는데 필요한

API를 소개합니다. Data Aware. 배열, 콜렉션 및 다른 소스에서 데이터를 읽어 들이기 위한 Chart

FX Data provider를 사용하는 방법을 제시합니다. Data Binding. Chart FX를 어떻게 ADO 데이터 컨트롤에 연결하는지를

설명합니다. 비주얼 베이직에만 적용됩니다. Gridlines. 눈금표시(Gridlines)와 이에 대한 설정을 소개합니다. Import & Export. 차트 파일과 템플릿을 저장하고 불러오는 방법을 소개합니다. Labels. 차트에서 어떻게 좌표축과 데이터 표시 요소에 레이블을

할당하는지를 설명합니다. Mouse. 마우스와 관련된 프로퍼티와 이벤트에 대해서 설명합니다. Palette & Pattern. Chart FX의 팔레트와 패턴들을 어떻게 사용하는지를 설명하고

보여 줍니다. Passing Data. 버블 차트, 재무 차트 등 특수한 종류의 차트들에 어떻게 데이터를

넘겨주는지를 설명합니다. Printing. 차트를 프린트하는 것과 관련된 프로퍼티들과 메소드들을 어떻게

사용하는지 보여 줍니다. RealTime. 타이머 이벤트를 사용해서 어떻게 실시간 차트를 제작하는지

설명합니다. Scroll. 많은 개수의 점들을 처리할 때 Chart FX의 스크롤 기능을 어떻게

사용하는지를 설명합니다.

Note

Page 20: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

10

Zoom. 차트의 특정 부분에 대한 확대/축소와 관련된 프로퍼티들과 메소드들을 어떻게 사용하는지 설명합니다.

Stacked. 몇몇 데이터들이 적절하게 묶이고 중첩되어 나타나는 다중 중첩

차트를 어떻게 생성하는지 설명합니다. Surface & Contour. 표면 차트와 윤곽 차트에 데이터를 넘겨주고 레이블을 할당하는

방법을 설명합니다. User Interface. 어떻게 Chart FX 사용자 인터페이스와 사용자의 행동에 대한

Chart FX의 작동 방법을 사용자 정의하는지 설명합니다. XY Plots. XY Plots에 어떻게 데이터를 전달하고 표시하는지를 설명합니다.

Page 21: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

11

Chart FX 프로그래머 가이드

Chart FX OLE 서버

이 장에서 다뤄지는 주제들

소개

Page 22: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

12

Page 23: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

13

Chart FX OLE 서버 컴포넌트 최종 사용자가 직면하는 가장 큰 문제 중 하나는 아마도 일반적인 어플리케이션이나 인터넷 사이트에서 제시된 차트를 어떻게 가져와서 워드나 엑셀, 파워포인트 등과 같은 다른 작성 도구에 적용할 수 있는 지에 대한 것일 것입니다. 대부분의 경우에 사용자들은 차트를 이미지 형태(bitmap, gif 등)로 내보낼 수 있는데 이러한 이미지 파일은 다른 작성 도구에서 차트의 내용을 수정하기 힘든 결정적인 한계를 지니고 있습니다. Chart FX는 다행히도 사용자들이 OLE 컨테이너로서 실행되는 모든 작성 도구 내에서 인터렉티브한 차트들을 보여 주는 OLE 서버를 제공합니다. 이것은 사용자가 Chart FX의 Toolbar에서 바로 차트를 export해서 이 차트들을 모든 어플리케이션에 붙여넣기를 할 수 있도록 해서 그 차트가 마치 그 어플리케이션의 일부인 것처럼 작업을 계속할 수 있도록 합니다. 최종 사용자들이 여러분의 어플리케이션 프로그램을 사용하는 도중에 차트를 복사해서 다른 프로그램으로 전송 가능한 상황을 한번 생각해 봅시다. 차트가 한번 옮겨져서 붙여지기만 하면 그 옮겨진 프로그램 내에서 차트의 속성들을 변경할 수 있는 것이어서 무한한 형태로 응용할 수 있습니다!

Page 24: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

14

Chart FX OLE 서버 객체는 Chart FX을 사용하는 어플리케이션에 포함되어서 여러분의 프로그램이 동적인 차트를 MS 워드, 엑셀, 파워포인트(여기에 한정되지는 않음)등의 데스트탑

어플리케이션에 보낼 수(export) 있도록 해 줍니다. 이 컴포넌트는 세가지 방법으로 사용될 수 있습니다: • 클립보드를 통해서 : 툴바나 Export 메소드를 이용해서 차트를 클립보드에 OLE 객체로 전송할 수 있습니다. 그 후에 모든 종류의 데스크탑 어플리케이션(OLE 컨테이너)에 붙이기를 할 수 있습니다.

• 파일을 통해서 : 툴바나 Export 메소드를 이용해서 차트를 파일(.CHD)로 저장합니다. 이 파일은 "Insert Object ..."와 "Create from File"을 선택해서 OLE 문서에 삽입하거나 파일을 바로 드랙 앤 드롭 해서 드랙-앤-드롭이 가능한 컨테이너에 삽입할 수 있습니다.

• 자동화된 방법, 위의 오퍼레이션들을 컨테이너의 API를 사용하는 코드를 작성해서 사용할 수 있습니다.

Chart FX 객체가 어떤 문서에 삽입되면 사용자는 이 객체와 상호 작용을 할 수 있습니다: 다음의 그림에서 설명된 것처럼 프로퍼티들을 변경하고 저장하며 전자 우편을 통해서 보내거나 인쇄 하는 등의 일을 할 수 있습니다: OLE 객체들을 적절히 내보내고(export) 살펴보기 위해서는 컴퓨터 내에 CFX4OLE.DLL이 등록되어 있어야 합니다.

Chart FX OLE 서버는 무료로 배포되는 프로그램이 아닙니다. 재배포 권리에 대해서는 최종 사용자에게 이 컴포넌트를 재배포하기 전에 Chart FX 라이센스 동의서를 참조하거나 소프트웨어 FX((800) 392-4278 )에 연락하시기 바랍니다.

http://www.softwarefx.com/chartfx/oleserver 에서 여기에 관련된 정보를 참조할 수 있습니다.

Note

Page 25: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

15

Chart FX 프로그래머 가이드

Chart FX 인터넷 에디션

이 장에서 다뤄지는 주제들

호환성 정보

Page 26: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

16

Page 27: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

17

Chart FX 인터넷 에디션 호환성 정보 - 만일 귀하가 Chart FX 인터넷 에디션을 구입하셨다면 이 부분을 자세히 읽어보시기 바랍니다. 아니라면 이

페이지를 무시하셔도 됩니다- Chart FX 인터넷 에디션이 Chart FX의 API와 동일한 API를 공유하기 때문에 이 매뉴얼을 Chart FX 인터넷 에디션 패키지의 일부로 제공합니다.따라서 ASP 스크립트에서 사용할 수 있는 객체들과 프로퍼티들, 메소드들에 대한 문서를 매뉴얼에서 이용할 수 있습니다. 그러나 이 매뉴얼에서 다루어지고 있는 몇몇의 주제들이나 API 호출은 Chart FX 인터넷 에디션에는 적용할 수 없는 것이고 따라서 이 제품에는 적용될 수 없는 내용들입니다. 일반적으로 브라우저 레벨에서 존재하게 되는 클라이언트 측의 스크립트나 코드를 필요로 하는 API들은 사용하지 않는 것이 좋습니다. 바꿔 말하면 ASP내에서 사용되지 않는 프로퍼티들이나 메소드들은 몇몇 브라우저에서는 동작하지 않을 것이고 Chart FX 인터넷 에디션의 브라우저 독립적인 특성들을 잃어버리게 될 것입니다. 예를 들어 Chart FX는 Chart FX가 사용자의 행동에 반응하는 방법을 변경하거나 사용자 정의 할 수 있도록 하기 위한 이벤트들을 제공합니다. 이러한 이벤트들은 브라우저 레벨에서 발생하고 HTML 페이지에서 클라이언트 측 VB 스크립트를 필요로 합니다. 이것이 인터넷 익스플로러에서는 동작하지만 넷스케이프 브라우저 상에서는 동작하지 않습니다. 따라서 브라우저 독립성을 유지하기 원하면 Chart FX 인터넷 에디션을 사용할 때 이벤트들을 이용하지 않아야 합니다. 대부분의 경우, Chart FX 인터넷 에디션은 이 기능을 대체할 수 있는 방법들을 제공합니다. 이러한 것들은 Chart FX 인터넷 에디션 매뉴얼에 설명되어 있습니다. Chart FX 상수 정의에 대하여 이 매뉴얼 전반에 걸쳐 Chart FX API가 제공하는 다양한 프로퍼티들과 객체들, 메소드들과 함께 사용할 상수들을 여기서 정의합니다. Chart FX 인터넷 에디션을 사용할 때 이러한 상수들은 ASP 페이지들과 함께 사용되는 include 파일 내에 정의되어 있어야 합니다. 만일 이 파일을 포함하는 것이 불가능하다면 이 상수들을 참조하는 것이 불가능하게 되어서 ASP 스크립트들은 에러를 발생하게 되고 유지에 곤란함을 겪게 될 것입니다. 이 파일은 ASP 페이지의 헤더 부분에 다음과 같이 포함할 수 있습니다:

<!-- Include this file so we can use all the ChartFX constants --> <!-- #include virtual="/Include/CfxIE.inc" -->

Page 28: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

18

Page 29: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

19

Chart FX 프로그래머 가이드

Chart FX 기본적 사항

이 장에서 다뤄지는 주제들

차트 만들기 객체 지향 프로그래밍과 COM 지원

Chart FX 마법사

Page 30: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

20

Page 31: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

21

차트 만들기 Chart FX로 차트를 작성하기 위해서는 개발 시스템의 레지스트리에 컨트롤이 적절하게 등록되어 있어야 합니다. Chart FX 는 다양한 종류의 개발 도구에 의해서 지원되기 때문에 ActiveX 컨트롤 지원에 대한 개별적인 개발 도구 매뉴얼(또는 도움말 파일)을 참조할 필요가 있습니다. Chart FX DLL 컴포넌트를 사용하고 있다면 이 매뉴얼 뒷부분의 DLL 부분을 참조하시기 바랍니다. 이 매뉴얼의 앞 부분에 있는 ‘Chart FX와 사용자의 개발 도구와의 통합’ 부분도 도움이 될 것입니다. 대부분의 비주얼 개발 도구들에 있어서 차트를 생성하는 과정은 어플리케이션의 도구 상자에서 Chart FX 아이콘을 선택하고 차트의 경계를 이루는 사각형을 지정해 주는 간단한 절차를 통해서 이루어 집니다. 이런 절차를 거친 후에 Chart FX는 무작위 데이터 값을 나타내는 샘플 3차원 막대 차트를 생성해서 사용자가 실제적으로 어떻게 차트를 구성할 것인지를 결정하도록 기다립니다. 그리고 사용자가 차트의 모양을 결정하고 나면 실제적인 데이터를 적용할 수 있게 됩니다. 차트의 이름 어떤 차트를 생성하고 나면 디폴트로 Chart FX는 그 차트의 이름을 ChartFX1, ChartFX2 등으로 나타냅니다. 사용자는 해당 차트를 선택하고 프로퍼티 목록에서 언제라도 ‘Name’ 프로퍼티를 변경함으로써 이름을 바꿀 수 있습니다. 이 이름은 사용자가 작성한 다른 차트들과 구별해주는 고유한 식별자이기 때문에 프로퍼티들을 제어하는 경우에 (보통 실행 시에 프로퍼티를 동적으로 변경할 때) 매우 중요합니다. 디자인 시에 프로퍼티 설정하기.

사용자가 어플리케이션이나 웹 페이지에 차트를 포함시켰을 때 그 차트가 어떤 특성들이나 시각적인 효과를 가지면서 정보(데이터)를 제공하기를 바라게 됩니다. 이러한 것들은 컴포넌트에 의해 지원되는 프로퍼티들과 메소드들을 설정함으로써 할 수 있는 일들입니다. Chart FX 는 항상 이런 방식으로 프로퍼티와 메소드들을 처리할 수 있습니다. Chart FX 는 API에 시각적으로 접근할 수 있는 프로퍼티 페이지를 제공합니다. 차트에 다양한 시각적 효과를 설정하기 위해서 차트에 커서를 놓고 오른쪽 버튼을 클릭해서 ‘Properties’를 선택해서 프로퍼티 페이지에

접근하거나 프로퍼티 리스트를 사용할 수 있습니다.

Page 32: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

22

디자인 할 때 프로퍼티를 설정하는 일은 편리하고 빠르며 쉬운 동시에 코딩 시간과 노력을 엄청나게 줄여 줄 것입니다. 대부분의 Chart FX 의 시각적인 속성들은 디자인 할 때 변경할 수 있습니다. 그러나 어떤 프로퍼티들은 원래 차트가 어플리케이션이 실행되는 어떤 특정한 시기에 보여지는 데이터에 의존하는 런타임 프로퍼티로 되어 있기 때문에 디자인 시에 접근할 수 없습니다. 따라서 어플리케이션의 특성에 따라서 실행 시에 부수적인 프로퍼티들을 설정 해야할 필요가 있을 수도 있습니다. 어떤 경우에도 Chart FX에서 제공하는 API들을 사용하려는 경우에는 이것들이 중요한 객체와 프로퍼티, 메소드, 이벤트들을 포함할 수 있기 때문에 주의 깊게 살펴서 사용해야 합니다. 실행 시에 프로퍼티 설정하기 디자인 시에 프로퍼티를 설정하는 것은 차트를 변형하기 위한 편리하고 손쉬운 방법입니다. 그러나 때로는 프로그램을 통해서 대상을 변경할 필요가 있을 수도 있으므로 Chart FX 는 어플리케이션이 실제적으로 실행되고 있을 때 시각적인 속성들과 심지어는 수치 데이터들까지도 변경할 수 있도록 하는 다양한 범위의 객체들과 메소드들, 프로퍼티들을 제공합니다. 대부분의 Chart FX 프로퍼티들은 ‘디자인 시’에 사용할 수 있습니다. 하지만 어떤 것들은 어플리케이션이 실행될 때 특정한 시간에 차트에 저장되어 있는 데이터에 의존하기 때문에 실행 시에만 사용 가능합니다. 이전 페이지에서 언급한 것과 같이 실행 시에 프로퍼티들을 설정하기 위해서는 차트의 고유한 식별자(즉, Name)와 프로퍼티 이름, 프로퍼티 인덱스들과 프로퍼티 설정이 필요합니다. 프로퍼티 인덱스들과 설정들은 Chart FX에 의해서 미리 정의된 상수들(16진수 또는 정수)로서 사용자가 언제나 사용하고 있는 특정 프로퍼티의 문서 내에서 참조할 수 있는 것입니다. 어떤 개발 도구에서는 이러한 상수의 정의를 포함하고 있는 external include 파일이 필요한 경우도 있습니다. 이것은 Chart FX가 설치된 디렉토리의 ‘\include’ 디렉토리에서 찾을 수 있습니다.

만일 사용하는 개발 도구나 플래폼이 external include 파일을 지원하지 않는다면 실행 시에 프로퍼티들을 설정할 때 이러한 상수값과 관련된 16 진수나 정수값을 사용할 수 있습니다. Chart FX 도움말 파일은 이런 번호들을 제공하고 있고 이 매뉴얼의 Appendix A 에도 제시되어 있습니다.

특정 프로퍼티들은 다른 것들이 설정만 필요로 하는데 반해 인덱스와 설정 두 개 모두를 필요로 할 수 있습니다. 어떤 경우에도 사용하고자 하는 프로퍼티에 대한 사항을 도움말에 제공된 설명을 참조하여 따라야 합니다.

Note

Page 33: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

23

객체 지향 프로그래밍과 COM 지원 Chart FX은 완전하게 COM(Component Object Model)에 기초를 두고 있고 API 역시 접근하기 용이하고 프로그램하기 쉬운 ‘객체들’을 기반으로 하고 있기 때문에 한 걸음 더 진보된 것이라고 할 수 있습니다. 다른 ActiveX 컨트롤들이 알아보기 힘들고 다루기 어려운 프로퍼티들과 메소드들을 지원하는데 비해서 Chart FX은 개발 과정과 학습 곡선을 엄청나게 단축시켜주는 아주 사용하기 편한 API를 제공합니다. Chart FX는 차트의 각 요소들(좌표축, 시리즈, 도구 막대 등)을 나타내는 객체들을 표시해서 사용자가 손쉽게 알 수 있게 하고 이러한 객체들은 이 요소와 관련된 프로퍼티들과 메소드들을 제공합니다. 예를 들어, 사용자가 특정한 시리즈의 색을 변경하고 싶을 때는 Series 객체에 접근해서 이 객체의 Color 프로퍼티를 다음과 같이 변경합니다: ChartFX1.Series(0).Color = RGB(128,255,0)

특정한 개발 도구(예를 들어, 비주얼 베이직)와 관련해서 사용할 때, Chart FX은 그림에서처럼 사용자가 명령문을 VB 에디터에 작성할 때 특정 객체와 관련된 프로퍼티들과 메소드들을 사용자에게 보여줌으로써 API를 보다 쉽게 사용하게 하는 statement builder와 함께 컴파일됩니다.

또한 Chart FX은 제작된 어플리케이션의 성능을 저하시키지 않고 부가적인 서비스를 제공하는 것이 가능합니다. 예를 들어 Annotation 객체의 지원은 사용자가 이 서비스를 적용할 것인지 말 것인지를 결정할 수 있도록 하는 COM 인터페이스로서 제공됩니다. 이러한 기능은 사용자가 자신의 어플리케이션에 절대적으로 필요하지 않은 경우라면 어플리케이션의 성능에 영향을 미치지 않을 것이기 때문에 Chart FX에 있어서 매우 중요한 것입니다. Chart FX는 핵심 컴포넌트를 변경하지 않고도 자신의 기능과 특성을 확장할 수 있습니다. 예를 들어 소프트웨어 FX사는 추가적인 COM 인터페이스로 간단히 설치해서 사용할 수 있는 재무 차트 작성을 위한 Chart FX 재무 에디션을 제공합니다. 설치되자 말자 Chart FX는 이 사실을 바로 감지해서 특별한 재무 차트를 작성할 수 있도록 합니다. 많은 개발자들이 상업적인 가치가 떨어지는 - 또는 아주 적은 사람들만이 필요로 하는 - 새로운 종류의 차트나 특별한 특성들을 Chart FX에 추가 할 수 있는지를 문의해 왔었습니다. 이러한 것은 실제적으로 거의 불가능하고 차트 FX와 같은 상용 프로그램들의 다른 버전도 함께 마련해야 했기 때문에 기술적으로 문제가 되어 왔습니다. COM을 사용함으로써 이제 Chart FX은 Chart FX 의 핵심 파일들을 변경하지 않고도 이러한 특별한 기능들을 추가할 수 있게 되었습니다. Chart FX가 현재 지원하지 않는 특수한 특징들이나 다른 종류의 차트들에 관심이 있으시면 [email protected]으로 연락하시기 바랍니다. 마법사 기능: 더 쉬워진 차트 설정

Page 34: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

24

개발자들을 위한 추가된 특성으로서 Chart FX은 추가적인 프로그래밍 수고 없이 일반적인 설정 사항들을 사용자의 기호에 맞게 쉽게 변경할 수 있도록 하는 마법사 기능을 제공합니다. 차트를 작성할 때 Chart FX 마법사 기능 관리자가 자동적으로 나타나서 Chart FX 에서 사용 가능한 다양한 마법사 기능들을 보여 줄 것입니다. 개발자는 마법사 기능을 사용해서 작업을 할 수도 있고 마법사 기능을 사용하지 않고 개발 작업을 할 수도 있습니다. 마법사 기능들은 보통 그 자체로 이해하기 쉽도록 되어 있고 Chart FX의 API를 참조 하지 않고도 복잡한 작업을 수행할 수 있도록 몇 단계(대화 상자로 구성된)를 거쳐서 이루어 집니다. Chart FX의 마법사 기능 관리자는 다음과 같이 나타나게 됩니다:

예를 들어 ‘Chart Appearance Wizard’는 코드를 한 줄도 직접 작성하지 않고도 다양한 차트들과 외양을 설정할 수 있도록 해줍니다. Chart FX 마법사 기능을 해제/설정하기. ‘Show this dialog when a chart is created’ 체크 박스를 해제 시킴으로써 마법사 기능을 사용하지 않을 수도 있습니다. 이렇게 되면 마법사 관리자가 자동적으로 나타나지 않게 되며 다시 이 마법사 기능을 사용하려면 차트에서 오른쪽 버튼을 클릭한 후, ‘Wizards´옵션을 선택하면 됩니다. 이 때 차트 제작시에 마법사 기능을 사용 가능하게 할 것인지 그냥 지금 특정한 마법사 기능을 실행시킬 것인지를 선택할 수 있습니다.

Page 35: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

25

교육적인 도구로서의 마법사 기능.

특정한 마법사 기능을 실행시킨 후에 마지막 대화 상자에는 원하는 효과를 얻기 위해서 마법사가 사용한 Chart FX API의 프로퍼티와 메소드들이 표시되게 됩니다.

이렇게 제시된 코드가 이미 차트에 설정된 상태이긴 하지만 개발자는 이것을 학습을 위한 목적으로 사용할 수도 있고 사용자가 버튼을 클릭할 때와 같은 경우에 동일한 효과를 얻기 위해서 자신의 코드에 그대로

복사해서 사용할 수도 있습니다.

Page 36: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

26

Chart FX 프로그래머 가이드

Chart FX에 대한 데이터 전달

이 장에서 다뤄지는 주제들

소개 API를 사용한 데이터 전달

Chart FX 데이터 제공자 데이터 바인딩 (ADO) 배열에서 데이터 읽기 컬렉션에서 데이터 읽기

텍스트 파일에서 데이터 읽기

Page 37: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

27

Chart FX에 대한 데이터 전달. Chart FX의 개선된 점들 중 하나는 데이터 컨트롤, 텍스트 파일, 배열, 컬렉션 그리고 Chart FX에서 제공하는 API를 이용하는 방법 등 어떠한 소스로부터도 데이터를 읽고 쓰는 것이 가능하다는 점입니다. 한가지 흥미로운 부분은 이러한 소스들로부터 데이터를 읽기 위해서 필요한 모든 코드는 부가적인 COM 인터페이스(또는 Cfx4Data.DLL)에 분리되어 소프트웨어 FX와 서드 파티 개발자들이 추가적인 ‘Chart FX 데이터 제공자’를 손쉽게 작성할 수 있게 했다는 점입니다. 이러한 것이 어플리케이션의 일부로 적용될 추가적인 DLL을 필요로 하기는 하지만, 새로운 데이터 소스와 Chart FX을 쉽게 통합할 수 있도록 해 줍니다. 예를 들어, 소프트웨어 FX는 현재 Chart FX이 서드 파티에서 만든 널리 사용되는 눈금 컨트롤로부터 데이터를 읽을 수 있도록 하는 데이터 제공자를 개발 중입니다. Chart FX에서는 차트들을 생성하기 위해서 데이터 점들 사이를 방황할 필요없이 , 사용자가 이전에 저장한 데이터 배열이 존재한다면 그냥 그것을 Chart FX에 넘겨주고 단 한 줄 정도의 적은 코드를 작성해서 그 데이터가 표시된 차트를 얻을 수 있게 됩니다. 이 절에서는 다음과 같은 주제들을 다루게 됩니다:

Chart FX API를 사용한 데이터 전달

Chart FX 데이터 제공자에 대한 이해와 통합

데이터바인딩 (ADO와 OleDB)

배열에서 데이터 읽기

컬렉션에서 데이터 읽기

텍스트 파일에서 데이터 읽기

Page 38: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

28

Chart FX API를 사용한 데이터 전달. Chart FX API 를 이용해서 수치 데이터를 전달하는 것은 간단하게 OpenDataEX 메소드를 이용해서 통신 채널을 열고 값을 설정하며 CloseData 메소드를 사용해서 이 채널을 닫으면 됩니다. 개발 도구가 포인터의 전달을 지원하지 않는 경우에는 Chart FX는 그 개발 환경에서 지원하는 루프 명령(while, for 등)을 통해서 API를 사용하여 지점간 전달을 실행하게 될 것입니다. 이 절에서는 어떻게 수치 정보를 Chart FX에게 전달 하는지를 설명합니다. 차트에 범례와 다른

문서 정보를 설정하는 방법에 대해서는 이 도움말 파일의 다음 chapter를 참조하시기 바랍니다. 또한 이 절에서는 어떻게 Chart FX가 지원하는 대부분의 종류의 차트에 정보를 전달하는지 설명합니다. 재무,

분산형 등의 특별한 종류의 차트를 생성하려 하는 경우에는 이러한 차트에 부가적인 프로퍼티가 적절하게 포함되어야 하기 때문에 이 문서의 다음 chapter를 참조하시기 바랍니다. ValueEX 프로퍼티를 사용해서 데이터 전달하기 Chart FX에 수치 데이터를 전달하는 가장 쉽고도 편리한 방법은 차트의 어떤 시리즈 내에 있는 한 점에 대해서 수치를 설정할 수 있도록 해주는 ValueEX 프로퍼티를 사용하는 것입니다. 전체 차트에 대해 점들의 값을 설정하기를 원하면 다음과 같이 각 점들에 대해서 순서대로 루프를 통해서 ValueEX 프로퍼티를 사용할 수 있습니다: ‘통신 채널 열기 ChartFX1.OpenDataEX COD_VALUES,2,6 For (i=0 to 1)

For (j=0 to 5) ‘선택된 시리즈에 값 할당 ChartFX1.ValueEX(i,j) = Rnd * 100

Next j Next i ‘통신 채널 닫음 ChartFX1.CloseData COD_VALUES

Note

Page 39: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

29

Series 객체를 사용해서 데이터 전달하기 Chart FX는 데이터, 범례, 그리고 색상, 차트 종류와 같은 시각적 속성 등을 포함하는 시리즈와 관련된 모든 것을 설정할 수 있도록 하는 Series 객체를 제공합니다. 차트에 데이터를 표시하기 위해서 선택된 시리즈의 YValue 프로퍼티를 사용해야 합니다. 종종 Series 객체로 작업을 하는 것이 코드를 디버그 할 때에 좀더 쉽게 됩니다. 예를 들어, 두개의 시리즈와 6 개의 점들로 구성된 차트를 제작할 필요가 있는 경우를 가정해 봅시다. (데이터는 각 시리즈에 대해 무작위적으로 선택된 것으로 가정합니다.) ‘통신 채널 열기 ChartFX1.OpenDataEX COD_VALUES,2,6 For (i=0 to 1)

For (j=0 to 5) ‘선택된 시리즈에 값 할당 ChartFX1.Series(i).YValue(j) = Rnd * 100

Next j Next I ‘통신 채널 닫기 ChartFX1.CloseData COD_VALUES FAQ:

점들의 총 개수를 모를 때

숨어 있거나 보이지 않는 점들을 다루는 방법

차트가 데이터를 가지고 있을 때 그 값들을 변경하는 방법

실시간에 값들을 변경시켰을 때 화면 깜박임이 발생하는지의 여부

스크롤링을 제어하는 방법

Page 40: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

30

점의 개수를 알지 못할 때(데이터 전달) 이전의 예제에서 아마도 점의 개수를 아는 상태에서 통신 채널을 열었다는 점을 보았을 것입니다. 그러나 차트에 포함시킬 점의 개수를 안다는 것은 불가능한 일이고 OpendataEX 메소드의 세번째 매개변수를 어떻게 설정하는지를 안다면 문제될 것이 없습니다. 예를 들어, 최종 사용자의 요청에 의해서 데이터베이스에서 어떤 값들을 검색해서 가져 오는 경우에 모든 레코드들을 가져와서 단지 Chart FX가 통신 채널을 열 필요가 있다는 것을 알기 위해서 이 레코드들을 검사하는 것은 매우 비경제적입니다. OpenDataEx 메소드는 Chart FX에게 수치 데이터를 전달했을 때 동적으로 메모리를 할당하도록 하는 COD_UNKNOWN라는 설정 사항을 지원합니다. 다음의 코드는 어떻게 COD_UNKNOWN 설정을 적절하게 사용하는지를 보여 줍니다: ChartFX1.OpenDataEx COD_VALUES, 1, COD_UNKNOWN j=0 While Fetching Records

ChartFX1.Series(0).YValue(j) = Field1 j=j+1

Next ChartFX1.CloseData COD_VALUES Note: COD_UNKNOWN은 점의 개수를 알지 못할 때만 사용 가능합니다. OpendataEX 메소드를 호출할 때 차트 내의 시리즈의 개수는 미리 설정되어 있어야 합니다. 숨겨진 점들 (데이터 전달) Chart FX의 또다른 흥미로운 특성은 차트 내에 숨겨진 점을 생성할 수 있다는 점입니다. Chart FX에서는 같은 크기의 구간들마다 동일한 점의 개수를 가져야만 하지만 어떤 점들에 대해서는 안

보이도록 하는 속성을 주어서 마치 차트에서 그 부분이 숨은 것 처럼 보이도록 할 수 있습니다. 이렇게 하기 위해서는 YValue나 ValueEX 프로퍼티를 사용해서 점에 수치 값을 할당할

때 CHART_HIDDEN 상수를 대응시키기만 하면 됩니다. ChartFX1.Series(2).YValue(3) = CHART_HIDDEN

Page 41: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

31

차트 내에 존재하는 값을 변경하기(데이터 전달) 이미 차트를 생성한 상태에서 개별적인 값들을 바꾸기를 원한다면 모든 데이터를 다시 전송하지 않고 이러한 작업을 할 수 있습니다. OpenDataEx 메소드는 차트 내에서만 변경이 가능하고 다른 방법으로는 데이터 메모리를 변경시키지 않도록 하는 COD_UNCHANGE라고 하는 설정 사항을 지원합니다. 예를 들어, 세 번째 범위(시리즈)에서 4번 점의 값을 프로그램을 통해서 변경하려고 하면 코드는 다음과 같이 구성될 것입니다:

ChartFX1.OpenDataEX COD_VALUES, COD_UNCHANGE, COD_UNCHANGE ChartFX1.ValueEx(2,3) = 560 ChartFX1.CloseData COD_VALUES

화면 깜박임 제거 (데이터 전달) 차트 내의 데이터가 변경되거나 새로운 데이터가 점으로 표시되어야 하는 문제 때문에 어떤 어플리케이션들에서는 차트가 지속적으로 갱신되어야 합니다. 예를 들면 주식 시장이나 의료, 산업 차트 등이 이러한 유형에 속합니다. 데이터가 지속적으로 갱신되거나 첨가되면 이 차트를 실시간 차트라고 부릅니다. 이러한 차트들은 화면에 차트를 새로 그릴 때 깜박임을 제거하는 특수한 루틴들을 사용합니다. 실시간 차트는 데이터를 전달하는 방법의 차이 외에는 다른 차트들과 동일한 방법으로 생성되고 처리됩니다. 실시간의 기반에서 어떤 차트에 있는 기존의 값을 단지 변경만 한다면 CloseData 메소드에 있는 COD_SMOOTH 상수를 사용할 수 있습니다. 이 상수는 차트를 갱신할 때 화면의 깜박임을 없애 주는 BitBlitz 기술을 Chart FX가 사용하도록 해 줍니다. 예를 들어, 실시간 기반 하에서 기존의 값을 변경하기 위해서 타이머를 사용하고 있다면 차트에 이미 있는 값들을 변경하고 이 값이 변경될 때 마다 부드럽게 다시 그릴 수 있도록 하기 위해서 다음의 코드를 타이머 이벤트에 사용할 수 있습니다:

ChartFX1.OpenDataEX COD_VALUES, COD_UNCHANGE, COD_UNCHANGE ‘0-100 사이의 난수 발생 ChartFX1.Series(2).YValue(3) = Rnd * 100 ChartFX1.CloseData COD_VALUES Or COD_SMOOTH

CloseData 메소드에 있는 COD_SMOOTH 상수를 볼 수 있고 어떻게 이 상수가 COD_VALUES 상수와의 비트와이즈(bitwise) OR 연산에 의해 포함되었는지에 대해서 주목할 필요가 있습니다.

CloseData 메소드의 COD_SMOOTH 상수는 Chart FX가 차트를 다시 그릴 때 사실 상 BitBlitz 기술을 이용하도록 합니다. 이러한 특징을 항상 사용하기 원한다면 다음처럼 TypeEx 프로퍼티를 사용하면 됩니다:

ChartFX1.TypeEx = ChartFX1.TypeEx Or CTE_SMOOTH 다른 방법으로 차트에 새로운 값들을 덧붙이고 싶다면 새로운 값이 차트에 포함되었을 때 차트가 자동적으로 스크롤 할 수 있도록 하는 특별한 프로퍼티와 상수들을 사용할 수도 있습니다. 실시간 차트의 스크롤링에 대해서는 이 도움말 파일의 뒤쪽에 있는 ‘실시간 차트’ chapter를 참조하시기 바랍니다.

Page 42: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

32

스크롤 바 제어 (데이터 전달) 질문 #1: 어떻게 스크롤 바 없이 FX가 한 화면에 모든 점들을 표시하도록 할 수 있을까요? 충분한 공간이 없어도 다음과 같이 Scrollable 프로퍼티를 사용함으로써 Chart FX가 스크롤 바를 없애고 한번에 보여 줄 수 있도록 할 수 있습니다:

ChartFX1.Scrollable = FALSE 또는 선택된 좌표축의 단위 당 픽셀의 개수를 0으로 해주어서 스크롤 바를 없앨 수도 있는데 Axis 객체의 PixPerUnit 프로퍼티를 사용해서 이렇게 할 수 있습니다. 예를 들면:

ChartFX1.Axis(AXIS_X).PixPerUnit = 0 질문 #2: 만일 기존의 차트에 점들을 더 추가하려고 하면 마지막 데이터 점을 보기 위해서 끝에 스크롤 바를 어떻게 위치시킬 수 있을 까요? Chart FX는 스크롤 바의 위치를 제어할 수 있는 Scroll 메소드를 제공해서 차트에 새로운 점들을 추가했을 때 가장 마지막에 들어온 데이터를 스크롤 바를 사용해서 볼 수 있도록 할 수 있습니다. 예를 들어서 차트의 끝부분에 스크롤 바를 두고 싶다면 다음과 같이 코딩합니다:

ChartFX1.Scroll 7,0

주의 : BAR 차트와 CURVE 차트는 즉시 스크롤되지 않습니다. 이것들은 Scroll 메소드를 두번 호출해서 스크롤을 갱신할 필요가 있습니다. 질문 #3: 한 화면 당 얼마나 많은 점들이 보여지도록 설정할 수 있습니까? 이러한 것을 위해서 Chart FX은 한 좌표축 당 한 눈금에 할당되는 픽셀의 수를 조절할 수 있는 기능을 제공하는 PixPerUnit 프로퍼티를 제공합니다. 이러한 방법을 통해서 차트가 스크롤 되는 경우와 그렇지 않은 경우 모두에 대해 한 화면당 나타나는 점의 개수를 결정할 수 있습니다. 그러나 PixPerUnit 프로퍼티가 좌표축의 배율에 대해서 설정되기 때문에 원하는 결과를 얻기 위해서 적절한 PixPerUnit의 값을 계산하고 설정하기가 어려울 때도 있습니다. 따라서 Chart FX는 이해하기 쉬운 매개변수를 줌으로써 화면에 나타나는 점의 개수를 쉽게 결정할 수 있도록 하는 SetScrollView 메소드를 제공합니다. 이 메소드는 적절한 PixPerUnit의 값을 설정해 줍니다. 질문 #4: 두개나 그 이상의 차트가 동기화(Synchronized)되어서 스크롤 되도록 할 수 있습니까? 최종 사용자가 어떤 차트를 스크롤 할 때 마다 스크롤 할 위치를 나타내는 정보와 함께 UserScroll이라고 하는 이벤트가 해당 어플리케이션에 전달됩니다. 나머지 다른 차트들에 대해 Scroll 메소드를 사용하여 스크롤 바의 위치를 설정하기 위해서 이 정보를 사용할 수 있습니다.

Chart FX 데이터 제공자

Page 43: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

33

Chart FX은 확장성을 염두에 두고 설계되었습니다. 이런 특성에 대한 가장 좋은 예는 소프트웨어 FX나 서드 파티 개발자들이 핵심적인 요소들에 영향을 주지 않고 부가적인 기능적 모듈들을 추가할 수 있는 Chart FX 확장(extensions)을 들 수 있습니다. Chart FX 데이터 제공자의 소개

Chart FX가 확장될 수 있는 또다른 흥미로운 부분은 바로 Chart FX 데이터 제공자입니다. 많은 개발자들이 Chart FX가 프로그램상에서 루프를 돌리지 않고 이미 데이터가 저장된 배열로부터 데이터를 가져올 수 있도록 요청했습니다. 또 다른 개발자들은 컬렉션(collection)으로부터 데이터를 읽어 올 수 있는지를 질문해 왔고 많은 사람들이 서드 파티에서 제작된 대중화된 눈금 컨트롤과 함께 사용 가능한지를 질문해 왔습니다.

생각해 보면 차트가 정보를 가져올 수 있는 소스는 매우 많습니다. 소프트웨어 FX가 Chart FX의 소스 코드를 바꾸는 것은 불가능하기 때문에 Chart FX가 다른 모든 소스들과 개발자가 보유하고 있는 소스들로부터 정보를 읽을 수 있도록 했습니다. 따라서 Chart FX는 확장성을 고려해서 설계되었고 여기에 포함되어 있는 데이터 제공자는 어떻게 데이터 소스로부터 데이터를 읽고 이런 데이터들을 Chart FX가 이해하는 형식으로 어떻게 바꾸는지를 아는 COM 인터페이스입니다. 이 데이터 제공자는 데이터 소스와 Chart FX을 이어주는 다리 역할을 한다고 할 수 있습니다. Chart FX의 디폴트 데이터 제공자 (Cfx4Data.DLL) Chart FX을 설치하면 기본적인 데이터 제공자가 설치됩니다. 이 데이터 제공자는 배열, 컬렉션, 텍스트 파일, 데이터베이스(ADO, OleDB를 사용)로부터 데이터를 읽을 수 있도록 합니다. 다음 페이지에서 다양한 데이터 소스에서 정보를 읽고 차트를 생성하기 위해서 이 데이터 제공자를 어떻게 사용하는지 설명할 것입니다. 프로젝트 내에서 Cfx4Data.dll과 다른 데이터 제공자들을 통합하는 방법 데이터 제공자는 COM 인터페이스이기 때문에 다음 그림과 같이 프로젝트에 통합시켜서 이 COM 인터페이스에 포함된 레퍼런스들과 함께 객체들을 생성할 수 있습니다:

Page 44: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

34

디폴트 Chart FX 데이터 제공자는 ‘project references’에서 ‘Data Provider Type Library’를 선택함으로써 프로젝트와 통합됩니다. 이 레퍼런스를 VB 프로젝트의 일부로서 포함시킴으로써 데이터 제공자가 지원하는 객체를 생성할 수 있고 데이터 제공자가 읽을 데이터 소스에 따라 나타내는 프로퍼티들을 사용할 수 도 있습니다. 어떻게 다른 데이터 소스들과 Cfx4Data.dll 객체들을 사용하는지에 대해서는 이 절의 다른 주제들을 참조하시기 바랍니다. 다른 개발 툴들에서는 사용하고 있는 데이터 제공자의 progID와 CreateObject 함수를 사용해서 객체들을 생성해야 할 필요가 있을 수도 있습니다. Chart FX와 데이터 제공자 사이를 연결하기 데이터 제공자는 특정한 데이터 소스로부터 정보를 읽을 수 있는 프로퍼티들을 제공한다고 설명 드렸습니다. 예를 들어서 텍스트 파일로부터 정보를 읽을 수 있도록 하는 객체를 사용한다면 이 객체는 ‘File’이라고 불리는 프로퍼티를 나타내어서 개발자가 정보를 어디에서 얻을 수 있는지를 나타내기 위해서 경로와 파일 이름을 설정할 수 있도록 해 줍니다. 데이터 제공자가 어떤 데이터를 얻으면 Chart FX가 이 데이터 제공자로부터 정보를 읽을 수 있도록 해 주는 장치가 필요합니다. 이러한 장치는 Chart FX가 제공하는 GetExternalData 프로퍼티에 의해 제공되며 이것은 Chart FX가 데이터 제공자가 저장하고 있는 수치 데이터를 읽을 수 있도록 합니다. 다음 페이지에서 배열과 컬렉션, 텍스트 파일, 데이터베이스로부터 데이터를 읽기 위해서 Chart FX의 디폴트 데이터 제공자(Cfx4Data.dll)를 어떻게 사용하는지 설명합니다. 데이터 컨트롤을 이용한 데이터바인딩 Databinding with Data Controls

Page 45: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

35

마이크로소프트 ADO 데이터 컨트롤 6.0 (비주얼 베이직 6.0) 대부분의 경우에 데이터베이스에서 정보를 얻어서 차트를 생성하게 됩니다. Chart FX은 비주얼 베이직 6.0에서 제공되는 모든 데이터 컨트롤을 이용하는 데이터바인딩을 지원합니다. 중요한 정보: 데이터바인딩은 Chart FX의 디폴트 데이터 제공자를 통해서 제공됩니다. 따라서 만일 databound 차트를 사용할 때 어플리케이션을 부가적인 파일로 적용한다면 이 어플리케이션을 최종 사용자의 컴퓨터에서 올바로 실행시키기 위해서는 등록 절차가 필요합니다. 적용하려는 폼(VB 문서 참조)에 ADO 컨트롤을 설정하면 다음 그림에서 볼 수 있는 것과 같이 Chart FX에서 대응되는 ADO 컨트롤의 이름을 가지고 있는 AdoSource 프로퍼티를 설정할 수 있습니다:

그림 1. 데이터 컨트롤 매개변수들을 설정하면 차트를 클릭해서 AdoSource 프로퍼티에서 데이터 컨트롤의 이름을 선택합니다. 중요한 정보: VB 5.0이나 그 이전 버전을 사용하고 있거나 사용하고 있는 데이터 컨트롤이 ‘마이크로소프트 ADO 데이터 컨트롤 6.0 (OleDB)’이 아니면 Chart FX를 데이터 컨트롤에 바인딩 시키기 위해서 사용하는 프로퍼티는 AdoSource가 아니라 DataSource입니다. Chart FX가 SQL 문을 해석하는 방법. Chart FX는 데이터 컨트롤에 연결되었을 때 차트를 만드는데 기본적인 규칙을 적용할 것입니다. 이런 규칙들은 데이터베이스로부터 정보를 얻는데 어느 정도 영리하게 행동하도록 해주고 범례도 추가합니다. SELECT 문을 보내면 Chart FX 는 차트 시리즈를 만들고 점들에 대한 범례를 자동적으로 만들어 줍니다. 이러한 규칙들은 다음과 같습니다:

Page 46: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

36

• 시리즈에 대한 범례들은 수치값이 저장된 필드의 이름에서 가져옴 • 모든 수치값이 저장된 열들은 각각 다른 시리즈로 표시되며 문자열이나 날짜에 관한 모든 열들은 점으로 표시되는 범례로 나타남(‘-‘문자로 연결)

• SELECT 문에 언급된 모든 문자열과 숫자 데이터 필드들은 항상 표시됨

Databound 차트의 기능에 대한 디폴트 사항 변경시키는 방법 데이터 바인딩의 디폴트 기능을 변경하기 위해서 Chart FX는 데이터 값을 점으로 나타내는 이 메소드를 변경할 수 있도록 하는 프로퍼티들을 포함하고 있습니다. 이러한 프로퍼티들은 런타임에만 사용가능하고 설정할 수 있습니다. DataStyle 프로퍼티 다른 종류의 문자열이나 날짜 필드를 가지고 있을 때 Chart FX는 차트 내의 모든 점 범례(point legend)에 할당하기 위해서 모든 문자열들과 날짜 필드를 가지고 긴 문자열들을 만들 것입니다. 만일 이러한 작동을 자동적으로 일어나지 않게 하려면 DataStyle 프로퍼티를 사용해서 적절한 상수로써 OFF 시키면 됩니다. 예를 들어 시리즈 범례로서 필드 이름을 사용하지 않도록 하고 날짜 필드를 점 범례로 사용하고 싶다면 DataStyle 프로퍼티를 다음과 같이 사용해야 합니다: ChartFX1.DataStyle = CHART_DS_USEDATEASLEG And Not CHART_DS_SERLEGEND DataType 프로퍼티: 배열(Array) 형식인 이 프로퍼티는 SELECT 문장의 모든 필드의 형식을 나타냅니다. 이 프로퍼티는 Chart FX가 데이터베이스로부터 정보를 가져오고 표시하는 방법을 제어하고 싶을 때 매우 유용하게 사용할 수 있습니다. 예를 들어, 다음과 같은 다섯 개의 필드에 관한 SELECT 문을 생각해 보면: "Select year,sales,projected, returns, name from PRODSALES where prodid = 1234" 디폴트 기능으로 Chart FX 는 ‘year’가 수치 관련 필드이기 때문에 이것을 독립적인 시리즈로 표시할 것이며 차트 내에 독립적으로 나타날 것입니다. 원하는 차트의 형태가 X 축에 ‘year’를 포함하고 있고 ‘sales’와 ‘projected sales’를 다른 시리즈에 나타내면서 ‘return’과 ‘name’ 필드를 사용하고 싶지 않을 때는 DataType 배열에 다음과 같이 값을 대입할 수 있습니다: ‘ 먼저 문자열의 year 필드를 X 축의 범례로 선택하기 위해서 변환. ChartFX1.DataType(0) = CDT_LABEL ‘다음에 수치 필드에 CDT_NUMBER 상수를 할당 ChartFX1.DataType(1) = CDT_VALUE ChartFX1.DataType(2) = CDT_VALUE ‘마지막으로 표시되지 않기를 바라는 필드에 대해서 CDT_NOTUSED를 할당. ChartFX1.DataType(3) = CDT_NOTUSED ChartFX1.DataType(4) = CDT_NOTUSED 중요한 정보: DataStyle과 Datatype 프로퍼티는 데이터 컨트롤에 ADO resultset이 할당되기 전에 설정되어야

Page 47: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

37

합니다. 만일 SQL 문을 디자인 할 때 생성했다면 이러한 프로퍼티들은 Form_Load 이벤트에서 설정되어야만 합니다. ADO resultset과의 연결 몇몇 개발자들은 데이터베이스에 연결할 때 data controls를 사용하지 않고 코드 내에 ADO connection과 resultset을 직접 사용하기도 합니다. 이러한 개발자들을 위해서 Chart FX 데이터 제공자들은 ADO resultset에서 정보를 읽어 오는 ResultSet 프로퍼티를 지원합니다. ADO 연결은 Chart FX 디폴트 데이터 제공자에 의해서 지원되기 때문에 코드 내에서 적절한 객체를 생성하고 데이터 제공자를 초기화할 필요가 있습니다. 예를 들어서 다음의 코드는 ADO resultset을 생성하고 이것을 차트에 할당합니다.

Page 48: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

38

'ADO Connection 과 Resultset에 대한 변수 생성 Dim Conn As New ADODB.Connection Dim RS As ADODB.Recordset

'Chart FX의 기본 데이터 제공자를 위한 변수 생성 Dim CfxData As Object 'DSN 열기 Conn.Open "CfxData" 'SQL을 실행하고 resultset을 얻음 Set RS = Conn.Execute("SELECT * FROM Types") 'Chart FX의 Resultset으로부터 ADO 객체를 생성 Set CfxData = CreateObject("CfxData.Ado") 'resultset을 데이터 제공자에 할당 CfxData.ResultSet = RS '데이터 제공자로부터 정보 가져옴 ChartFX1.GetExternalData CfxData

중요한 정보: Chart FX가 SQL 문장을 해석하는 방법과 DataType과 DataStyle 프로퍼티를 이용해서 이러한 방법을 제어하는 방법에 대해서는 이전 페이지를 참조해 주십시오. BDE 커서(Cursor)에 연결하기 볼랜드 툴(델파이 C++ 빌더)을 사용하고 있다면 BDE와 호환성 있는 데이터베이스로 작업할 수도 있습니다. Chart FX은 다음과 같이 GetExternalData 메소드를 사용해서 BDE 커서로부터 데이터를 읽어 들일 수 있습니다:

ChartFX1.GetExternalData("CfxData.BDE",LongInt(hCursor));

중요한 정보: ‘hCursor’는 TBDEDataSet.Handle로부터 얻을 수 있습니다.

배열에서 데이터 읽어 오기 많은 경우에 처리할 데이터는 메모리의 배열에 포함되어 있습니다. 차트 FX API를 사용해서 루프를 돌려서 배열의 요소를 읽어서 차트를 나타낼 수도 있지만 Chart FX가 이러한 일을 직접 처리하게 할 수 있습니다. 이런 특성은 ChartFX default Data provider (Cfx4Data.DLL)에 의해서 지원되며 다음과 같이 Chart FX에서 해당 객체와 GetExternalData 프로퍼티를 참조하기만 하면 됩니다:

Page 49: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

39

배열에서 데이터 읽어 오기(프로젝트 레퍼런스 사용) 비주얼 베이직을 사용하고 있다면 프로젝트에 Chart FX 데이터 제공자를 레퍼런스로 포함시키고 배열 객체를 생성시키는 것은 매우 쉽게 이루어 질 수 있습니다. 이렇게 함으로써 해당 객체는 포함된 모든 프로퍼티들을 보여 주며 개발자의 코드도 판독/유지/디버깅이 훨씬 쉬워집니다. Chart FX 데이터 제공자를 레퍼런스로 포함시키기 위해서 다음 그림과 같이 ‘Project – References’ 메뉴 옵션을 선택하고 CfxData 타입 라이브러리를 선택합니다:

프로젝트 내에서 CfxData 타입 라이브러리가 참조디면 기존의 데이터가 보관되어 있는 배열을 Chart FX로 넘겨 주기 위해서 다음의 코드를 사용할 수 있습니다: '데이터 제공자 배열을 생성 Dim CfxArray As CfxDataArray 'nValues와 nLegend는 이미 값을 가지고 있는 배열 Dim nValues(10) As Integer Dim nLegend(10) As Variant '데이터 제공자에게 nValues와 nLegend 배열을 제공 CfxArray.AddArray nValues CfxArray.AddArray nLegend '데이터 제공자로부터 정보를 가져옴 ChartFX1.GetExternalData CfxArray 차트 내에서 범례로 사용될 수치 데이터와 문자열 또는 날짜 들을 배열에 저장시켜서 전달할 수 있다는 점을 주목할 필요가 있습니다. 이 예제에서는 두개의 배열이 존재하고 하나는 차트에 포함될 수치 데이터를 저장하고 있고 다른 하나는 nValues이라는 배열인데 각 점에 대한 범례를 포함하고 있습니다. 만일 추가적인 배열(nValues2라고 한다면)을 전달한다면 Chart FX는 두개의 시리즈를 가진 차트를 생성할 것입니다. 이것은 이 기법을 사용해서 개수에 제한 없이 배열들을 전달할 수 있다는 것을 의미합니다.

Page 50: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

40

그러나 다차원 배열(multidimensional array)은 전달할 수 없습니다. 이것은 만일 ‘nData(10,10)’과 같은 행렬이나 다차원 배열을 생성했다면 Chart FX가 이 정보를 어떻게 처리해야 하는지를 모른다는 것을 의미합니다. 이 경우에는 에러가 발생합니다. 배열에서 데이터 읽어 오기 (CreateObject 사용) Chart FX 데이터 제공자를 참조하기 위해서 CreateObject 함수를 사용하려면 다음과 같이 Chart FX의 데이터 제공자의 ‘progId’를 사용해야 합니다: 'Chart FX 데이터 제공자를 포함하는 변수 생성 Dim CfxArray As Object 'nValues와 nLegend는 이미 값을 가지고 있는 배열 Dim nValues(10) As Integer Dim nLegend(10) As Variant 'Chart FX 데이터 제공자를 참조하기 위해 CreateObject 함수 사용 Set CfxArray = CreateObject("CfxData.Array") '데이터 제공자에게 nValues와 nLegend 배열을 추가 CfxArray.AddArray nValues CfxArray.AddArray nLegend '데이터 제공자로부터 정보를 가져옴 ChartFX1.GetExternalData CfxArray

Page 51: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

41

컬렉션에서 데이터 읽어 오기 컬렉션(Collection)은 고정된 크기를 가지고 있지 않고(따라서 효율적인 메모리 관리가 가능) 데이터에 따라서 확장될 수 있기 때문에(유연성) 데이터를 저장하는데 보다 강력한 기능을 가지고 있습니다. 많은 개발자들이 데이터를 처리하는데 배열보다 유연하고 효과적이기 때문에 컬렉션을 사용하고 있습니다. Chart FX의 디폴트 데이터 제공자는 배열에서 데이터를 읽는 방법과 완전히 동일한 방법을 통해서 VB 컬렉션으로부터 데이터를 읽을 수 있습니다. VB에서 컬렉션을 처리하는 방법에 대해서는 VB의 문서를 참조해 주시기 바랍니다. 이러한 특징은 Chart FX 디폴트 데이터 제공자 (Cfx4Data.DLL)에 의해 지원되며 다음과 같이 Chart FX에서 해당 객체와 GetExternalData 를 참조하기만 하면 됩니다: 컬렉션에서 데이터 읽어 오기 (프로젝트 레퍼런스 사용)

비주얼 베이직을 사용하고 있다면 프로젝트에 Chart FX 데이터 제공자를 레퍼런스로 포함시키고 배열 객체를 생성시키는 것은 매우 쉽게 이루어 질 수 있습니다. 이렇게 함으로써 해당 객체는 포함된 모든 프로퍼티들을 보여 주며 개발자의 코드도 판독/유지/디버깅이 훨씬 쉬워집니다. Chart FX 데이터 제공자를 레퍼런스로 포함시키기 위해서 다음 그림과 같이 ‘Project – References’ 메뉴 옵션을 선택하고 CfxData 타입 라이브러리를 선택합니다: 프로젝트 내에서 CfxData 타입 라이브러리가 참조되면 기존의 데이터가 보관되어 있는 배열을 Chart FX로 넘겨 주기 위해서 다음의 코드를 사용할 수 있습니다: 'Chart FX 데이터 제공자 배열 생성 Dim CfxArray As CfxDataArray 'nValues와 nLegend는 이미 값을 가지고 있는 배열 Dim nValues As New Collection Dim nLegend As New Collection '데이터 제공자에 'nValues와 nLegend 배열 추가 CfxArray.AddArray nValues CfxArray.AddArray nLegend '데이터 제공자로부터 정보를 가져옴 ChartFX1.GetExternalData CfxArray

Page 52: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

42

차트 내에서 범례로 사용될 수치 데이터와 문자열 또는 날짜 들을 컬렉션에 저장시켜서 전달할 수 있다는 점을 주목할 필요가 있습니다. 이 예제에서는 두개의 컬렉션이 존재하고 하나는 차트에 포함될 수치 데이터를 저장하고 있고 다른 하나는 nValues이라는 컬렉션인데 각 점에 대한 범례를 포함하고 있습니다. 만일 추가적인 컬렉션(nValues2라고 한다면)을 전달한다면 Chart FX는 두개의 시리즈를 가진 차트를 생성할 것입니다. 이것은 이 기법을 사용해서 개수에 제한 없이 컬렉션들을 전달할 수 있다는 것을 의미합니다. 컬렉션에서 데이터 읽어 오기 (CreateObject 사용) Chart FX 데이터 제공자를 참조하기 위해서 CreateObject 함수를 사용하려면 다음과 같이 Chart FX의 데이터 제공자의 ‘progId’를 사용해야 합니다: 'Chart FX 데이터 제공자를 포함하는 변수 생성 Dim CfxArray As Object 'nValues와 nLegend는 이미 데이터를 가지고 있는 배열 Dim nValues As New Collection Dim nLegend As New Collection 'Chart FX 데이터 제공자를 참조하기 위해 CreateObject 함수 사용 Set CfxArray = CreateObject("CfxData.Array") '데이터 제공자에게 nValues와 nLegend 배열을 추가 CfxArray.AddArray nValues CfxArray.AddArray nLegend '데이터 제공자로부터 정보를 가져옴 ChartFX1.GetExternalData CfxArray 컬렉션들은 변화 가능한 형식(Variant Type)이기 때문에 Chart FX는 저장될 데이터 형식을 결정하기 위해서 컬렉션의 첫번째 요소를 사용합니다. 예를 들어 만일 다음과 같은 요소들을 컬렉션에 저장하기 바란다면: Dim Col As New Collection Col.Add 10.5 Col.Add 12.4 Col.Add "January" Col.Add "February" Chart FX는 이 컬렉션을 수치 값(시리즈)으로 사용할 것이고 세 번째와 네 번째 요소는 이 시리즈에서 hidden points로 간주될 것입니다. 중요한 정보: 데이터 제공자에 대해 컬렉션에 데이터를 첨가할 때 Chart FX가 컬렉션을 다양하게 조작할 수 있도록 하는 DataType 프로퍼티를 사용할 수 있기 때문에 이 첨가하는 순서가 의미가 있을 수 있습니다. 예를 들어, Chart FX가 특정한 수치 컬렉션을 차트에서 범례로 사용하도록 DataType 프로퍼티를 사용할 수 있습니다.

Page 53: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

43

텍스트 파일에서 데이터 읽어 오기 Chart FX은 텍스트 파일에 저장된 정보도 읽어 올 수 있습니다. 탭(tab)으로 나누어진 값들(Tab separated values ;TSV)과 쉼표로 나누어진 값들(Comma separated values ;CSV)을 읽어 올 수 있으며 Chart FX는 이렇게 읽어온 데이터를 사용할 수 있습니다. 이 특성은 이런 특성은 ChartFX default Data provider (Cfx4Data.DLL)에 의해서 지원되며 다음과 같이 Chart FX에서 해당 객체와 GetExternalData 프로퍼티를 참조하기만 하면 됩니다: 텍스트 파일에서 데이터 읽어 오기(프로젝트 레퍼런스 사용) 비주얼 베이직을 사용하고 있다면 프로젝트에 Chart FX 데이터 제공자를 레퍼런스로 포함시키고 CfxDataFile 객체를 생성시키는 것은 매우 쉽게 이루어 질 수 있습니다. 이렇게 함으로써 해당 객체는 포함된 모든 프로퍼티들을 보여 주며 개발자의 코드도 판독/유지/디버깅이 훨씬 쉬워집니다. Chart FX 데이터 제공자를 레퍼런스로 포함시키기 위해서 다음 그림과 같이 ‘Project – References’ 메뉴 옵션을 선택하고 Chart FX 데이터 제공자를 선택합니다:

프로젝트 내에서 Chart FX 데이터 제공자가 참조되면 기존의 데이터가 보관되어 있는 텍스트 파일에서 데이터를 읽기 위해서 다음의 코드를 사용할 수 있습니다: 'Chart FX 데이터 제공자 생성(CfxDataFile 객체 사용) Dim CfxFile As CfxDataFile 'eFile 변수(경로 포함)가 가리키는 파일을 로드 CfxFile.FileName = eFile '데이터 제공자로부터 정보를 가져옴 ChartFX1.GetExternalData CfxFile

Page 54: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

44

텍스트 파일의 생성은 Chart FX에 어떻게 표시되기를 바라는가에 따라서 다르게 될 수 있습니다. 텍스트 파일을 수치 정보만으로써 생성할 수도 있고 Chart FX가 범례에 사용할 레이블로 구성할 수도 있습니다. 어떤 경우에라도 텍스트 파일은 다음의 가이드라인을 따라서 작성되어야 합니다:

1. 차트 내에 시리즈의 개수와 같은 개수를 가지는 열이 존재해야 한다. 2. 차트 내의 한 개의 시리즈 당 점의 개수와 같은 수의 행이 존재해야 한다. 3. 탭이나 쉼표로 열을 나누어야 한다. 4. 각 행들은 ‘carriage return’을 사용해서 끝나야 한다. 5. 데이터의 제일 마지막 행 다음에는 빈 줄을 두면 안된다. 6. 시리즈에 대한 범례는 열의 처음 시작에서 가져 온다. 7. 점에 대한 범례(x축 범례)는 행의 처음 시작에서 가져 온다.

예를 들어 Chart FX가 사용할 텍스트 파일은 다음과 같은 형태를 가집니다: Plot numerical data only: 10 20 15 80 2 20 4 100 7 35 Plot numerical data with Point legends: Jan 10 20 Feb 15 80 March 2 20 Apr 4 100 May 7 35 Plot numerical data with series legends: Sales Projected 10 20 15 80 2 20 4 100 7 35 Plot numerical data with both legends:

Sales Projected Jan 10 20 Feb 15 80 March 2 20 Apr 4 100 May 7 35 “Sales” 레이블을 첫번째 열의 앞쪽으로 가도록 하기 위해서 첫번째 셀(cell)에서 탭 문자가 사용되었다는 점에 주목할 필요가 있습니다.

Page 55: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

45

Chart FX 프로그래머 가이드

좌표축 작업

이 장에서 다뤄지는 주제들

소개 Axis 객체

좌표축 형식 정하기 좌표축 레이블 붙이기

좌표축 스크롤링 눈금선과 눈금

Page 56: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

46

Page 57: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

47

좌표축 작업. 개요 Chart FX에서 이루어진 가장 중요한 개선점들 중 하나가 좌표축을 처리하는 것입니다. Axis 객체와 여기에 포함된 프로퍼티들을 사용해서 배율, 눈금선 표시, 눈금 표시, 레이블, 메이저/마이너 단위 표시등을 설정할 수 있습니다. Chart FX은 세가지 유형의 축을 지원합니다: 다음의 그림에서 볼 수 있듯이 주(主) Y 축(Main Y axis), 부(副) Y축(Secondary Y axis) 그리고 X축(X axis)입니다.

보통 X축은 범주축(categorical axis)이며 (XY plot에서는 수치 데이터 관련 축이 될 수도 있습니다) Y축은 좌표축 관련 객체에서 다양한 프로퍼티를 사용하여 독립적으로 제어 할 수 있는 수치 데이터 관련 축입니다.

Chart FX의 중요한 개선점들 중 하나는 축과 관련된 눈금, 눈금선, 레이블을 제어할 수 있도록 해주는 메이저/마이너 단위의 채용을 들 수 있습니다. 예를 들어 Y축의 범위가 0~100인 차트를 작성할 수 있다면 그림처럼 레이블은 세로로 25 마다 붙여지고 눈금선 표시는 12.5 단위마다 붙일 수 있습니다.

Axis 객체 사용하기

Page 58: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

48

좌표축 처리에 사용되는 모든 프로퍼티들은 Axis 객체에 캡슐화되어 있습니다. 이 객체는 프로퍼티들을 사용하기 쉽게 해주는 동시에 유지/디버깅도 쉽게 해줍니다. Axis 객체는 Chart FX가 지원하는 3 종류의 좌표축을 매개 변수로 받습니다: 호출하기 원하는 프로퍼티나 메소드와 특정 프로퍼티에 대한 설정 사항과 함께 X 축, 주 Y축, 부 Y축을 표시해야 합니다. 예를 들어 주 Y축의 최대값을 200으로 설정하려면 코드는 다음처럼 작성합니다: ChartFX1.Axis(AXIS_Y).Max = 200 주 Y축이나 부 Y축에 시리즈를 할당하는 방법 이것은 차트에 있는 시리즈의 양에 달려 있는 것이기 때문에 Y축(주 Y축, 부 Y축 모두)에 다양한 시리즈를 할당하는 것은 Series 객체의 YAxis 프로퍼티를 통해서 지원됩니다. 기본적으로 Chart FX는 사용 가능한 모든 시리즈들을 주 Y축에 할당합니다.몇몇 경우에 시리즈들의 배율이 다르고 또 어떤 시리즈는 나타나지 않을 수도 있기 때문에 모든 시리즈들에 대해서 주 Y축을 사용하는 것은 비효율적입니다. 예를 들어 두개의 시리즈 중에서 하나는 1~100의 범위를 가지고 있고 다른 하나는 10000~20000의 범위를 가지고 있다면 Chart FX가 선택할 범위가 0~20000이기 때문에 첫번째 시리즈는 작게 나타나서 보이지 않을 것입니다. 이러한 경우에는 Series 객체에 있는 Yaxis 프로퍼티를 사용해서 다음과 같이 두번째 시리즈를 부 Y축에 할당하고 거기에 완전히 다른 배율을 부여할 수 있습니다: ChartFX1.Series(1).YAxis = AXIS_Y2 다음 부분에서 독립적인 배율들, 눈금선 표시, 특정 좌표축에 대한 독립적인 설정들을 어떻게 처리하는지를 설명합니다. 객체를 처리할 때 주의해야 할 점 . 참조하는 하위 객체(sub-object)의 수는 어플리케이션의 성능에 영향을 끼칠 수 있습니다. 따라서 특정 좌표축에 대해서 많은 설정 사항들을 코드에 포함하고 있다면 다음과 같이 Axis 객체에 변수를 할당하거나 그 변수에 프로퍼티들을 할당해서 코드를 최적화 할 수 있습니다: Set YAxis=ChartFX1.Axis(AXIS_Y) 'Then you use the YAxis variable to access and set all properties YAxis.Max = 100 YAxis.Min = 1 YAxis.GridColor = RGB(255,128,0) 이렇게 프로퍼티들을 설정하는 것은 프로퍼티를 설정할 때 마다 이 프로퍼티가 있는 Axis 객체를 어플리케이션이 다루지 않아도 되기 때문에 보다 효율적입니다. 좌표축 형식 정하기

Page 59: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

49

수치 데이터에 대한 좌표축 형식을 설정하는 작업은 Axis 객체의 Format 프로퍼티를 사용함으로써 Chart FX내에 미리 정의되어 있는 좌표 포맷을 그대로 사용할 수 있습니다. 예를 들어, 주 Y축에 과학 기호를 사용하려면 코드를 다음과 같이 작성합니다: ChartFX1.Axis(AXIS_Y).Format = AF_SCIENTIFIC Chart FX에 어떤 포맷이 준비되어 있는지 알기 위해서 Format 프로퍼티를 확인하시기 바랍니다. 사용자 정의 형식 Chart FX는 특정 좌표축에 대해서 숫자 뿐만 아니라 날짜도 지원하기 때문에 선택된 좌표축에 대해서 Chart FX가 어떻게 형식을 처리하고 레이블들을 표시해야 하는 지를 지시하는 마스크(mask)를 생성함으로써 자신만의 형식을 정의할 수 있습니다: ChartFX1.Axis(AXIS_X).Format = "Ddd-MMM-yy" 좌표축 레이블 붙이기 X축에 레이블 붙이기

Page 60: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

50

대부분의 경우에 수치 데이터와 관련된 Y축은 선택된(개발자나 Chart FX가 선택한) 배율에 따라서 표시되기 때문에 X축에 레이블을 붙여야 하는 경우가 많습니다. 디폴트로 X축은 번호(0,1,2,3…)가 붙여지며 차트의 가독성을 높이기 위해서 이것을 변경할 수 있습니다. 예를 들어 X축에 12개의 눈금이 있고 이 눈금에 월별로 표시하고 싶으면 다음과 같이 각 눈금에 적절한 색인을 주어서 Label 프로퍼티를 사용할 수 있습니다:

ChartFX1.Axis(AXIS_X).Label(0) = "January" ChartFX1.Axis(AXIS_X).Label(1) = "February" ChartFX1.Axis(AXIS_X).Label(2) = "March" ...

이렇게 하면 X축의 각 눈금마다 적절한 레이블이 표시될 것입니다. 레이블의 빈도와 스타일. 한 축에 너무 많은 레이블이 부여 되었을 때 (또는 너무 많은 점들이 차트에 있을 때) 레이블에 할당된 공간이 부족하게 될 수 있습니다. 이렇게 되면 차트를 읽기 힘들어 집니다. 이러한 경우 Chart FX가 어느 정도로만 점들에 대해서 레이블을 붙이던가 축에서 레이블들을 표시하는 방법을 바꾸는 방법을 생각해 볼 수 있습니다. 다음처럼 몇 가지 방법을 찾을 수 있습니다: 10개의 점 마다 하나씩 차트의 레이블을 포함할 때 (LabelValue 프로퍼티 사용) ChartFX1.Axis(AXIS_X).LabelValue = 10 레이블을 수직 방향으로 표시할 때(LabelAngle 프로퍼티 사용) ChartFX1.Axis(AXIS_X).LabelAngle = 90 레이블을 교차해서 표시할 때 (Style 프로퍼티 사용) ChartFX1.Axis(AXIS_X).Style = AS_2LEVELS 레이블들을 처리할 때 사용할 수 있는 또 다른 것들은 Axis 객체의 Step과 MinorStep 프로퍼티를 사용하는 것입니다. 각 레이블은 마이너 단위로 표시되는 적은 눈금에 대해서만 나타나기 때문에 이 프로퍼티들을 적절히 이용해서 레이블이 표시되는 방법을 제어할 수 있게 됩니다. 이러한 기법은 이 chapter 후반부의 ‘눈금선 표시와 눈금 표시’ 부분에서 본격적으로 다루어지게 됩니다. 수치 값에 대한 좌표축에 사용자 정의 레이블 붙이기 . 사용자 정의 레이블을 축에 할당하는 것은 Axis 객체의 Label 프로퍼티를 적절히 사용하면 쉽게 할 수 있습니다. 그러나 사용자 정의 레이블을 수치값 관련 좌표축에 사용하는 것은 몇 가지 문제가 있고 실제적인 상황에서 이러한 문제를 살펴 보도록 합니다. 예를 들어서 주 Y축이 0~100의

Page 61: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

51

범위에 있고 한 스텝이 20이라면 Y축에 6개의 눈금(0,20,40,60,80,100)을 가진 차트를 생성하게 됩니다. 이 차트가 ‘고객 만족도’를 나타내는 목적으로 사용된다고 가정해 봅시다:

0 = Very poor 20 = Poor 40 = Average 60 = Good 80 = Very Good 100 = Excellent

Y축은 수치 관련 축이지만 이런 레이블들을 표시해야 합니다. 그리고 Y축이 이러한 레이블들을 표시할 수 있도록 하기 위해서 다음의 코드를 사용할 수 있습니다:

ChartFX1.Axis(AXIS_Y).Label(0) = "Very Poor" ChartFX1.Axis(AXIS_Y).Label(1) = "Poor" ChartFX1.Axis(AXIS_Y).Label(2) = "Average" ChartFX1.Axis(AXIS_Y).Label(3) = "Good" ChartFX1.Axis(AXIS_Y).Label(4) = "Very Good" ChartFX1.Axis(AXIS_Y).Label(5) = "Excellent"

그러나 Y축은 수치 관련 축이고 Label 프로퍼티에 명시된 인덱스는 레이블이 자리잡아야 할 위치를 제대로 표시해주지 못하고 있습니다. LabelValue 프로퍼티는 수치 관련 축에서 이러한 레이블들이 어디에 나타나야 하는지를 설정할 수 있도록 합니다. 따라서 다음과 같이 만일 LabelValue를 20으로 설정했다면:

ChartFX1.Axis(AXIS_Y).LabelValue = 20

다음 그림에서와 같이 각 레이블은 정확히 원하는 장소에 위치하게 될 것입니다

Page 62: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

52

좌표축 스크롤링 많은 수의 점들을 가지고 있는 차트들을 표시할 때 사용자에게 가장 요긴한 도구는 스크롤 바 입니다. 이 도구는 차트의 가독성에 영향을 주지 않으면서 사용자들이 데이터의 각 부분을 볼 수 있도록 해 줍니다. Chart FX에서는 주 Y축과 X축에 대해서 사용자들이 편리하게 사용할 수 있도록 스크롤 바를 설정할 수 있습니다. 중요한 정보: Chart FX 은 부 Y축에 대해서는 스크롤링을 지원하지 않습니다. PixPerUnit 프로퍼티는 각 눈금 간격마다 차트에 표시될 실제적인 픽셀의 양을 지정할 수 있도록 합니다. 예를 들어서 X축에 긴 문자열로 레이블을 붙였다면 눈금 간격의 크기를 늘여서 각 레이블이 보이게 할 수 있습니다. 선택된 축에 스크롤 바를 연결하거나 눈금 간격 사이를 줄이고 싶을 때 PixPerUnit 프로퍼티를 요긴하게 사용할 수 있습니다. 이것의 영향은 다음과 같이 적용되는 좌표축의 종류에 따라서 달라집니다: 주축(X축) 주축(즉, X축)에 대해 PixPerUnit를 설정했다면 이 값은 메이저 눈금 간격을 갈라놓는(픽셀 단위의 물리적 거리) 정수값이 됩니다. X축(주축일때)에 대한 디폴트 PixPerUnit값은 30 픽셀입니다. 다음과 같은 경우에 주축에 대해 PixPerUnit 값을 변경할 수 있습니다: 1) 차트와 관련된 레이블들이 너무 길거나 할당된 공간을 넘을 때. 이 경우에는 PixPerUnit의 값을 늘여야 합니다. 모든 점들이 한 화면에 맞지 않을 때 스크롤바가 나타나게 됩니다. 이렇게 되기 위해서는 Scrollable 프로퍼티가 TRUE로 설정되어야 합니다. 2) 한 화면 내에서 더 많은 점들을 넣기를 원할 때는 PixPerUnit 값을 줄여야 합니다. PixPerUnit 가 너무 작을 때는 각 눈금과 관련된 레이블에도 주의를 기울여야 제대로 보입니다. 3) 한 화면 당 특정한 수의 점들을 지정하고 싶을 때는 SetScrollView 메소드를 사용하면 필요한 값들을 계산할 필요 없이 편리하게 값을 지정할 수 있습니다. 4) 스크롤바를 나타내기를 원하지 않으면 PixPerUnit의 값을 0으로 설정할 수 있습니다. 이렇게 하면 스크롤바가 제거되고 Chart FX는 한 화면에 맞도록 적절한 PixPerUnit의 값을 설정할 것입니다. 수치값 좌표축 PixPerUnit프로퍼티가 수치값을 가지는 좌표축(예를 들어 Y축)에 적용되면 스크롤바를 쉽게 나타낼 수 있도록 해서 축의 배율(최대,최소, 한 단계)에 관계없이 데이터를 살펴 볼 수 있도록 해줍니다. 수치값과 관련된 죄표축은 다른 단위(화폐, 과학, 날짜 등)를 통해서 표시될 수 있기 때문에 PixPerUnit가 실제로 의미하는 것을 알기가 힘든 경우가 있습니다. 이러한 상황은 이러한 좌표축이 차이가 심하게 나는 범위를 가지고 있을 때 보다 복잡해 집니다. 수치 관련 축에 적용되었을 때 PixPerUnit 값은 더 이상 정수값이 아닙니다. 대체로 차트에 할당된

Page 63: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

53

크기(픽셀 단위)를 수치축의 최대값으로 나누고 이 값을 스크롤바가 가지는 페이지수로 곱한 값이 사용됩니다. 예를 들어서 최소값이 0이고 최대값이 1,000,000인 차트에 400개의 픽셀이 할당되었을 때 5개의 페이지를 가지는 스크롤바를 넣으려고 하면 PixPerUnit는 다음과 같이 설정됩니다: PixPerUnit = (400/1000000)*5 = 0.00008, 이것은 Y축에 한 단위 당 0.00008 픽셀이 할당됨을 의미합니다. 다른 예로, 만일 동일한 차트가 0과 1사이의 범위를 가지면 PixPerUnit의 설정은 다음 계산을 따라 이루어 집니다: PixPerUnit = (400/1)*5 = 80 PixPerUnit를 0으로 설정하면 스크롤바가 제거되며 Chart FX는 적절한 PixPerUnit 값을 계산하게됩니다. 만일 Scrollable 프로퍼티가 FALSE로 설정되면 PixPerUnit는 해당 축에 대해서 아무런 영향력을 가지지 못합니다. 따라서 PixPerUnit 프로퍼티를 사용할 때는 Scrollable 프로퍼티를 TRUE로 설정되도록 해야 합니다. 수치 관련 축의 특정한 부분을 보기를 원할 때 SetScrollView 메소드를 사용하면 세부적인 계산 없이 필요한 값들을 설정할 수 있도록 해 줍니다. 예를 들어 다음과 같이 SetScrollView 메소드를 호출할 수 있습니다:

ChartFX1.Axis(AXIS_Y).SetScrollView 0,200000

ZoomIn 메소드도 차트의 특정 부분만을 보기 원할 때 그 부분을 제어할 수 있도록 합니다.

Page 64: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

54

눈금선과 눈금 차트의 가독성을 증가시키기 위해서 눈금선 표시와 눈금 표시가 사용되기도 합니다. Chart FX은 메이저와 마이너 단위를 지원하며 눈금선과 눈금을 독립적으로 제어 할 수 있습니다. 이러한 점은 특정 값의 점들이 특정한 범위에 있다는 것을 사용자들이 쉽게 파악할 수 있도록 해줍니다. Axis 객체는 차트 내의 어떤 축에 대해서도 눈금선과 눈금에 대한 매개변수를 설정할 수 있도록 해줍니다. 그러나 다음 그림에서 처럼 눈금선 표시와 눈금 표시가 메이저 단위와 마이너 단위에 어떻게 연관이 되어있는지를 이해하는 것이 중요합니다.

메이저 단위의 눈금선과 눈금 표시 Step 프로퍼티에 의해서 제어되는 메이저 단위에 축에 관련된 레이블이 붙여집니다. 메이저 눈금 표시는 Tickmark 프로퍼티에 의해서 제어되며 메이저 단위 눈금선 표시는 Grid, GridStyle , GridColor 프로퍼티에 의해서 제어됩니다. 위에서 제시된 그림은 한 단계(step)로 10을 나타내고 있으며 축의 바깥쪽에 눈금 표시가 자리잡고 있고 대시(-)와 점으로 나타낸 파란 눈금선을 표시하고 있습니다. 다음의 코드로 이러한 표시가 가능합니다:

ChartFX1.Axis(AXIS_Y).Step = 10 ChartFX1.Axis(AXIS_Y).Grid = TRUE ChartFX1.Axis(AXIS_Y).TickMark = TS_OUTSIDE ChartFX1.Axis(AXIS_Y).GridStyle = CHART_DASHDOT ChartFX1.Axis(AXIS_Y).GridColor = RGB(0,0,128)

마이너 단위 눈금선과 눈금 제어

Page 65: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

55

MinorStep 프로퍼티를 사용해서 마이너 단위를 설정할 때 이 위치에 레이블은 표시되지 않지만 눈금선과 눈금은 설정됩니다. 예를 들어서 앞의 그림에서 MinorStep 프로퍼티는 5로 설정되어서 마이너 단위와 관계된 마이너 눈금이 십자형태로 표시되었고 보라색 직선으로 표시된 마이너 눈금선이 나타나 있습니다. 다음의 코드로 이러한 특성이 구현됩니다:

ChartFX1.Axis(AXIS_Y).MinorStep = 5 ChartFX1.Axis(AXIS_Y).MinorGrid = TRUE ChartFX1.Axis(AXIS_Y).MinorTickMark = TS_CROSS ChartFX1.Axis(AXIS_Y).MinorGridStyle = CHART_SOLID ChartFX1.Axis(AXIS_Y).MinorGridColor = RGB(128,128,255)

중요한 정보: 윈도우 API(윈도우 95/98)의 제한 때문에 다른 스타일과 폭을 가지는 눈금선을 나타낼 수 없습니다. 이 제한 사항은 윈도우 NT 4.0이나 그 이상에서는 해당되지 않습니다. 따라서 특정한 스타일(점, 대시(-)등)으로 눈금선을 생성하기를 원하면 폭은 항상 1 픽셀로 고정됩니다. 교차 형태 눈금선 어떤 경우에는 다음 그림에 나타낸 것처럼 차트의 가독성을 증가시키기 위해서 교차된 형태로 나타나는 눈금선이 매우 유용합니다.

이 효과를 얻기 위해서 색상을 설정 할 수 있는 GridColor와 RGB2DBk 프로퍼티 (RGB3DBk 는 3차원 모드로 표시되는 차트에 사용합니다) 와 Axis 객체의 Style 프로퍼티를 함께 사용합니다:

ChartFX1.Axis(AXIS_Y).GridColor = RGB(255,255,0) ChartFX1.Axis(AXIS_Y).RGB2DBK = RGB(0,255,255) ChartFX1.Axis(AXIS_Y).Style = AS_INTERLACED

Page 66: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

56

Page 67: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

57

Chart FX 프로그래머 가이드

Chart FX 색상 작업

이 장에서 다뤄지는 주제들

색깔의 종류 색깔 할당

색깔 팔레트와 색상안 배경색 패턴

Page 68: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

58

Page 69: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

59

색 종류 차트 내에 다양한 기호와 요소들에 사용할 수 있는 색의 종류 보통 다음처럼 차트 내의 특정한 요소의 색을 할당하고 처리하는데 사용하는 프로퍼티에는 RGB 매크로를 사용하게 됩니다:

ChartFX1.RGBBk = RGB(255,0,255)

Chart FX 팔레트(palette)를 사용하고 있고 이 팔레트에서 특정한 색을 사용하기 원하면 CHART_PALETTE 상수와 사용하기 원하는 색의 인덱스를 사용해서 팔레트의 특정한 색을 참조할 수 있습니다. 예를 들어, 현재 팔레트에서 열번째 색을 배경색으로 사용하려면 다음과 같이 RGBBk 프로퍼티를 사용해야 합니다:

ChartFX1.RGBBk = CHART_PALETTECOLOR Or 10 몇몇 개발자들은 자신의 어플리케이션을 시스템에 민감하게 변화하는 것으로 만들기를 원합니다. 이것은 사용자가 윈도우의 색상안(Color Scheme)을 변화시키려 할 때마다 자신의 어플리케이션이 새로운 시스템의 색상에 적합하게 대처하도록 한다는 것을 의미합니다. 색과 관련된 모든 Chart FX의 프로퍼티는 시스템 색상으로 설정될 수 있습니다. 예를 들어 비주얼 베이직에서 다음과 같이 차트의 배경색을 시스템 색상 중 하나로 설정하기 위해서 RGBBK 프로퍼티를 다음처럼 설정합니다:

ChartFX1.RGBBk = vbInfoBackground 중요한 정보: VB을 사용하지 않는 경우에는 다음처럼 시스템 색상을 할당할 수 있습니다:

ChartFX.RgbBk = CHART_SYSCOLOR 또는 Index 여기서 Index는 GetSyscolor 윈도우 API 호출입니다. Chart FX 에서 선택한 디폴트 색상 변경하기 어떤 형태의 차트를 제작하던 간에 Chart FX는 단일 색상으로 구성된 디폴트 팔레트에서 색을 선택하게 됩니다. 이런 색상들은 자신의 특정한 목적에 적합하게 변경될 수 있습니다. 색상들은 보통 Series와 연관되어 있고 따라서 만일 차트에 세 개의 시리즈가 있다면 각각은 자신의 고유한 색을 가지게 됩니다. 예를 들어, 막대 차트에 세 개의 시리즈가 있고 Chart FX가 선택한 디폴트 색상을 변경하려면 다음과 같이 COD_COLORS 상수와 Color 프로퍼티와 함께 OpenDataEx 메소드를 사용해서 먼저 통신 채널을 열어야 합니다:

Chart1.OpenDataEx COD_COLORS, 3, 0 ‘Color 프로퍼티를 사용해서 시리즈의 색을 변경할 수 있음

Chart1.Color(0) = RGB(128,255,0) Chart1.Color(1) = RGB(0,0,128) Chart1.Color(2) = RGB(128,128,255) ‘마지막으로 색상에 대한 통신 채널을 닫음

Chart1.CloseData COD_COLORS

Page 70: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

60

Series Object는 차트의 각 시리즈와 연결되어 있는 색상들을 변경시키는데 사용할 수 있는 Color 프로퍼티를 제공합니다. 예를 들어서 다음의 코드는 위에서 제시한 코드와 정확하게 동일한 결과를 나타냅니다:

Chart1.OpenDataEx COD_COLORS, 3, 0 ‘Color 프로퍼티를 사용해서 시리즈의 색을 변경할 수 있음

Chart1.Series(0).Color = RGB(128,255,0) Chart1.Series(1).Color = RGB(0,0,128) Chart1.Series(2).Color = RGB(128,128,255) ‘마지막으로 색상에 대한 통신 채널을 닫음

Chart1.CloseData COD_COLORS

기본 색상 팔레트 변경 . Chart FX에서 색을 변경할 수 있는 또 다른 재미있는 방법은 모든 시리즈와 다양한 객체들(배경, 눈금선 등)이 미리 결정된 색상 팔레트를 따르는 특성을 이용해서 Palette 프로퍼티를 이용해서 색을 변경하는 것입니다. 기본적으로 Chart FX는 미리 정의된 많은 색상 팔레트를 가지고 있습니다. 예를 들어 차트를 ‘어두운 파스텔(Dark Pastels)’ 팔레트를 통해서 표현하고 싶다면 다음처럼 코드를 작성합니다:

ChartFX1.Palette = "Dark Pastels" 중요한 정보: Chart FX 팔레트는 클라이언트 머신에서 레지스트리에 등록됩니다. 따라서 이러한 특성을 어플리케이션에 이용하려면 팔레트가 클라이언트 머신에서 적절하게 적용되어 있고 제대로 등록되어 있어야 합니다. 더 자세한 내용은 ‘적용 문제’ 부분을 참조하시기 바랍니다.

Page 71: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

61

데이터 표시 요소에 개별적인 색상 부여하기 어떤 경우에는 시리즈와 연관되어서 색을 부여하기 보다는 각각의 데이터 표시 요소에 대하여 색을 부여해야 할 필요가 있습니다. 예를 들어서 만일 막대 차트를 그리려 할 때 음수 값을 가지는 막대는 붉은 색으로 나타내고 양수 값을 가지는 막대는 파란 색으로 나타내려고 한다면 위에서 제시한 코드에서는 각각의 색이 전체 시리즈와 관련된 것이어서 이러한 일을 할 수 없습니다. 각 요소 별로 색을 할당하려면 MultipleColors 프로퍼티를 사용하면 됩니다. 이 프로퍼티를 TRUE로 설정하면 Chart FX는 기호들이 같은 시리즈에 속해 있어도 다양한 색으로 기호들을 칠하게 됩니다. 예를 들어서 음수 값을 가진 막대에 붉은 색을 할당하고 양수 값에는 파란 색을 할당하려면 다음과 같이 코드를 작성합니다:

‘먼저 MultipleColors 프로퍼티를 설정 Chart1.MultipleColors = TRUE

‘COD_COLORS로 통신 채널 열기 Chart1.OpenDataEx COD_COLORS,2,0 ‘총 점의 개수를 얻음 nTotalPoints=Chart1.nValues ‘마지막으로 Color 프로퍼티를 사용해서 각각 색을 할당함

for j=0 to (nValues-1)

if (Chart1.Value(j) <0) Then Chart1.Color(j) = RGB(0,0,255) else Chart1.Color(j) = RGB(255,0,0) End If

Next j Chart1.CloseData COD_COLORS

차트의 배경색 바꾸기 Chart FX는 차트의 배경색을 변경할 수 있도록 세 개의 프로퍼티를 제공합니다. 배경색은 최종 사용자가 Chart FX의 도구 막대에 있는 팔레트 막대에서 색을 드래깅해서 배경으로 가져옴으로써 바꿀 수 있습니다:

RGBBk: 차트를 둘러싸고 있는 배경색을 설정합니다. RGB2DBk: 2D 차트의 배경색을 설정합니다. 이 색은 차트가 그려지는 내부의 사각형(축으로 둘러싸여 있는 내부)을 칠합니다. RGB3DBk: 3D 차트의 배경색을 설정합니다. 이 색은 차트가 그려지는 3D 공간에 나타납니다.

예를 들어서 차트가 그려지는 3D 공간을 파란색으로 변경하려면 다음과 같은 코드를 작성합니다: Chart1.RGB3DBk = RGB(0,0,255)

중요한 정보: CHART_TRANSPARENT 상수는 3D 배경을 투명하게 하는데 사용됩니다. 예를 들어서 BkPicture를 이용해서 비트맵을 위치시키려면 다음과 같이 투명 배경 특성을 사용할 수 있습니다:

Chart1.RGBBK = CHART_TRANSPARENT

Page 72: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

62

색상안(Color Schemes) 색과 관련된 또 다른 Chart FX의 특성은 ‘색상안’입니다. 이 특성을 통해서 단색을 컬러 패턴이나 흑백 패턴으로 표시할 수 있습니다. 가독성을 높이기 위해서 패턴으로 기호들을 표시하려고 할 때 매우 유용하게 쓰일 수 있습니다. 이 특성은 Chart FX의 최종 사용자 인터페이스에서 사용 가능합니다. 차트 윈도우에서 옵션 대화 상자로부터 패턴 막대를 사용할 수 있습니다. 이 프로퍼티는 Scheme라고 부르고 CHART_CSSOLID (단색), CHART_CSBWPATTERN (흑백 패턴), CHART_CSPATTERN (컬러 패턴) 중 하나를 선택할 수 있습니다. 컬러 패턴 색상안을 사용하려면 다음과 같은 코드를 작성합니다:

Chart1.Scheme = CHART_CSPATTERN

컬러 패턴을 사용하면 패턴의 전경색과 배경색을 모두 지정해 주어야 합니다. 전경색은 이전에 설명된 Color 프로퍼티의 성질을 그대로 따르고 배경색에 대한 패턴은 BkColor 프로퍼티를 사용해서 설정할 수 있습니다.

이러한 패턴 색상들은 Chart FX 사용자 인터페이스로부터 다음처럼 변경할 수 있습니다:

전경색 : 데이터 표시 요소에 색을 드래그해서 할당할 수 있습니다. 배경색 : 시프트 키를 누른 상태로 데이터 표시 요소에 색을 드래그해서 할당합니다.

패턴 Chart FX는 차트의 다양한 시리즈에 개발자나 최종 사용자들이 적용해서 사용할 수 있도록 하는 디폴트 패턴들을 제공합니다. 이러한 패턴을 살펴보는 유일한 방법은 차트에서 Patternbar를 나타내어 살펴 보는 것입니다. 이렇게 하기 위해서는 다음과 같이 PatternBar 프로퍼티를 사용합니다:

Chart1.PatternBar = TRUE

PatternBar를 나타내면 사용자들은 차트의 시리즈에 이 패턴을 ‘드랙 앤 드롭’해서 가져오고 Chart FX는 자동적으로 이 패턴을 컬러 패턴 색상안에 적용할 것입니다. 다음과 같이 프로그램 상에서 Pattern 프로퍼티를 설정할 수도 있습니다:

Chart1.Pattern(1) = 2

1은 패턴을 적용하려는 시리즈를 나타내고 2는 패턴 막대 내에서의 위치를 나타냅니다. 2D 컬러 라인 2D 라인 차트에서는 Chart FX가 연결선을 검은색으로 표시합니다. 점을 표시할 때와 같은 색으로 색을 표시하기를 원하면 다음과 같이 Border 프로퍼티를 사용합니다:

Chart1.Border = FALSE

Note: Border 프로퍼티를 FALSE로 설정하면 2D 라인에 사용되는 색은 BorderColor 프로퍼티에 의해서 제어되는 색들 중 하나입니다.

범례의 배경색 범례를 나타내는 윈도우(시리즈나 점에 관계된 범례)를 보이기로 했으면 최종 사용자는 해당 윈도우의 배경에 적절한 색상을 드래깅함으로써 쉽게 배경색을 변경할 수 있습니다. 이러한 절차를 프로그램을 통해서 하기를 원하면 관계되는 객체의 BkColor 프로퍼티를 사용하면 됩니다. 예를 들어서 시리즈에 대한 범례의 배경색을 녹색으로 변화시키려면 다음처럼 합니다:

ChartFX1.SerLegBoxObj.BkColor = RGB(0,128,0)

Page 73: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

63

Chart FX 프로그래머 가이드

데이터 표시 요소사용자 정의하기

이 장에서 다뤄지는 주제들

점 크기와 모양 원뿔 모양과 원통 모양

데이터 표시 요소 의 부피 선 스타일과 폭

Page 74: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

64

Page 75: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

65

데이터 표시 요소(Markers) 점 크기와 형태 제어하기 . 연결된 점(선, 분산, 곡선, 극좌표 등)들을 표시하는 차트를 생성할 때 다음과 같이 MarkerSize 프로퍼티를 사용해서 이러한 데이터 표시 요소들의 크기를 변화시킬 수 있습니다(이 프로퍼티는 기본적으로 1과 20사이의 값을 가져야 합니다):

ChartFX1.MarkerSize = 6

데이터 표시 요소의 형태는 MarkerShape 프로퍼티에 의해 제어됩니다. 예를 들어서 프로그램을 작성해서 데이터 표시 요소로 삼각형을 할당하려 한다면 다음처럼 코드를 작성합니다:

ChartFX1.MarkerShape = MK_TRIANGLE

다음처럼 데이터 표시 요소를 제거할 수도 있습니다: ChartFX1.MarkerShape = MK_NONE

개별적인 데이터 표시 요소 크기와 형태를 설정하기 데이터 표시 요소와 관련된 모든 프로퍼티들은 Series 객체에 의해서 제공됩니다. 이것은 차트 내에 포함된 다양한 시리즈에 대해 개별적인 설정 사항을 부여할 수 있도록 해줍니다. 예를 들어서 두개의 시리즈가 포함되어 있는 차트에서 한 개는 삼각형의 점으로 표시하고 다른 하나는 점을 표시하지 않고 표현하려면 다음처럼 합니다:

ChartFX1.Series(0).MarkerShape = MK_NONE ChartFX1.Series(1).MarkerShape = MK_TRIANGLE

원뿔 모양과 원통 모양. Chart FX는 막대, 육각형 또는 Hi-Lo-Close 차트를 원뿔형이나 원통형으로 변환할 수 있습니다. 모든 시리즈에 대해서도 적용할 수 있고 개별적인 시리즈에 대해서도 적용할 수 있습니다. 이것은 원뿔 모양과 결합된 막대(bar)로 나타낼 수 있다는 것을 의미합니다. 원뿔 형태와 원통 형태와 관련된 프로퍼티는 CylSides입니다. 이 프로퍼티는 일반 프로퍼티(general property)로 나타나며 Series Object에 의해서도 표현됩니다. 이것은 전역 설정(즉, 모든 시리즈에 대해 적용되는)을 가능하게 하거나 아니면 차트내의 특정 시리즈들에만 제한적으로 영향을 미치도록 할 수 있습니다. 이 프로퍼티 설정 사항은 원하는 형태의 입체가 가지게 될 면의 수를 양수(원통형)나 음수(원뿔형)값으로 나타낸 값을 가지게 됩니다. 예를 들어서 두개의 시리즈를 가지는 막대 차트를 나타낼 때 첫번째 시리즈가 팔각 기둥 모양의 원통형 모양으로 표시되고 두번째 시리즈가 육각 원뿔 모양으로 표시되도록 표현하고 싶으면 다음과 같이 할 수 있습니다:

Chart1.Series(0).CylSides = 8 Chart1.Series(1).CylSides = -6

데이터 표시 요소의 부피 제어

Page 76: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

66

막대 차트를 만들 때 데이터 표시 요소(즉 막대)는 할당된 공간의 특정 부분만 차지하게 됩니다(이것은 눈금 사이의 공간입니다). 여기에 관련된 Volume 프로퍼티는 다음처럼 설정할 수 있습니다:

Chart1.MarkerVolume = 100 라인 스타일과 폭 설정 . 데이터 표시 요소와 관련된 선(직선, 곡선, 극선(polar) 등)을 가지고 있는 차트를 사용할 때 LineStyle과 LineWidth 프로퍼티를 사용해서 각 선에 대해서 스타일과 폭을 제어할 수 있습니다. 이러한 프로퍼티들은 Series 객체에 의해서 지원되고 역시 한 차트 내의 모든 시리즈들에 대해 전역 사용을 할 수도 있고 개별적인 시리즈들에 대해 사용 할 수도 있습니다. Note: CHART_SOLID이외의 선 스타일을 사용할 때 폭은 1 픽셀이어야 합니다. 이러한 제한은 윈도우 98/95에서만 의미가 있습니다. 원도우 NT는 다른 형태의 라인 스타일과 폭을 지원하지 않습니다. 예를 들어, 만일 2D 선 차트를 나타낼 때 표시될 모든 시리즈들을 점선으로 표시하려면 코드를 다음처럼 작성합니다:

ChartFX1.LineStyle = CHART_DOT

또 두개의 시리즈가 있는 차트를 나타내려고 할 때 첫번째 시리즈를 점선으로 표시하고 다른 것을 대시(-)로 나타내려면 다음과 같이 Series 객체로써 지원되는 동일한 프로퍼티들을 사용할 수 있습니다:

ChartFX1.Series(0).LineStyle = CHART_DOT ChartFX1.Series(1).LineStyle = CHART_DASHED

프로그램을 통해서 파이 조각 나누기. 파이 차트를 표시하려고 할 때 프로그램을 통해서 조각을 나눌 필요가 있을 수 있습니다(즉, 여러분의 어플리케이션이 항상 먼저 가장 큰 파이 조각을 선택하고 나머지로부터 이것을 작은 것으로 나누게 됩니다). 이러한 일은 SeparateSlice 프로퍼티를 통해서 할 수 있습니다. 이러한 프로퍼티는 나누려는 조각(점)의 인덱스를 취하고 파이의 중심으로부터 측정된 분리 거리를 받아서 반지름의 몇 퍼센트로 나타날지를 표시합니다. 예를 들어서 다음과 같이 이 프로퍼티를 100으로 설정하면 한 부분의 꼭지점을 파이의 가장자리에 두게 됩니다:

Chart1.SeparateSlice(1) = 100

Page 77: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

67

Chart FX 프로그래머 가이드

3D 효과

이 장에서 다뤄지는 주제들

차트를 3D 모드에서 표현하기 차트 회전시키기

차트 겹치기 원근 효과

3D 깊이

Page 78: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

68

Page 79: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

69

3D 효과 3D 모드에서 차트 표시하기. 3차원에서 차트를 표시하려면 다음과 같이 Chart3D 프로퍼티를 사용합니다:

ChartFX1.Chart3D = TRUE

이 프로퍼티를 설정하고 나면 회전, 차트 겹치기, 원근 효과 등과 같은 다양한 3차원 설정 사항을 사용할 수 있게 됩니다. 프로그램을 통해서 차트 회전 시키기. Chart FX는 최종 사용자에게 차트를 회전시키는 가장 앞선 방법을 제공하지만 개발자가 프로그램을 통해서 이러한 기능을 이용할 수도 있습니다. 이렇게 실시간(타이머와 함께 사용)에 차트를 회전시키는 옵션 사항을 프레젠테이션에 효과적으로 사용할 수도 있습니다. 차트를 프로그램을 통해서 회전시키기 위해서는 두개의 프로퍼티를 사용해야 합니다: View3D, AngleX /AngleY 프로퍼티가 그것입니다. 먼저 View3D 프로퍼티를 TRUE로 설정합니다:

Chart1.View3D = TRUE

그 후 다음과 같이 3차원 각을 설정합니다: Chart1.AngleX = 45 Chart1.AngleY = 60

Note: X 축 회전 각도는 [0, 90] U [270, 360) 범위에 있어야 하고 Y 축 회전 각도는 [0, 360)에 있어야 합니다. 3차원 공간의 폭 설정. 모든 3차원 차트는 3차원 공간을 둘러싸는 벽 내에 포함되고 이 폭은 WallWidth 프로퍼티에 의해서 제어 가능합니다. 디폴트 폭은 8 픽셀입니다. 만일 이 3차원 벽을 평평하게 하고 싶으면 다음처럼 이 값을 1로 설정합니다:

Chart1.WallWidth = 1

차트 겹치기 겹쳐진 차트를 표시 할 때 각 시리즈는 Z축에 자신의 고유한 위치를 가지게 될 것입니다. 이것은 만일 세 개의 시리즈로 이루어진 차트를 나타낼 필요가 있고 이 프로퍼티가 설정되어 있으면 각 데이터 시리즈는 데이터의 한 행을 차지하게 되고 세 개의 열(Z축에 겹쳐있는)이 차트에 존재할 것임을 의미합니다. 겹쳐 있는 3차원 차트를 만들기 위해서 다음과 같이 Cluster 프로퍼티를 사용합니다:

ChartFX1.Cluster = TRUE

영역 차트(Area Chart)는 나란하게 서로 다른 시리즈들을 표현할 다른 방법이 없기 때문에 항상 겹쳐져 있는 상태로 나타납니다. 그러나 막대 차트의 경우에는 나란히 막대들을 나타낼 수 있고 Z축에 겹쳐져서 나타나지는 않습니다. 차트의 원근 효과 설정하기

Page 80: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

70

Perspective 프로퍼티의 값은 앞쪽에 표시되는 차트의 크기와 뒤쪽에 표시되는 차트의 크기의 비를 설정합니다. 이 프로퍼티는 0(디폴트값)에서 100까지의 값을 갖습니다. 예를 들어 50%의 원근 효과를 나타내려면 다음처럼 Perspective프로퍼티를 설정합니다:

ChartFX1.Perspective = 50

중요한 정보: 원근 효과를 차트에 적용하기 위해서는 차트가 3차원(Chart3D 프로퍼티) 모드에 있어야 하고 the View3D와 Cluster 프로퍼티도 TRUE로 설정되어야 합니다. 3D 깊이 제어하기 3D 깊이는 데이터 표시 요소의 폭(X축에 있는 두개의 이웃한 점들 간의 거리)에 대한 비율입니다. 예를 들어: 100%는 데이터 표시 요소가 데이터 표시 요소의 폭과 동일한 깊이를 가짐을 의미함 200%는 데이터 표시 요소가 폭의 두 배에 달하는 깊이를 가짐을 의미함. 이 설정 사항을 제어하는 프로퍼티는 View3DDepth입니다.

Page 81: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

71

Chart FX 프로그래머 가이드

특수한 차트 타입

이 장에서 다뤄지는 주제들

XY 그래프 다중 유형 차트 다중 중첩 차트

Gantt 차트 재무 차트

곡선 및 경계선 그래프 버블 차트

Page 82: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

72

Page 83: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

73

XY 그래프 XY 그래프는 수치들 간의 관계나 수치들로 표시된 몇 개의 시리즈들간의 관계의 정도를 표현하거나 한 그룹의 수를 X나 Y축의 시리즈로 할당해서 점으로 표시하는 차트입니다. XY 그래프의 각 점은 두개의 좌표에 의해 (x,y)로 표현되기 때문에 적절하게 수치 데이터를 전달할 수 있도록 부가적인 함수 호출이 필요합니다. ValueEx와 XValueEx 프로퍼티를 사용해서 분산 그래프로 데이터 전달하기 XY 그래프로 데이터를 전달하는 일은 OpenDataEX 메소드를 두 번 호출함으로써 이루어 집니다(한번은 COD_VALUES나 Y 좌표값과 같이, 또 한번은 COD_XVALUES나 X 좌표값과 같이). 그리고 마지막으로 각점에 대해 적절한 Y값을 할당하기 위해서 ValueEx 프로퍼티를 사용하고 X값을 할당하기 위해서 XValueEx 프로퍼티를 사용합니다. 소스 코드는 다음처럼 적용할 수 있습니다: ' "nSeries" 시리즈와 "nPoints” 점들을 나타내는 VALUES 채널 열기 ChartFX1.OpenDataEx COD_VALUES,nSeries,nPoints ChartFX1.OpenDataEx COD_XVALUES,nSeries,nPoints ' 데이터를 설정하기 위한 코드 For i = 0 To nSeries-1

For j = 0 To nPoints –1 ChartFX1.ValueEX(i,j) = 'Y Coordinate Value ChartFX1.XValueEX(i,j) = 'X Coordinate value Next j

Next i ' VALUES와 XVALUES 채널을 닫음 ChartFX1.CloseData COD_VALUES ChartFX1.CloseData COD_XVALUES 분산 그래프에 Series 객체로 데이터 전달하기 XY 그래프에 데이터를 전달하기 위해서 Series 객체에 있는 YValue와 XValue 프로퍼티를 사용할 수도 있습니다: ' "nSeries" 시리즈와 "nPoints” 점들을 나타내는 VALUES 채널 열기 ChartFX1.OpenDataEx COD_VALUES,nSeries,nPoints ChartFX1.OpenDataEx COD_XVALUES,nSeries,nPoints ' 데이터를 설정하기 위한 코드 For i = 0 To nSeries-1

For j = 0 To nPoints –1 ChartFX1.Series(i).YValue(j) = 'Y Coordinate Value ChartFX1.Series(i).XValue(j) = 'X Coordinate value Next j

Next i ' VALUES와 XVALUES 채널을 닫음 ChartFX1.CloseData COD_VALUES ChartFX1.CloseData COD_XVALUES Notes:

Page 84: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

74

Chart FX는 분산 차트(또는 그래프)에 있는 시리즈의 개수를 제한하지 않습니다. 이것은 다중 시리즈를 갖는 분산 차트를 생성할 수 있다는 것을 의미합니다. 또한 Axis 객체에 의해 표현되는 모든 프로퍼티들은 이러한 타입의 차트에 적용가능합니다.

XY 그래프에서 X축은 Axis 객체의 프로퍼티들로 특성들을 설정할 수 있는 수치축(범주축, 또는 주축이 아니라)이 될 수 있다는 것을 명심해야 합니다.이것은 범례 대신에 X축에 대해 배율, 최대,최소 및 다른 수치값들을 설정할 수 있다는 것을 의미합니다. 다음 유형의 차트들은 X 값을 처리할 수 있습니다: 선(Lines), 곡선형(Curve)*, 분산형(Scatter), 영역형(Area)*, 계단 직선형(Step Lines), 표면형(Surface), 버블형(Bubble), 경계선형(Contour)*, 곡선 영역형(Curve Area). * X값이 오름차순으로 정렬되어 전달되어야함. XY 그래프. FAQ (Frequently Asked questions).

Page 85: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

75

XY 그래프로 어떤 차트 유형이 적용되나요?

가장 일반적인 XY 그래프의 형태는 분산형(즉 점으로 표시되는) 차트이지만 Chart FX는 데이터 값을 x,y 좌표로써 표시할 때 다음의 차트 형태로 변경할 수 있도록 하고 있습니다:

선형(Line), 곡선형(Curve), 영역형(Area), 계단 직선형(Step Lines), 표면형(Surface),버블형(Bubble), 경계선 & 곡선 영역형(Contour & Curve Area) 이것은 만일 XY 그래프가 연결된 직선들을 나타내기를 원한다면 Lines에 대해서 Gallery 프로퍼티를 변경하기만 하면 된다는 것을 의미합니다.

데이터 컨트롤이나 ADO에게 어떻게 분산 그래프를 그리고 있는 것을 알립니까?

일반적으로 어떤 데이터 컨트롤에 대해 차트가 바운드(bound) 되어 있다면 또는 데이터를 가져와서 차트를 그릴 때 ADO (또는 text files)를 사용한다면 Chart FX는 XY 그래프 형태가 아닌 일반적인 차트 형태를 작성하기 바라는 것으로 간주합니다. 이것은 XY 그래프를 위한 X와 Y 좌표를 포함하고 있는 데이터베이스에 연결하고 있을 때 Chart FX가 기본적으로 XY 그래프 대신에 두개의 시리즈(즉 X,Y)를 가진 차트를 생성한다는 것을 의미합니다.

이러한 기본적인 작동은 DataType 프로퍼티에 의해서 변경될 수 있습니다. 예를 들어서 다음과 같은 SQL 문장을 생각해 보면:

SELECT YValue,XValue FROM MyTable

DataType 프로퍼티를 다음과 같이 설정할 수 있습니다: ChartFX1.DataType(0) = CDT_VALUE ChartFX1.DataType(1) = CDT_XVALUE 이렇게 함으로써 Chart FX가 XY 그래프를 그리기 위해 적절한 정보를 가져 올 수 있도록 합니다.. Note: DataType 프로퍼티는 차트에 ADO Resultset을 할당하기 전에 설정되어야 합니다.

점 표시 요소와 같은 색으로 선을 표시하도록 할 수 있나요?

그렇습니다. Chart FX가 검은색 대신에 점을 표시하는 요소와 같은 색으로 표시하도록 하기 위해서 TypeMask 프로퍼티를 다음처럼 사용할 수 있습니다:

Chart1.TypeMask = Chart1.TypeMask Or CT_COLORLINE

분산 그래프에서 서로 다른 점 표시 요소를 사용할 수 있나요?

그렇습니다. Series 객체에 의해 지원되는 MarkerShape 프로퍼티를 참조하시기 바랍니다.

분산 차트에서 점들을 강조하는 방법

Page 86: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

76

예를 들어 데이터 값 중에 어떤 한계점이 존재하고 이 한계점 이상의 값을 가지는 점들을 강조하고 싶을 때 이러한 방법을 사용할 수 있습니다. 여기에 대한 해결 방안은 단지 분산 차트에만 적용되는 것은 아니고 Chart FX의 모든 종류의 차트들에 적용 가능합니다. 몇 가지 옵션이 존재합니다:

한계나 어떤 범위를 강조하기 위해서는 각각 Chart FX의 상수 표시선과 컬러 줄무늬 특성을 사용합니다.

사각형이나 이와 유사한 도형 내에 포함되어 있는 점들을 강조하기 위해서는 Chart FX의 차트 도형의 사용자 설정 특성을 사용합니다.

어떤 한계 이상의 값을 나타내는 점들의 색깔도 변경할 수 있습니다. 이렇게 하기 위해서는 차트내의 각 점에 대해서 다른 색들을 지정하도록 Chart FX에게 지시할 수 있습니다. 다음과 같은 코드를 작성합니다:

‘Chart FX에게 각 데이터 표시 요소(점)가 각기 다른 색을 가질 것이라는 것을 알리기 위해서 먼저 MultipleColors 프로퍼티를 설정해야 합니다(이 경우, 한계 이상의 값에 대해서만 색을 변경하고 나머지는 이전의 색을 그대로 사용하는 것으로 간주합니다.)

Chart1.MultipleColors = TRUE

‘다음에 COD_COLORS와 차트에게 넘겨줄 색의 개수로 통신 채널을 엽니다(이 경우, 두개의 색상을 지정합니다. 하나는 특정 한계를 넘는 점들을 위한 것이고 다른 하나는 나머지 점들에 대한 것입니다)

Chart1.OpenDataEx COD_COLORS, 2, 0 ‘모든 점들의 값을 확인하고 그 점들의 색을 Color 프로퍼티를 사용해서 할당합니다

nTotalPoints=Chart1.nValues For j=0 to (nValues-1)

if (Chart1.Value(j)>=MyLimit) ‘한계 이상의 값을 가지는 점들을 빨간색으로

Chart1.Color(j) = RGB(255,0,0) else ‘ 한계 이하의 값을 가지는 점들을 파란색으로 Chart1.Color(j) = RGB(0,0,255) endif

Next j Chart1.CloseData COD_COLORS

다중 유형 차트 Chart FX의 가장 강력한 특징 중 하나가 다중 유형 차트라고 할 수 있습니다. 이러한 차트들은 차트 내에 포함되어 있는 시리즈들에 각각 다른 차트 유형을 적용할 수 있도록 합니다. Chart FX의

Page 87: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

77

모든 차트 유형들이 ‘다중 유형’ 차트를 생성하기 위해서 결합할 수는 없고 이러한 옵션을 사용해서 단지 사용 가능한 차트 유형 집합 중 특정 부분 집합만이 이러한 차트를 생성하는데 협력할 수 있습니다. 만일 하나 이상의 시리즈를 가지는 차트를 생성하려고 하면 차트 내의 각 시리즈에 대해서 각기 다른 유형을 적용시키기 위해서 Series 객체의 Gallery 프로퍼티를 사용할 수 있습니다. 예를 들어 차트내에 세개의 시리즈를 가지고 첫번째 시리즈가 막대형이 되도록 하고 둘째 시리즈를 곡선형으로 그리고 세번째를 영역형으로 하려고 한다면 다음과 같은 코드를 생각해 볼 수 있습니다: ChartFX1.Series(0).Gallery = BAR ChartFX1.Series(1).Gallery = CURVE ChartFX1.Series(2).Gallery = AREA 모든 다중 유형 차트들은 2차원/3차원 지원, 회전 기능, 마우스 감지 기능등을 지원합니다. 중요한 정보: MultiType 프로퍼티는 시리즈의 배열이기 때문에 OpenDataEX 메소드를 사용해서 차트 내의 시리즈의 개수를 정의한 후에 설정될 수 있습니다. 차트 내에 모든 시리즈들에 특정 차트 유형을 적용할 때 같은 이름(Gallery)에 대해서 General 프로퍼티가 존재합니다. 따라서 다중 유형 차트를 작성할때는 Series 객체를 참조하는데 조심해야 합니다. 예를 들어: ChartFX1.Gallery = LINES ' 차트 내의 모든 시리즈에 대해서 선(line) 유형을 적용 ChartFX1.Series(0).Gallery = LINES ‘ 첫번째 데이터 시리즈를 선 유형으로 바꿈. 다중 유형 차트 예:

다중 중첩 차트 대부분의 차트 작성 도구는 다양한 모드에서 막대 차트와 영역 차트를 중첩 시킬 수 있도록 하고 있습니다. 가장 일반적인 형태는 정규적인 중첩 형태나 100% 중첩 차트입니다. Chart FX는 이러한 일반적인 유형 뿐만 아니라 차트 내에 다른 종류의 시리즈들이 각기 다른 막대 차트나 영역 차트의 그룹으로 묶여서 제시될 수도 있는 다중 중첩 차트를 제공합니다.

Page 88: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

78

만일 어떤 차트 내에서 모든 시리즈들을 중첩시키기를 원한다면 다음과 같이 Stacked 일반(general) 프로퍼티를 사용할 수 있습니다. If you want to stack all series in the chart, you can use the Stacked general property as follows:

‘ 정규 중첩 형태 ChartFX1.Stacked = CHART_STACKED ‘ 또는 100% 중첩 ChartFX1.Stacked = CHART_STACKED100

이 Stacked 프로퍼티는 Series 객체에 의해서 접근되고 차트내의 특정 시리즈에 대해 적용됩니다. Series 객체의 Stacked 프로퍼티를 조작할 때는 기존의 중첩 유형 시리즈(영역형이나 막대형) 위에 해당 시리즈를 중첩 시키도록 지시하게 됩니다. 예를 들어 다음의 코드는 다른 유형의 중첩 그룹들 위에 곡선형을 중첩 시킴으로써 다중 중첩 차트를 생성합니다:

‘2개의 막대형과 한 개의 곡선형 생성 ChartFX1.Series(0).Gallery = BAR ChartFX1.Series(1).Gallery = BAR ChartFX1.Series(1).Stacked = True ' 0 의 위에 ChartFX1.Series(2).Gallery = BAR ChartFX1.Series(3).Gallery = BAR ChartFX1.Series(3).Stacked = True ' 2 의 위에 ChartFX1.Series(4).Gallery = BAR ChartFX1.Series(4).Stacked = True ' 3 의 위에 ChartFX1.Series(5).Gallery = CURVE ' 배율 조정 ChartFX1.RecalcScale

이 코드는 다음의 차트를 그립니다:

Page 89: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

79

Gantt 차트 Gantt 차트는 특정 시간 동안의 활동을 추적하는데 일반적으로 쓰이는 차트입니다. Chart FX에서 적은 코드를 작성하고도 다음과 같은 Gantt 차트를 만들 수 있습니다:

Gantt 유형 설정 Gantt 유형 차트를 생성하는 첫번째 단계는 다음과 같이 Gallery 프로퍼티에 GANTT 타입을 적용하는 것입니다:

ChartFX1.Gallery = GANTT

이 스타일을 지정할 때 축이 이동할 것이라는 것을 알아야 합니다. X 축(주축)은 세로로 그려지고(왼쪽) Y축(수치축)은 차트의 바닥에 그려집니다. 일반적인 경우에 왼쪽에 나타나던 Y축에 대하여 설정한 모든 프로퍼티들이 바닥의 축에 영향을 미칠 것이기 때문에 혼동을 줄 수 있습니다. 그리고 GANTT 유형은 표시 영역에서 수평 막대로 표시됩니다. Gantt 차트에 데이터 전달 Gantt 차트에 전달해야만 하는 두개의 변수가 있습니다: Y축(바닥)의 데이터 종류에 따라서 어디서 막대를 그리기 시작할 것인지와 어디서 끝나는지를 결정해야 합니다. 이것은 Y축에 대해 최소 0, 최대 200을 지정했다면 막대의 시작점 값과 끝점 값은 숫자여야 한다는 것을 의미합니다. 다른 예로, 날짜로 최대 최소를 지정했다면 막대의 값은 Y축의 유형에 맞추기 위해서 역시 날짜값으로 지정이 되어야 합니다. Gantt 차트에 데이터를 전달하는데 관여하는 프로퍼티는 ValueEX 와 IniValueEX 프로퍼티이고 이것들은 OpenDataEX 와 CloseData 메소드와 연계되어서 사용되어야 합니다.

Page 90: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

80

다음의 예제는 수치 값을 가지는 Y축에 대해서 Gantt 차트에 어떻게 값을 지정할 수 있는지를 보여 줍니다. 데이터를 차트에 보내기 전에 어떻게 Y축이 최대/최소 값으로 설정되는지 살펴보기 바랍니다:

'먼저 Y축에 최대/최소 지정 ChartFX1.Axis(AXIS_Y).Min = 0 ChartFX1.Axis(AXIS_Y).Max = 200

'이제 Gantt 차트에 대해 ValueEX와 IniValueEX 사용 가능. 막대 세개를 가정 ChartFX1.OpenDataEX COD_VALUES,1,3 ChartFX1.OpenDataEX COD_INIVALUES,1,3

ChartFX1.IniValueEX(0,0) = 10 ChartFX1.ValueEX(0,0) = 30 ChartFX1.IniValueEX(0,1) = 40 ChartFX1.ValueEX(0,1) = 80 ChartFX1.IniValueEX(0,2) = 100 ChartFX1.ValueEX(0,2) = 180

ChartFX1.CloseData COD_VALUES ChartFX1.CloseData COD_INIVALUES

다음의 예제는 날짜 값을 가지는 Y축에 대해서 Gantt 차트에 어떻게 값을 지정할 수 있는지를 보여 줍니다. ValueEX 와 IniValueEX 프로퍼티를 사용해서 어떻게 Y축이 최대/최소 값으로 설정되는지 살펴보기 바랍니다:

Dim Today As Date Today = Now()

'먼저 Y축에 최대/최소 지정 ChartFX1.Axis(AXIS_Y).Min = Today ChartFX1.Axis(AXIS_Y).Max = Today + 120 '3 months

'이제 Gantt 차트에 대해 ValueEX와 IniValueEX 사용 가능. 막대 세개를 가정 ChartFX1.OpenDataEX COD_VALUES,1,3 ChartFX1.OpenDataEX COD_INIVALUES,1,3

ChartFX1.IniValueEX(0,0) = Today ChartFX1.ValueEX(0,0) = Today +10 ChartFX1.IniValueEX(0,1) = Today + 30 ChartFX1.ValueEX(0,1) = Today + 80 ChartFX1.IniValueEX(0,2) = Today+90 ChartFX1.ValueEX(0,2) = Today+110

ChartFX1.CloseData COD_VALUES ChartFX1.CloseData COD_INIVALUES

좌표축이 차트의 바닥에 표시되어 있을 때 축을 위로 올리는 방법

Page 91: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

81

위의 그림에서 나타난 차트를 만들기 위해서는 다음의 코드처럼 Chart FX의 부(副) Y축 기능을 사용해서 데이터 시리즈를 부 Y축에 할당했고 이것의 설정 사항(최대/최소 등)을 따랐으며 주 Y축의 Visible 프로퍼티는 FALSE로 설정 되었습니다:

'먼저 첫번째 시리즈를 부 Y축에 할당

ChartFX1.Series(0).YAxis = AXIS_Y2 '다음에 부 Y축의 최대, 최소, 스텝 등을 설정해서 차트가 동일한 방법으로 표시되도록 함

'마지막으로 주 Y축을 차트에서 숨김 ChartFX1.Axis(AXIS_Y).Visible = FALSE

Activity 레이블 할당 Axis 객체의 Legend 프로퍼티나 Label 프로퍼티를 사용해서 Activity 레이블은 차트의 다른 범례들처럼 설정됩니다 독립적인 색상에 대해서 먼저 Chart FX에게 각 데이터 표시 요소(점)들이 각자의 색을 가질 것이라는 것을 알리기 위해서 MultipleColors 프로퍼티를 설정해야 합니다:

Chart1.MultipleColors = TRUE

그 후, COD_COLORS와 적용할 색의 종류와 함께 통신 채널을 엽니다(이 경우는 2개의 색이 지정되고 막대를 표시하는 색은 빨간색이고 나머지는 파란색이 할당 됩니다).

Chart1.OpenDataEx COD_COLORS, 2, 0 ‘모든 점들의 값을 확인하고 Color 프로퍼티를 사용해서 각각의 색을 할당 nTotalPoints=Chart1.nValues For j=0 to (nValues-1)

if (Chart1.Value(j)>=MyLimit) ‘한계 이상의 값은 빨간색으로

Chart1.Color(j) = RGB(255,0,0) else ‘ 한계 이하의 값은 파란색으로 Chart1.Color(j) = RGB(0,0,255) endif

Next j Chart1.CloseData COD_COLORS

재무 차트

Page 92: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

82

중요한 정보: 재무 차트에 관심이 있다면 Renko, Kagi, 현금 흐름, Three Line Break 등의 특수한 유형을 가지는 재무 차트를 생성하고 처리할 수 있는 차트 FX 재무 에디션을 소프트웨어 FX에서 지원하는지에 대한 정보를 얻을 수 있습니다. 이 확장판에 대한 보다 자세한 정보는 http://www.softwarefx.com에서 얻을 수 있습니다.

재무 차트 표준 차트 유형의 부분으로서 Chart FX는 세가지 유형의 재무 차트를 제공합니다: Hi-Lo-Close, Open-Hi-Lo-Close, 촛대형(Candlestick) 등이 그것입니다. 재무 차트들은 다중 유형 차트도 지원합니다. 따라서 직선이나 도형(막대)으로 이루어진 차트와 결합된 Open-Hi-Lo-Close 차트를 결합해서 나타낼 수 있습니다(이후의 부분에서 예제를 참조바랍니다). 재무 차트에 데이터를 전달하는 방법은 다른 차트들과 동일합니다: 통신 채널을 열고(OpenDataEx 메소드), 수치 데이터를 넘기고 마지막으로 통신 채널을 닫습니다. 각각의 데이터 표시 요소는 몇 가지의 값으로 정의됩니다. Hi-Lo-Close 차트에 대해서는 세 개의 시리즈들이 필요하고 Open-Hi-Lo-Close에 대해서는 네 개의 시리즈가 필요합니다. 마지막으로 Chart FX에게 어떤 수치 값을 Open, Hi, Low, Close에 대입할 것인지를 알려 주기 위해서 ValueEX로 특수한 상수를 넘겨줄 필요가 있습니다. 재무 차트를 작성하는 첫번째 단계는 디자인 시나 실행 시에 처리할 차트의 종류를 지정하기 위해서 다음과 같이 Gallery 프로퍼티를 설정합니다: ChartFX1.Gallery = HILOWCLOSE [or OPENHILOCLOSE Or CANDLESTICK] Open-Hi-Lo-Close 차트에 데이터를 전달하기 위해 다음과 같이 ValueEX 프로퍼티에 적절한 상수를 대입해 줍니다: ' 네 개의 시리즈(OPEN, HIGH,LOW , CLOSE)와 nPoints 라는 점들을 표시하는 VALUES 채널을 열기 ChartFX1.OpenDataEx COD_VALUES,4,nPoints ' 데이터를 설정하는 코드 For j = 0 To nPoints –1

ChartFX1.ValueEx(OHLC_LOW,j) = Low value! ChartFX1.ValueEx(OHLC_OPEN,j) = Open value! ChartFX1.ValueEx(OHLC_CLOSE,j) = Close value! ChartFX1.ValueEx(OHLC_HIGH,j) = High value!

Next j ' VALUES 채널을 닫음 ChartFX1.CloseData COD_VALUES

Page 93: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

83

다중 유형 재무 차트 보통 재무 차트는 다른 적절한 정보(예를 들어 주식 거래량)를 나타내기 위해서 다른 차트와 결합되어서 나타납니다(예를 들어 선 이나 막대형). Series 객체에 의해 제공되는 Gallery 프로퍼티는 이런 형태로 만들기 위해서 사용됩니다. 재무 차트와 결합되어 사용될 수 있는 다른 Chart FX의 특성들은 ‘이중 Y 축(double-y axis)’인데 예를 들어 주식 거래량 등은 주식의 가격에만 변화하는 것이 아니라 다른 인자에 의해서도 변하는 것을 나타낼 필요가 있기 때문입니다. 다음의 예제에서 막대 차트와 이와 관련 있는 시리즈를 부 Y축에 할당하여 Hi-Lo-Close 차트를 생성하는 것을 보여 줍니다: ' 네 개의 시리즈(OPEN, HIGH,LOW , CLOSE)와 nPoints 라는 점들을 표시하는 VALUES 채널을 열기 ChartFX1.OpenDataEx COD_VALUES,5,nPoints ' 데이터를 설정하는 코드 For j = 0 To nPoints –1

‘First three series contain Hi-Lo-Close Information ChartFX1.ValueEx(OHLC_OPEN,j) = Open value! ChartFX1.ValueEx(OHLC_HIGH,j) = Hi value! ChartFX1.ValueEx(OHLC_LOW,j) = Low value! ChartFX1.ValueEx(OHLC_CLOSE,j) = Close value! ‘Fifth Series contains Volume information ChartFX1.Value(4,j) = Volume Traded in day!

Next j ' VALUES 채널을 닫음 ChartFX1.CloseData COD_VALUES ‘모든 데이터는 표시되었고 막대 차트를 생성하기 위해서 Gallery 프로퍼티를 설정 Chart1.Series(4).Gallery = BAR ‘이 차트를 부 Y축에 할당 Chart1.Series(4).YAxis = AXIS_Y2 표면형 및 경계선형 차트

Page 94: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

84

Chart FX에서 제공하는 또 다른 차트 유형은 표면형과 경계선 차트 입니다. 표면형 차트는 보통 3차원으로 표시됩니다. 시리즈의 개수는 일반적으로 차트의 깊이(depth)를 결정하는 데 비해 여기서는 차트의 넓이를 결정합니다.예를 들어 10개의 점을 가지고 한 시리즈당 10개의 점이 할당되고 모두 0으로 설정된 3차원 표면형 차트를 표시하고 싶다면 다음과 같은 모습으로 나타날 것입니다:

그림에서 표시된 것과 같이 표면으로 그려지도록 하기 위해서 어떤 데이터 점이 변경되어야 하는지를 지시할 수 있습니다. 예를 들어 그림에서 강조된 점과 시리즈에 대해 값을 변경하면 차트는 다음처럼 나타납니다:

위의 그림에서와 같은 차트를 얻기 위해서는 다음과 같은 코드를 작성합니다: ChartFX1.Gallery = SURFACE '(첫번째 그림)의 모든 점들을 0의 값으로 할당 ChartFX1.OpenDataEx COD_VALUES,10,10 For i = 0 to 9

Page 95: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

85

For j = 0 to 9 ChartFX1.ValueEx(i,j) = 0 Next j

Next i '시리즈 2의 점 2의 값을 9로 바꿈 ChartFX1.ValueEX(1,1) = 9 'Now let's change Series 5, Point 9 to a value of 20 ChartFX1.ValueEX(5,9) = 20 ’시리즈 7의 점 5의 값을 15로 바꿈 ChartFX1.ValueEX(7,5) = 15 ChartFX1.CloseData COD_VALUES

높이에 따른 색 처리 표면형 차트에서 가장 중요한 설정 사항 중 하나는 각 데이터 점들에 따른 다양한 색깔로 나타내어서 차트의 높이를 다르게 보이도록 하는 것입니다. 이미 값들이 정해져도 차트에서 나타나는 높이의 세부적인 내용은 선택된 y축의 범위(-20,20)에 대해 충분하지 않다는 것을 살펴볼 수 있습니다. 필요한 것은 각 점의 상대적인 높이에 따라 더 많은 색을 사용해서 이것을 나타내는 것입니다. 이렇게 하기 위해서는 표면형 차트에서 얻고자 하는 세부 레벨을 얻기 위해서 주 Y축의 스텝을 변경하면 됩니다.예를 들어 위의 그림에서 스텝은 10으로 설정되어 있어서 표면 차트가 충분한 색을 표현하지 못하게 되어 있습니다. 여기서 만일 다음처럼 스텝을 2로 한다면: ChartFX1.Axis(AXIS_Y).Step = 2 표면형 차트는 각 값의 레벨에 따라서 더 많은 색으로 표현될 것입니다.

Page 96: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

86

자동 레이블 및 자동 배율 기능 대부분의 표면형과 경계선형 차트가 레벨을 표시하기 때문에 특정 배율 인자에 따라서 자동적으로 점들에 레이블을 붙여 주는 메소드를 포함시켰습니다. SetContourLabels 메소드는 Y축의 스텝을 부여해서 자동적으로 범례를 할당하는 일을 가능하게 해 줍니다. 0으로 설정되면 자동적으로 최적화된 형태로 범례가 나타나게 됩니다.

Note: 이 메소드를 호출할 때 Chart FX는 경계선형 차트의 각 레벨에 부여한 색을 표시하는 시리즈에 관련된 범례를 추가합니다. 차트 내에 이미 있던 시리즈에 대한 범례는 이 메소드를 호출함으로써 지워지게 됩니다. 또한 주 Y축에 설정된 스텝을 이 메소드에서 지정된 스텝으로 변경시킵니다.

다음과 같이 이 메소드를 호출할 때: ChartFX1.SetContourLabels 20 다음과 같이 경계선형 차트가 생성됩니다:

버블 차트

Page 97: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

87

X축이 없는 버블 차트 Chart FX에서 사용 가능한 첫번째 유형의 버블 차트는 두 개의 값으로 이루어진 집합에서 하나의 값은 방울형 데이터 표시 요소의 크기를 나타내고 있고 이 두 값을 비교해서 상대적인 크기를 표시하는 유형입니다. 데이터를 전달하기 위해서는 두개의 데이터 시리즈를 가진 차트를 설정하고 다음과 같이 Gallery 프로퍼티를 BUBBLE로 지정합니다:

ChartFX1.Gallery = BUBBLE

ChartFX1.OpenDataEx COD_VALUES,2,5 For j = 0 to 4

'방울형 데이터 표시 요소에 대해 y값을 포함하는 시리즈를 설정 ChartFX1.ValueEX(0,j) = 'Bubble Y Value '방울의 크기를 포함하는 시리즈를 설정 ChartFX1.ValueEX(1,j) = ' Bubble Size

Next j

ChartFX1.CloseData COD_VALUES

이렇게 설정하고 나면 버블 차트는 다음처럼 나타납니다:

X축과 함께 사용되는 버블 차트 이러한 버블 차트는 세 개 값들의 집합을 가지고 있고 그 중 하나는 방울형 데이터 표시 요소의 크기를 지시하고 이 세 개의 값들을 비교해서 나타내는 것입니다. 기본적으로 이러한 버블 차트들은 방울의 위치가 (x,y)좌표에 의해 결정되고 나머지 하나는 방울의 크기를 나타내기 때문에 XY 그래프와 매우 유사합니다.

Page 98: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

88

데이터를 전달하기 위해서 다음과 같이 XValueEx 프로퍼티로 x좌표를 지정하기 위한 부가적인 통신 채널을 열어야 합니다:

ChartFX1.Gallery = BUBBLE

ChartFX1.OpenDataEx COD_VALUES,2,5 ChartFX1.OpenDataEx COD_XVALUES,1,5 For j = 0 to 4

'방울형 데이터 표시 요소의 y값을 포함하는 시리즈를 설정 ChartFX1.ValueEX(0,j) = 'Bubble Y Value '방울형 데이터 표시 요소의 x값을 포함하는 시리즈를 설정 ChartFX1.XValueEX(0,j) = 'Bubble X Value '방울형 데이터 표시 요소의 크기를 포함하는 시리즈를 설정 ChartFX1.ValueEX(1,j) = ' Bubble Size

Next j

ChartFX1.CloseData COD_VALUES ChartFX1.CloseData COD_XVALUES

이러한 유형의 차트에 대해서 방울은 특정한 x축에 한정되지 않으며 XY 그래프가 제시된 이전의 chapter에서 설명한 대로 x축(수치 축)의 어느 곳에라도 표시될 수 있습니다. Volume 프로퍼티 효과 버블 차트를 생성할 때 Volume 프로퍼티는 크기가 이 프로퍼티에 의해 나누어 지기 때문에 버블 차트가 표시되는 방법에 특수한 효과를 부여할 수 있습니다. 예를 들어 Volume 프로퍼티가 50으로 설정되었다면 Chart FX는 데이터 표시 요소를 할당된 공간의 1/2에 해당하는 크기로 나타냅니다. 방울의 크기를 100으로 설정했다면 이 방울이 할당된 전체 공간을 차지할 것이라고 생각하기 쉽지만 이 경우에는 단지 할당된 공간의 1/2만 차지하게 됩니다. 유사하게 만일 Volume이 50으로 설정되어 있고 방울의 크기가 50으로 되어 있다면 방울은 할당된 공간의 1/4만 차지하게 됩니다. 환상적인 버블 차트 3차원 버블 차트를 생성하면 그림처럼 환상적인 조명 효과를 방울들에 부여하기 위해서 CylSides 프로퍼티를 설정할 수 있습니다:

Page 99: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

89

Chart FX 프로그래머 가이드

상수 표시선과 컬러 줄무늬

이 장에서 다뤄지는 주제들

상수 표시선의 예제 컬러 줄무늬의 예제

Page 100: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

90

Page 101: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

91

상수 표시선의 예제 상수 표시선(Constant line)은 차트 영역에서 정보를 강조해야할 필요가 있을 때 유용하게 사용할 수 있는 객체들 중 하나입니다.차트 내에서 어떤 한계나 특정 점들을 강조할 때 이 상수 표시선을 생성할 수 있습니다. 예를 들어 과학 어플리케이션에서 이 상수 표시선 객체를 위험 한계(alarm limit)를 강조하려는 목적으로 사용하거나 재무 어플리케이션에서 목표 가격이나 일시를 나타내기 위해 사용할 수 있습니다. 상수 표시선은 다음의 그림에서처럼 차트 영역의 어디에라도 그릴 수 있고 축의 특정 값에 관련되어 나타납니다:

모든 상수 표시선들은 색, 스타일, 관련된 축 등을 표시할 수 있는 ConstantLine객체와 여기 포함된 프로퍼티들에 의해 처리됩니다. 상수 표시선을 나타내기 위해 새 데이터 시리즈가 별도로 필요한 것은 아니고 레이블과 선 유형, 색상, 폭등만 설정해 주면 됩니다. 다음의 코드는 위의 그림에서 표현한 상수 표시선을 생성합니다. 차트에 포함될 상수 표시선의 수를 지정하기 위해서 OpenDataEX 메소드를 사용합니다:

ChartFX1.OpenDataEX COD_CONSTANTS,2,0

ChartFX1.ConstantLine(0).Value = 30 ChartFX1.ConstantLine(0).Color = RGB(255,0,0) ChartFX1.ConstantLine(0).Axis = AXIS_Y ChartFX1.ConstantLine(0).Label = "Alarm Limit 1" ChartFX1.ConstantLine(0).LineWidth = 2

ChartFX1.ConstantLine(1).Value = 8 ChartFX1.ConstantLine(1).Color = RGB(0,255,0) ChartFX1.ConstantLine(1).Axis = AXIS_X ChartFX1.ConstantLine(1).Label = "Limit 2" ChartFX1.ConstantLine(1).LineWidth = 3

ChartFX1.CloseData COD_CONSTANTS

Page 102: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

92

줄무늬 예제 Stripe 객체는 차트 영역의 정보를 강조할 때 매우 유용한 객체 입니다. 이것은 차트의 배경에 특정 값의 범위를 강조하는 컬러 프레임을 그려줍니다. 이 줄무늬(Stripe)는 사용자들이 축과 관련된 어떤 특정한 범위에 포함되는 데이터들을 쉽게 판별할 수 있도록 도와주는 기능을 합니다. 예를 들어 과학 어플리케이션에서 50과 80 사이의 범위의 점들을 사용자가 알기 쉽도록 표시하려고 하면 다음 그림처럼 나타낼 수 있습니다:

Stripe 객체와 이것의 프로퍼티들은 색상과 범위, 줄무늬와 관계된 축의 종류 등을 설정 받아서 컬러 줄무늬를 처리합니다. 범위 대신에 특정한 값을 강조하기 원한다면 상수 표시선 예제를 참조하시기 바랍니다. 다음의 코드는 위의 그림에 표시된 줄무늬를 생성합니다. 차트에 포함될 줄무늬의 수를 표시하기 위해 OpenDataEX 메소드가 사용되었습니다:

ChartFX1.OpenDataEX COD_STRIPES,2,0

ChartFX1.Stripe(0).From = 50 ChartFX1.Stripe(0).To = 80 ChartFX1.Stripe(0).Color = RGB(0,0,255) ChartFX1.Stripe(0).Axis = AXIS_Y

ChartFX1.Stripe(1).From = 3 ChartFX1.Stripe(1).To = 5 ChartFX1.Stripe(1).Color = RGB(0,255,0) ChartFX1.Stripe(1).Axis = AXIS_X

ChartFX1.CloseData COD_STRIPES

Page 103: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

93

Chart FX 프로그래머 가이드

파일 처리와 템플릿

이 장에서 다뤄지는 주제들

Import 메소드와 Export 메소드 유용한 정보

Page 104: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

94

Page 105: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

95

Import 메소드와 Export 메소드 Chart FX는 개발자나 최종 사용자가 다양한 포맷으로 작성된 차트 파일, 이미지, 데이터를 저장하기 위한 두개의 중요한 메소드(Import , Export)를 제공합니다. 또 Chart FX에는 외양(즉, 색상, 차트 종류, 스타일, 도구들에 대한 보이기 여부)을 저장해서 나중에 이러한 것을 코드를 다시 작성하지 않고 개별적인 차트에 그대로 적용할 수 있도록 하는 특이한 종류의 파일들을 지원하는데 이것을 ‘차트 템플릿’이라고 부릅니다.

Note: 템플릿은 데이터와 관련되지 않은 모든 정보들을 저장합니다. 다시 말해 이것은 수치값, 시리즈나 점의 개수, 또는 차트 축의 최대/최소값이라던지 다중 유형 설정 사항 등, 다른 데이터와 관련된 프로퍼티는 저장하지 않는 다는 것을 의미합니다.

Export 메소드 이 메소드는 다양한 형태로 차트의 데이터를 클립보드나 파일, 또는 OLE 스트림으로 내보내는데 사용됩니다. 문법은 다음과 같습니다: ChartName.Export (Format,vFile) 여기서 ChartName 은 차트의 이름을 나타냄 Format 은 다음 중 하나에 해당: CHART_DATA: 탭 문자로 나누어 지는 포맷(TSV)으로 데이터를 내보냄 CHART_BITMAP: 윈도우의 비트맵 포맷으로 차트 내보냄 CHART_METAFILE: 윈도우의 메타 파일로 차트 내보냄 CHART_CFXOLEFILE: OLE 컴파운드( Compound) 문서 형식을 사용해서 차트 보냄 CHART_CFXOLETEMPLATE: OLE 컴파운드 문서 형식을 사용해서 차트의 시각 속성(데이터 제외)을 보냄 vFile 이것은 차트가 어디로(클립보드, 파일 또는 윈도우의 Handle) export될 것인지를 나타내는 것을 나타내는 변형(variant) 타입입니다. 사용되는 유형에 따라서 이것의 형식이 결정됩니다: 클립보드에 보내기 위해서는 vFile은 빈 문자열(NULL)로 설정됩니다. 파일에 보내기 위해서는 vFile은 경로와 함께 파일 이름을 포함해야 합니다. handle을 사용해서 파일로 보내려 한다면 vFile은 _CreateFile 함수를 사용해서 이미 열려 있는 파일로부터 얻은 파일 handle을 포함해야 합니다. 해당 파일은 이미 열려있는 상태이어야 하며 데이터를 받을 준비가 되어 있어야 합니다(때로는 Flush를 할 필요가 있기 때문에, 그리고 WRITE와 파일 커서 갱신을 위해서 열려 있어야 함). 자신의 파일의 내부에서 차트를 저장할 필요가 있을 때 열려져 있는 파일에 차트를 export하는 기능을 매우 유용하게 사용할 수 있습니다. 즉, 이렇게 함으로써 차트와 다른 데이터들을 같은 파일에 저장할 수 있게 됩니다. 차트는 OLE 스트림으로 보내질 수도 있습니다. 이것은 특히 데이터베이스에 차트를 저장하려 할 때 유용하게 사용됩니다. Import 메소드

Page 106: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

96

이 메소드는 이전에 Export 메소드를 사용해서 저장한 파일을 import할 때 사용됩니다. 다음과 같은 문법을 사용합니다: ChartName.Import (Format,vFile), 여기서 ChartName 은 차트의 이름이고, Format 은 다음 중 하나가 될 수 있습니다: CHART_CFXOLEFILE: 이것은 OLE 컴파운드 문서 포맷을 사용해서 이미 저장된 차트를 import합니다. CHART_CFXOLETEMPLATE: OLE 컴파운드 문서 포맷을 사용해서 이미 저장된 차트 템플릿을 import합니다. vFile 경로와 함께 파일 이름을 저장하는 가변(variable) 유형입니다. Chart FX 3.0 필터 이전의 Chart FX 3.0에서 작성되어 저장된 파일을 사용하는 어플리케이션을 제작하는 경우에는 Cfx4Filters.dll를 적용/등록해야 합니다. 이것은 Chart FX 3.0과 호환성을 유지시켜 주는 특수한 COM 인터페이스입니다. 이 파일(Cfx4Filters.dll)은 Chart FX 기본 설치시에 포함됩니다. 이 COM 인터페이스는 API를 제공하지는 않지만 Chart FX을 사용하는 어플리케이션에서 Chart FX 3.0 파일을 로드하려고 할 때 필요합니다.

유용한 정보. Chart FX 파일 Chart FX 파일에 저장된 내용을 제어하는 방법

Page 107: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

97

차트 파일이나 템플릿을 저장하려고 할 때 FileMask 프로퍼티를 사용해서 파일에 저장되는 내용을 제어할 수 있습니다. 이것은 마스크(mask) 프로퍼티로서 Export 메소드를 호출했을 때 어떤 시각적 속성들이 저장될 것인지를 지정할 수 있도록 합니다. 기본적으로 이 프로퍼티는 데이터(CHART_CFXOLEFILE 사용)와 모든 시각적 속성들을 저장하거나 데이터 없이 시각적 속성들만 저장(CHART_CFXOLETEMPLATE 사용)할 수 있습니다. 그러나 차트의 제목을 제외한 모든 것을 저장하려 한다면 다음처럼 Export 메소드를 호출하기 이전에 이 프로퍼티를 설정하면됩니다:

ChartFX1.FileMask = ChartFX1.FileMask And Not FMASK_TITLES

이 프로퍼티는 특히 차트 파일이 저장되는 방식을 사용자 정의할 수 있도록 해 주기 때문에 이러한 방법으로 자신만의 차트 템플릿을 생성할 수 있습니다. 이 프로퍼티는 ‘마스크 프로퍼티’입니다. 이것은 모든 설정사항이 원하는 대로 한 워드(word)에 각 한 비트 씩 표시된다는 것을 의미합니다. 이렇게 하기 위해서 개발 도구에서 제공하는 비트와이즈(bitwise) 연산자 (And, Or, Not, Xor)를 적절히 사용합니다. 이것이 마스크 프로퍼티이기 때문에 각 비트들을 0이나 1로 설정하기 위해서 반드시 이러한 연산자들을 사용해야 하고 특히 이 프로퍼티에 대한 이전의 설정 사항을 잃어 버리지 않도록 주의해야 합니다. 예를 들어 FMASK_TOOLS 설정의 영향을 나타나게 하기 위해서는 다음과 같이 합니다: Chart1.FileMask = Chart1.FileMask Or FMASK_TOOLS 만일 다음처럼 입력한다면: Chart1.FileMask = FMASK_TOOLS (잘못됨!) 이렇게 하면 프로퍼티에 저장되어 있는 모든 설정 사항을 지우게 되고 파일을 저장할 때 원하지 않는 결과를 얻게 될 것입니다. 비트와이즈 연산자들은 다음과 같이 사용합니다: OR은 프로퍼티 내의 한 비트에 대해서 설정 사항이 유효하게 설정함 XOR 은 프로퍼티 내의 한 비트에 대해서 설정 사항이 유효한 것은 무효로 무효한 것은 유효하게 함 AND NOT은 프로퍼티 내의 한 비트에 대해서 설정 사항이 유효하지 않도록 설정함 차트 내의 Picture 컨트롤을 다른 컴포넌트나 어플리케이션에서 사용할 수 있도록 옮기고 싶을 때 Picture 컨트롤 내에 있는 차트를 다른 컴포넌트나 어플리케이션에서 사용할 수 있도록 할 필요가 있을 경우가 있습니다. 예를 들어 많은 보고서 작성 도구는 Picture 컨트롤에서 이미지를 import하는 기능을 제공하고 있고 이러한 특징은 어플리케이션이 동작하는 중에 어떤 보고서가

Page 108: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

98

생성되고 있는 경우에 특히 중요합니다. 따라서 이러한 상황에서는 차트를 비트맵이나 메타 파일로 저장하는 것이 별로 도움이 되지 않습니다. 차트를 Picture 컨트롤에 옮기는 것은 Chart FX의 GetPicture 메소드를 호출하면 쉽게 할 수 있는 일입니다. 에를 들어 ‘Picture1’이라고 이름 붙인 Picture 컨트롤이 있으면 다음 코드를 사용해서 이 컨트롤이 차트를 나타낼 수 있도록 할 수 있습니다:

Set Picture1.Picture = ChartFX1.GetPicture(CHART_METAFILE)

결과는 다음 그림처럼 됩니다:

Page 109: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

99

Chart FX 프로그래머 가이드

마우스 이벤트 감지

이 장에서 다뤄지는 주제들

데이터 표시 요소 드래깅 요청에 따른 메뉴 표시

툴팁과 풍선 도움말 사용자 정의하기 마우스 추적

Page 110: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

100

Page 111: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

101

마우스 이벤트 감지. Chart FX는 사용자로부터의 마우스 상호작용에 대한 차트의 반응을 제어할 수 있도록 하는 다양한 프로퍼티들과 메소드, 이벤트들을 제공합니다. 예를 들어 사용자가 특정한 점에 대해서 값을 설정하기 위해 데이터 표시 요소를 드래깅 할 때 ‘툴팁’를 표시하는 방법을 사용자 정의 할 수도 있고 때나 사용자가 차트 제목에서 오른쪽 마우스 클릭을 하는 경우에 대응하기 위한 코드를 작성할 수도 있습니다. 심지어는 차트내의 특정한 위치에서 사용자가 특정한 요소를 위치시켰는지를 살펴보기 위해서 마우스 클릭을 시뮬레이트할 수도 있습니다. 차트가 마우스의 행동에 대해서 어떻게 반응하는지를 설정할 수 있도록 하기 위해서 Chart FX이 제공하는 프로퍼티들을 살펴 보겠습니다. 데이터 표시 요소 드래깅(Dragging) 기본적으로 차트 FX의 차트는 AllowDrag 프로퍼티를 TRUE로 가지고 있습니다. 이렇게 함으로써 최종사용자는 특정한 데이터 점에 마우스를 놓고 원하는 값으로 그 표시 요소를 끌어다 놓음으로써 그 표시 요소에 대한 값을 변경할 수 있습니다. 이것은 멋진 기능이기는 하지만 사용자가 차트 내에서 그 값을 변경할 수 있도록 하고 싶지 않다면 별로 필요가 없을 수도 있습니다. 사용자가 이 기능을 사용하지 못하도록 하려면 AllowDrag 프로퍼티를 다음과 같이 FALSE로 설정합니다:

ChartFX1.AllowDrag = FALSE 요청에 따른 메뉴 표시 차트 내의 마우스와의 상호 작용에 관한 또 다른 프로퍼티로 MenusOnDemand가 있습니다. 사용자가 차트내의 특정한 요소에 마우스를 대고 오른쪽 버튼을 클릭하면 해당 요소를 사용자 정의할 수 있도록 하는 옵션사항에 대한 풀다운 메뉴가 나타납니다. 예를 들어, 만일 사용자가 Y축에 대하여 오른쪽 마우스 버튼을 클릭하면 메뉴가 나타나서 사용자는 Axis의 모든 프로퍼티를 사용할 수 있게 됩니다. 이렇게 사용자의 요청에 따라 표시되는 메뉴는 다음과 같이 MenusOnDemand 프로퍼티를 FALSE로 설정하면 나타나지 않게 됩니다:

ChartFX1.MenusOnDemand = FALSE

Note: 차트 내의 어떤 요소 내에 오른쪽 마우스를 클릭할 때 나타나는 메뉴 내의 특정한 옵션들을 사용자 정의하기 위해서는 ‘도구 사용자 정의하기’ chapter를 참조하시기 바랍니다.

데이터에 대한 ‘툴팁’ 사용자 정의하기 기본적으로 사용자가 차트 내에 있는 요소(도구 막대 제외)에 마우스 커서를 위치 시켰을 때 그 요소와 관련된 툴팁이 나타납니다. 특히 중요한 것은 시리즈 범례, 점에 대한 범례 그리고 값들이 이 ‘툴팁’ 내에 나타난다는 것입니다. 이것은 툴팁 내에 나타내기를 바라는 것을 지정할 수 있는 TipMask 프로퍼티를 사용함으로써 쉽게 변경할 수 있습니다. 예를 들어, XY 그래프 내에서 ‘툴팁’ 내에 각 점에 대한 ‘X,Y좌표’만 나타내고 싶다면 다음과 같이 TipMask에 나타내고 싶은 적절한 정보를 표시해 줍니다:

ChartFX1.TipMask = %x%v

Page 112: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

102

이 프로퍼티는 사용자에게 보다 자세한 메시지를 제공할 수 있도록 특정 텍스트와 결합해서 사용될 수 있습니다. 예를 들어, 만일 툴팁에 "Hello I'm Point: 1 and my value is 13.5"라고 표시하고 싶으면 이 프로퍼티를 다음과 같이 지정해 줍니다:

ChartFX1.TipMask = "I'm point: "+"%l "+" my value is: "+"%v" 이 TipMask 프로퍼티는 데이터에 대한 툴팁을 사용자 정의하기 위한 가장 간단한 방법이긴 하지만 차트 내에 특정한 데이터 점들에게 주위 환경의 변화에 따라서 변화하는 정보를 추가할 수 있도록 하는 GetTip 이벤트도 사용할 수 있습니다. 예를 들어, 다른 점들과는 달리 특정한 점들에 대해서만 특정한 텍스트를 보이기 원한다면 GetTip 이벤트를 사용해서 어떤 데이터 팁이 표시될 것이고 그 특정한 점에 대해서만 나타나는 메시지를 표시할 수 있습니다. 풍선 도움말 사용자 정의하기 몇몇 사용자들은 사용자가 차트 내에 특정한 데이터 점에 더블 클릭을 했을 때 툴팁 대신에 풍선 도움말을 선호합니다. 이런 경우에는 LButtonDblClk 이벤트를 가로채서 풍선도움말에 나타나는 텍스트를 변경하거나 다른 모듈에 대해서 보다 세부적인 경로를 선택(drill down)하거나 어떤 점에 대해서 보다 깊이 있는 정보를 제시하는 차트를 나타낼 수 있습니다. 이러한 경우에 다음 코드에서 풍선 도움말에 나타나는 텍스트를 어떻게 변경하는지를 살펴 볼 수 있습니다: 주의: 다음의 코드는 LButtonDblClk 이벤트 내에 존재해야 합니다. ' 디폴트 텍스트 얻기 sDef = ChartFX1.HText ' 디폴트 텍스트 변경 sFinal = "Hello Im point No: " + sDef ' 이 텍스트를 나타내기 ChartFX1.HText = sFinal 사용자가 어떤 데이터 표시 요소를 더블 클릭했는지 확인하기 위해서 실제적으로 Nseries와 nPoints를 확인하면 됩니다. 이 두개의 변수는 사용자가 어떤 데이터 표시요소를 클릭하지 않았을 경우(즉, 차트 배경을 클릭한 경우)에는 –1값을 가지게 됩니다. 예를 들어, 만일 사용자가 첫번째 시리즈에 클릭했을 때 풍선 도움말을 변경하려고 한다면 위의 코드를 다음과 같이 변경해야 합니다: if (nSeries=0) ' 디폴트 텍스트 얻기 sDef = ChartFX1.HText ' 디폴트 텍스트 변경 sFinal = "Hello Im point No: " + sDef ' 이 텍스트를 나타내기 ChartFX1.HText = sFinal End If 마우스와 관련된 다른 이벤트들 LButtonDblClk 이벤트처럼 Chart FX은 사용자의 마우스 작동에 대해서 차트가 반응하는 방법을 사용자 정의 할 수 있는 몇가지 마우스 이벤트를 제공합니다. 이러한 것에는 LButtonDown,

Page 113: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

103

lButtonUp, RButtonDown, RbuttonUp, RButtonDblClk 등이 있습니다. 어플리케이션에 이러한 특정한 기능을 추가 하기 위해서 이 이벤트들을 처리해야 합니다. 마우스 추적 차트 내에서 마우스 움직임을 추적하고 마우스 포인터가 어디에 위치하고 있는지, 또 어떤 요소 내에 있는지를 알 필요가 있습니다. 마우스의 위치를 추적하기 위해서는 Chart FX에게 차트 내의 마우스의 움직임에 대한 정보를 얻고 싶다는 사실을 알리기 위해서 먼저 다음과 같이 TypeMask 프로퍼티를 사용해야만 합니다:

ChartFX1.TypeMask = ChartFX1.TypeMask Or CT_TRACKMOUSE TypeMask 프로퍼티 내에 CT_TRACKMOUSE가 포함되면 어디에 마우스 포인터가 있고 어떠한 차트 요소가 관련되는 지를 결정하기 위해서 HitTest 메소드와 함께 MouseMoving 이벤트를 사용할 수 있습니다. 예를 들어, 다음의 코드를 MouseMoving 이벤트에 추가하면 HitTest 메소드가 넘겨주는 값을 확인할 수 있고 마우스가 가리키는 차트 요소를 쉽게 결정할 수 있습니다:

Private Sub ChartFX1_MouseMoving(ByVal X As Integer, ByVal Y As Integer, nRes As Integer) Dim nHit As CfxHitTest nHit = ChartFX1.HitTest(X, Y, nSeries, nPoint) ' 리턴 값에 대한 자세한 정보는 HitTest 메소드 참조 End Sub

Page 114: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

104

Page 115: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

105

Chart FX 프로그래머 가이드

차트 인쇄

이 장에서 다뤄지는 주제들

차트 인쇄하기 용지 방향 설정

흑백 인쇄 또는 컬러 인쇄 유용한 정보

Page 116: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

106

Page 117: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

107

차트 인쇄. 개요 Chart FX API에 의해 제공되는 다양한 객체들 중에 Printer 객체가 있습니다. 이 객체는 Chart FX의 도구 막대나 코드로부터 실제적인 차트의 인쇄를 하기 전에 프린터의 속성을 설정할 수 있도록 해줍니다. 출력물의 용지 여백, 해상도, 용지 방향, 컬러 등 여러 중요한 차트 특성을 제어 할 수 있습니다. 차트 인쇄 하기 Printer 객체가 제공하는 모든 프로퍼티들을 설명하기 전에 차트를 어떻게 인쇄하는지를 알 필요가 있습니다. 보통 사용자는 도구 막대에 있는 버튼을 사용해서 프린트하게 됩니다. 그러나 코드에서 바로 프린트하기 위해서는 다음과 같이 PrintIt 메소드를 사용할 수 있습니다:

ChartFX1.PrintIt 0,0

이 메소드는 Printer 객체 내의 hDC 프로퍼티를 설치된 다른 프린터로 변경하지 않는 한 디폴트 프린터로 인쇄하게 됩니다. 용지 방향 설정 Orientation 프로퍼티는 용지의 방향을 다음처럼 가로(Landscape) 방향이나 세로 방향(Portrait)으로 설정할 수 있도록 합니다:

ChartFX1.Printer.Orientation = ORIENTATION_LANDSCAPE 또는 ChartFX1.Printer.Orientation = ORIENTATION_PORTRAIT

Note: 모든 Printer 객체의 프로퍼티들은 PrintIt 메소드가 호출되기 전에 적절하게 설정되어 있어야 합니다. 컬러 인쇄 또는 흑백 인쇄 기본적으로 Chart FX는 기본 프린터가 컬러 프린터인지를 확인합니다. 컬러 프린터인 경우는 그대로 컬러로 인쇄하게 될 것이고 컬러 프린터가 아닌 경우가 확인되면 흑백 패턴으로 컬러를 인쇄하게 됩니다. 이러한 특성과 관련된 프로퍼티는 ForceColors입니다. 이 프로퍼티의 기본 설정은 FALSE입니다. 이것은 프린터가 컬러를 지원하지 않으면 Chart FX가 자동적으로 흑백 패턴(평행선 줄무늬)으로 인쇄하게 됨을 의미합니다. 이렇게 함으로써 인쇄된 차트의 가독성을 증가시킬 수 있습니다. 이러한 특성으로 인쇄할 프린트가 흑백 프린트일 경우 각각의 시리즈들에 대해서 특정한 패턴을 일일이 설정해 줄 필요가 없습니다. 물론 앞에서 말한 바와 같이 프린터가 컬러 프린트이면 컬러로 인쇄하게 됩니다. 이 프로퍼티가 TRUE로 설정되고 프린터가 흑백 프린터이면 프린터 드라이버는 차트의 색상을 특정한 회색조 패턴(평행선 줄무늬 아님)으로 표시하게 됩니다. 이런 경우는 바람직하지 않은 결과를 나타낼 경우가 많으며 출력물도 판독하기 힘든 경우가 많습니다.

Page 118: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

108

차트 인쇄에 대한 유용한 정보 중요한 정보: Chart FX 는 차트를 인쇄할 때 다양한 기법을 보여주는 몇몇 인쇄 샘플을 제공합니다. Chart FX 설치 디렉토리 아래의 /Samples 디렉토리를 참조하십시오. 한 페이지에 두개 이상의 차트를 인쇄하는 방법 한 페이지에 두개 이상의 차트를 인쇄하려고 할 때나 Device Context 를 지원하는 서드 파티 도구(예를 들어서 리포팅 도구)를 사용해서 차트 작업을 할 때 Paint 메소드가 일반적으로 사용됩니다. 다음 코드는 두 개의 차트를 한 페이지에 인쇄합니다:

Sub PrintFillingPage () Dim l, r, t, b As Integer '각각 왼쪽, 오른쪽, 위쪽, 아래쪽 Printer.Print "" px = Printer.TwipsPerPixelX py = Printer.TwipsPerPixelY w = Printer.Width h = Printer.Height gap = 100 / px t = gap b = ((h / 2) / py) - gap l = gap r = (w / px) - gap / 2 ChartFX1.Paint Printer.hDC, l, t, r, b, CPAINT_PRINT, 0 t = b b = (h / py) - gap ChartFX1.Paint Printer.hDC, l, t, r, b, CPAINT_PRINT, 0 Printer.EndDoc End Sub

Page 119: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

109

차트를 인쇄하기 전에 사용자가 프린터를 지정하도록 하는 방법 최종 사용자가 기본 프린터 이외의 다른 프린터들을 사용할 수 있도록 하기 위해서는 PrinterDriver 프로퍼티를 사용하거나 다른 프린터의 정보와 함께 hDC를 생성해서 Printer 객체가 가지고 있는 hDC 프로퍼티를 사용하면 됩니다. 두 가지 방법 모두 아래의 코드에 설명되어 있습니다:

1) PrinterDriver 프로퍼티의 사용: ChartFX1.Printer.PrinterDriver= "HP LaserJet IIISi,HPPCL5MS,LPT1:"

비주얼 베이직에서는 이 프로퍼티를 위한 적절한 설정사항을 얻기 위해서 Printer 객체를 참조할 수 있습니다. VB의 Printer 객체의 DeviceName, DriverName, Port 프로퍼티는 다음과 같이 이 프로퍼티에 대해서 적절한 설정 사항을 제공해 주고 동시에 차트의 인쇄와 관련된 다양한 프린터 설정 사항(VB을 사용해서 설정하는 사항)을 지정할 수 있도록 해 줍니다: ChartFX1.Printer.PrinterDriver = Printer.DeviceName+","+Printer.DriverName+","+Printer.Port (VB에서만). 다시 돌아가서 윈도우의 기본 프린터로 출력하기 위해서는 이 프로퍼티를 NULL(또는 “”)으로 설정하고 hDC 프로퍼티도 NULL로 되어있는지를 확인해 보아야 합니다.

2) hDC 프로퍼티의 사용 원한다면 개발 중인 폼에 CommonDialog 객체를 포함시켜서 CommonDialog 객체의 hDC 프로퍼티를 다음과 같이 사용할 수도 있습니다:

ChartFX1.Printer.hDC = CommonDialog1.hDC

다시 돌아가서 윈도우의 기본 프린터로 출력하기 위해서는 이 프로퍼티를 NULL(또는 “”)으로 설정하고 PrinterDriver 프로퍼티도 NULL로 되어있는지를 확인해 보아야 합니다.

다음은 VB5 문서에서 인용한 것입니다: ”윈도우 운영 환경은 시스템 디스플레이를 Printer 객체에 대한 디바이스 컨택스트(device context)를 할당함으로써 관리한다. 어떤 객체의 디바이스 컨택스트 핸들(handle)을 참조하기 위해서는 hDC 프로퍼티를 사용할 수 있다. 이것은 윈도우 API 호출들에게 값을 넘겨준다. CommonDialog 컨트롤과 함께 이 프로퍼티는 cdlReturnDC 플래그가 설정되어 있을 때 ‘인쇄 대화 상자’에서 선택될 프린터에 대한 디바이스 컨택스트를 리턴하거나 cdlReturnIC 플래그가 설정되어 있을 때는 인포메이션 컨택스트(information context)를 리턴한다 Note : hDC 프로퍼티의 값은 프로그램이 실행될 때 변경될 수 있다. 따라서 이것이 가지는 값을 변수에 저장하지 말고 필요할 때마다 hDC 프로퍼티를 사용하는 것이 좋다.”

Chart FX는 차트를 인쇄하기 전에 Print 대화상자를 제시하도록 하는 명령어를 제공하고는 있지만(도구 막대와 명령어 참조), 이 프로퍼티는 어플리케이션이 특정 프린터 설정을 미리 지정해서 (VB Printer 객체를 사용해서) 어플리케이션에 있는 모든 컴포넌트들이 이 설정을 따르도록 하여서 최종 사용자들이 선택을 할 필요없이 다른 컴포넌트들이 매번 인쇄될 때 마다 기본 윈도우 프린터 설정을 변경하지 않도록 하기 위해서 유용하게 사용될 수 있습니다. 또한, 특정 프린터에 대한 변경 사항을 설정하기 위해서 Chart FX의 Print 대화상자를 사용할 때 이 대화 상자는 기본 윈도우 프린터 설정(VB Printer 객체가 아닌)에 저장되어 있는 설정 정보를 나타내기 때문에 Chart FX Print 대화 상자에는 VB의 Printer 객체에 대해 변경한 사항들은 나타나지 않게 됩니다.

Page 120: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

110

Page 121: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

111

Chart FX 프로그래머 가이드

Chart FX 도구 사용자 정의

이 장에서 다뤄지는 주제들

소개 Chart FX 도구 막대 사용자 정의하기

DataEditor 객체 PaletteBar객체 PatternBar 객체 LegendBox 객체

Page 122: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

112

Page 123: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

113

Chart FX 도구 Chart FX 도구는 차트와 관련된 명령어나 정보를 포함하고 있는 겹쳐져서 제시되는 다음과 같은 윈도우들을 말합니다:

이러한 툴들은 개발자의 입장에서 부가적인 프로그래밍 없이 최종 사용자들이 차트와 보다 효과적으로 상호 작용하고 요소들에 쉽게 접근할 수 있도록 해줍니다. 개발자는 의도하는 대로 이러한 도구에 대한 접근을 제한 할 수도 있고 새로 정의할 수도 있습니다. 이 절에서는 Chart FX 도구들을 사용자 정의하는 방법과 Chart FX의 도구 막대에 대해서 배우게 됩니다.

Page 124: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

114

도구 막대(ToolBar)와 메뉴 막대(Menubar). 개요 Chart FX에서의 가장 유용한 도구들 중 하나는 도구 막대 입니다. 프로그래머의 입장에서는 부가적인 코드를 작성하지 않고도 최종 사용자들이 자신의 필요에 따라서 차트를 마음대로 조작할 수 있도록 할 수 있기 때문에 매우 유용한 것입니다. 최종 사용자가 차트 내의 특정 기능에 접근하지 못하도록 하거나 원래의 기능을 확장하려 할 때 또는 단순히 도구 막대의 버튼에 대한 툴팁을 변경하려고 할 때 도구 막대를 사용자 정의하는 것이 필수적입니다. 실제적인 상황에서 Chart FX가 보여 주는 원래의 도구 막대를 변경해야 하는 경우는 이외에도 무수히 많습니다. Chart FX 에서는 도구 막대에서 사용 가능한 명령어에 접근하는 방법은 한가지만 제공되는 것은 아닙니다. 예를 들어 차트 종류를 변경하기 위해서 최종 사용자는 다음의 그림에서처럼 도구 막대나 메뉴 막대내의 Gallery 버튼을 누르거나 그 데이터 표시 요소에 마우스를 위치시키고 오른쪽 버튼을 클릭해서 종류를 변경할 수도 있습니다:

도구 막대를 사용자 정의한다는 것은 동일한 명령어를 나타내는 다른 도구들을 사용자 정의한다는 것을 의미하기 때문에 이러한 행동으로 인해서 새로운 복잡성을 부여하게 됩니다. 예를 들어, 최종 사용자가 영역 차트를 선택하지 못하도록 하려면 이 영역 버튼이 나타나게 될 도구 막대, 메뉴 막대, 오른쪽 클릭 메뉴 또는 다른 도구 등을 사용하지 못하게 해야 합니다. 이러한 이유에서 Chart FX 는 Chart FX에서 사용 가능한 모든 명령어와 함께 도구들이 사용자 인터페이스를 생성하고 표시하기 위한 정의들(그림, 텍스트 등)을 포함하고 있는 Commands 객체를 지원합니다.

Page 125: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

115

Chart FX가 지원하는 또 다른 중요한 객체는 개발자가 도구 막대의 위치를 지정할 수 있도록 하고 도구 막대에 명령어를 제거하거나 추가할 수 있도록 하는 ToolbarObj 객체입니다. 다음의 주제들이 이 절에서 다루어 집니다:

• Commands 객체와 ToolBarObj 객체 사이의 관계

• 도구 막대(Toolbar) 보이기/숨기기

• 도구 막대 위치 지정하기

• 도구 막대 버튼 제거하거나 숨기기

• 버튼에 대한 명령어 변경하기

• 도구 막대 버튼 추가하기

• 툴팁 변경하기

• 도구 막대 아이콘 변경하기

• 세부 명령(SubCommand) 작업

• 선택자(Selectors)로 작업하기

• 사용자 정의 명령 추가하기

• 자신만의 도구 막대 만들기

Commands 객체와 ToolbarObj 객체의 관계 도구 막대를 사용자 정의할 때 ToolbarObj 객체와 Commands 객체 사이의 관계를 파악하는 것이 매우 중요합니다.

Page 126: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

116

도구 막대의 위치나 표시 여부 등 일반적인 설정 사항을 변경해야 할 때 ToolbarObj 객체는 이러한 도구 막대의 일반적인 시각 속성을 변경하는 목적으로 사용할 수 있습니다. 다른 한편으로는 도구 막대에 있는 아이템(버튼)을 사용자 정의할 때 변경하고자 하는 많은 특징들(툴팁, 그림 등)은 Commands 객체의 일부분이고 이러한 것들 중 일부는 Chart FX 사용자 인터페이스에 있는 다른 도구들에서도 쓰이게 됩니다. 도구 막대 내의 아이템과 관련되었을 때 ToolbarObj 객체와 이것의 프로퍼티들의 역할은 단지 위치, 순서, 그리고 버튼의 표시 여부만을 제어하는 것입니다. 다음의 그림에서 도구 막대 내의 특정한 버튼에 대해서는 ToolbarObj 객체가 아니라 Commands 객체가 텍스트, 그림(아이콘), 스타일등 중요한 시각적 속성들을 대부분 제어한다는 것을 알수 있습니다.

이러한 이유에서 이 절에서는 Command 객체와 관련 프로퍼티에 대해서 자세히 다루게 됩니다.

Page 127: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

117

도구 막대 보이기/숨기기 ToolbarObj 객체는 다음과 같이 불리언 값으로 설정되어 해당 도구 막대를 숨기거나 보이게 할 수 있는 Visible 프로퍼티를 제공합니다: ChartFX1.ToolBarObj.Visible = True 'Shows the Toolbar ChartFX1.ToolBarObj.Visible = False 'Hides the Toolbar 디자인 시에도 프로퍼티 목록을 사용해서 True나 False로 지정할 수 있음을 주목할 필요가 있습니다. 도구 막대 위치 지정하기 ToolbarObj 객체는 차트의 경계 사각형 내에 도구 막대를 위치시킬 수 있도록 하는 몇가지 프로퍼티를 제공합니다. 기본적으로 도구 막대의 디폴트 위치는 위쪽 여백쪽으로 설정되어 있습니다. 그러나 Docked 프로퍼티를 사용해서 차트내의 어느 곳에라도 위치를 지정할 수 있습니다. 예를 들어 프로그램을 통해서 도구 막대를 오른쪽 여백에 놓고 싶다면 다음처럼 Docked 프로퍼티를 사용합니다: ChartFX1.ToolBarObj.Docked = TGFP_RIGHT 또한 도구 막대는 다른 윈도우의 위에 겹쳐진 윈도우 형태로 사용자가 데스크탑상에서 마음대로 위치를 변경할 수 있도록 할 수도 있습니다. 이것은 차트가 표시되는 영역이 확대되기 때문에 유용하기는 하지만 가끔씩 최종 사용자에게 혼동을 줄 수 도 있기 때문에 주의해서 사용되어야 합니다. 도구 막대를 프로그램 상에서 위로 떠서 겹쳐진 윈도우의 형태로 변환하기 위해서는 Docked 프로퍼티를 다음처럼 설정합니다: ChartFX1.ToolBarObj.Docked = TGFP_FLOAT 도구 막대를 이렇게 설정하면 차트 영역 내에 자유롭게 도구막대를 위치 시키기 위해서 Left 프로퍼티와 Top 프로퍼티를 사용할 수 있게 됩니다. 이러한 특성을 가지는 도구 막대가 데스크탑 상의 어디에라도 위치할 수 있기는 하지만 이 프로퍼티들은 차트 좌표내의 설정사항을 따르게 되어서 (0,0) 좌표를 기준으로 차트 영역이 참조됩니다. 예를 들어 (15,30) 좌표에 이 위로 떠서 겹쳐지는 도구 막대를 위치시키기 위해서 다음처럼 Left/Top 프로퍼티를 설정해야 합니다: ChartFX1.ToolBarObj.Left = 15 ChartFX1.ToolBarObj.Top = 30

Page 128: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

118

도구 막대 내의 버튼을 제거하거나 숨기기 어플리케이션 내의 특정한 조건에 따라 도구 막대 내의 버튼을 제거하거나 숨길 필요가 있을 수도 있습니다. 예를 들어 어떤 차트에서 최종사용자가 2차원/3차원 모드를 전환하는 것을 불가능하게 하고 싶어서 이와 관계된 버튼들을 숨기려고 하는 상황을 가정해 볼 수 있습니다. 또는 사용자들이 차트 파일을 저장하거나 불러오는 것을 못하도록 하고 싶을 때 Chart FX의 기본 도구 막대에서 이와 관계된 버튼들을 제거해야 하는 경우도 생각할 수 있습니다. 버튼 제거 도구 막대 내의 아이템들을 제거하기 위해서 RemoveItems 메소드가 제공됩니다. 이 메소드를 사용하면 이러한 버튼들은 더 이상 도구 막대 내에 존재하지 않을 것이고 모든 인덱스들이 Chart FX에 의해서 다시 점검됩니다. 예를 들어 RemoveItems 메소드를 사용해서 도구 막대의 첫번째 버튼을 제거하면 두번째 버튼의 인덱스가 0으로 설정되고 세번째 버튼의 인덱스가 1이 됩니다. 도구 막대의 처음 두개의 버튼을 제거하기 위해서는 다음과 같이 RemoveItems 메소드를 호출합니다: ChartFX1.ToolBarObj.RemoveItems 2,0 RemoveItems 메소드는 두개의 인자를 받는데 첫번째는 제거할 버튼의 개수를 나타내고 두번째는 제거하기 시작할 위치를 나타냅니다. 또한 분리자(separator)도 도구 막대의 아이템의 하나로 생각됩니다. 따라서 몇 개의 버튼을 제거할 때 이것들이 분리자에 의해 분리되어 있다면 이 RemoveItems 메소드를 호출할 때 분리자도 하나의 인덱스로 고려되어야 합니다. 버튼 숨기기 도구 막대에서 아이템들을 숨긴다는 것은 Toolbar Item 객체가 제공하는 Visible 프로퍼티에 접근한다는 것을 의미합니다. 버튼을 도구 막대에서 숨기려 할 때 모든 인덱스들은 유지되어서 버튼들은 그대로 도구 막대에 존재합니다. 보통 어플리케이션 내의 특정한 조건에 따라 사용자가 그 기능을 사용하지 못하도록 하기 위해서 이렇게 버튼을 숨기는 것이 유용한 역할을 하게 됩니다. 예를 들어 어떤 차트에 대해서 최종 사용자가 2차원/3차원 모드 전환을 하지 못하도록 하기 위해 도구 막대에서 3차원 버튼을 숨기려 한다면 다음과 같이 합니다: ChartFX1.ToolBarObj(8).Visible = FALSE 버튼의 인덱스는 Item 프로퍼티를 참조하지 않고 제공된다는 점에 주목하시기 바랍니다. 이것은 ToolBarObj 객체에서 Item 프로퍼티가 기본 프로퍼티이기 때문에 가능한 것입니다. 또한 이것은 다음의 코드의 실행으로 얻는 결과가 정확하게 위의 결과와 같다는 것을 의미합니다: ChartFX1.ToolBarObj.Item(8) = FALSE

Page 129: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

119

도구 막대 버튼에 대한 명령어 변경하기 Chart FX는 다양한 종류의 미리 정의된 명령들을 제공해서 이것을 이용해서 도구 막대에 있는 버튼들의 기능을 변경하거나 특정 기능을 수행하도록 하는 새로운 버튼을 추가할 수 있습니다. 또한 도구 막대 버튼에 사용자 정의 명령을 할당해서 어플리케이션 내에서 내부적으로 처리하도록 할 수도 있습니다. 여기서는 도구 막대 버튼에 할당되어 있는 명령을 미리 정의된 Chart FX 명령으로 어떻게 변경할 수 있는 지를 설명합니다. 도구 막대에 사용자 정의 명령을 할당하기 위해서는 이 chapter의 뒷부분에 있는 ‘사용자 정의 명령 추가하기’ 부분을 참조하시기 바랍니다. CommandID 프로퍼티는 손쉽게 도구 막대에 의해서 수행되는 기본 기능을 미리 정의된 Chart FX 명령으로 변경할 수 있도록 해줍니다. 예를 들어 Chart FX 도구 막대의 프린트 버튼은 사용자가 차트를 인쇄할 수 있도록 해 주는 것입니다. 이 버튼은 몇가지 중요한 인쇄 설정을 물어보는 대화상자를 표시하지 않고 바로 인쇄를 하도록 합니다. 그러나 Chart FX는 이러한 설정사항을 지정하도록 하는 미리 정의된 명령을 제공합니다. 이 예제에서 프린트 버튼의 기본적인 기능을 변경해서 차트를 인쇄하기 전에 사용자가 인쇄 설정 사항을 선택할 수 있도록 하는 방법에 대해서 알아보도록 하겠습니다.

제일 먼저 해야 하는 일은 0으로부터 (분리자를 포함해서) 변경하고자 하는 버튼까지의 수를 세어서 프린트 버튼의 인덱스를 결정하는 것입니다. 이렇게 함으로써 Chart FX 도구 막대에서 프린트 버튼이 인덱스 21을 가지고 있음을 알 수 있습니다. 다음에 Chart FX의 미리 설정된 명령 목록내에 적절한 Chart FX 명령을 포함시켜야 합니다. 이렇게 함으로써 CFX_ID_PAGESETUP이 최종사용자가 인쇄 설정사항을 입력할 수 있도록 하는 것들 중 하나임을 알 수 있습니다. 마지막으로 다음과 같이 이 버튼에 할당된 명령을 변경하기 위해서 CommandID 프로퍼티를 사용할 수 있습니다: ChartFX1.ToolBarObj(21).CommandID = CFX_ID_PAGESETUP

Page 130: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

120

도구 막대에 버튼 추가하기 도구 막대에 새로운 버튼을 추가할 필요가 있을 경우가 있습니다. 이러한 경우를 위해서 ToolBarObj 객체는 기존의 Chart FX 명령이나 사용자 정의 명령을 사용할 수 있도록 해주는 AddItems 메소드를 제공합니다. 이 절에서는 Chart FX에서 미리 정의된 명령에 접근하는 버튼을 어떻게 도구 막대에 추가 시키는지에 대해서 알아봅니다. Chart FX 도구 막대에 사용자 정의 명령을 추가하려면 이 chapter의 후반부에 있는 ‘사용자 정의 명령 추가하기’를 참조합니다. Chart FX는 다양한 종류의 미리 정의된 명령들을 제공해서 이것을 이용해서 도구 막대에 있는 버튼들의 기능을 변경하거나 특정 기능을 수행하도록 하는 새로운 버튼을 추가할 수 있습니다. 도구 막대에 버튼을 추가할 때 Chart FX 도구 막대는 32아이템(버튼과 분리자)까지만 처리할 수 있기 때문에 버튼을 추가할 때 이 개수를 넘지 않도록 해야 합니다. 최종 사용자가 Chart FX에 있는 다양한 차트 종류를 이용해서 차트를 변환시키지 못하도록 해야 하고 최종 사용자에게는 직선 차트, 영역 차트, 막대 차트 만 허용되는 상황을 가정해 봅시다. 이렇게 하기 위해서는 다음 그림에서처럼 도구 막대에서 갤러리 타입(Gallery Type)을 제거하고 원하는 세 종류의 차트 타입을 나타내는 버튼을 추가해야 합니다:

제일 먼저 해야 할 일은 ‘도구 막대 아이템 제거하기/숨기기’ chapter에 있는 RemoveItems 메소드를 사용해서 갤러리 선택자를 제거하는 것입니다. 갤러리 선택자는 도구 막대의 세 번째 아이템이기 때문에 다음처럼 RemoveItems 메소드를 사용합니다: ChartFX1.ToolbarObj.RemoveItems 1,2 갤러리 선택자가 제거된 다음에는 사용자가 도구 막대로부터 선택해야 하는 세 개의 차트 유형에 대한 버튼을 도구 막대의 처음부터 추가해야 합니다. 이렇게 하기 위해서 다음처럼 AddItems 메소드를 사용합니다: ChartFX1.ToolBarObj.AddItems 0,3 AddItems 메소드를 사용할 때 도구 막대에 있는 다른 버튼들에 대한 인덱스들이 다시 계산됩니다. 다시 말해, 도구 막대의 첫 부분부터 세 개의 버튼을 추가 했기 때문에 그 전에 첫번째에 있던 버튼은 인덱스가 0이 아니라 3이 되고 추가한 세 개의 버튼은 각각 0,1,2의 인덱스를 가지게 되는 것입니다.

Page 131: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

121

마지막으로 다음과 같이 Chart FX의 미리 정의된 명령을 도구 막대에 추가한 버튼에 할당하기 위해서 CommandID 프로퍼티를 사용합니다: ChartFX1.ToolBarObj(0).CommandID = CFX_ID_LINE ChartFX1.ToolbarObj(1).CommandID = CFX_ID_AREA ChartFX1.ToolBarObj(0).CommandID = CFX_ID_BAR 이 코드를 실행시키면 Chart FX의 도구 막대는 다음처럼 보일 것입니다:

중요한 정보: 도구 막대를 단순히 변경하는 것만으로는 최종 사용자가 이 세 종류의 차트 유형만 사용하도록 하는 것을 보장할 수 없습니다. 위의 예제에서는 단순히 도구 막대에 버튼을 추가하기 위해서 Additems 메소드를 사용하는 방법을 보였을 뿐입니다. 사용자가 다른 유형의 차트를 사용하지 못하도록 하려면 명령어 목록(Commands list)을 적절히 바꾸어서 해당 차트 유형들이 Chart FX UI에 있는 다른 도구들에 의해서 사용되지 못하도록 해야 합니다. 여기에 관련된 내용은 다음 절에서 자세히 다루어 질 것입니다.

Page 132: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

122

툴팁 변경 ‘툴팁’는 사용자가 도구 막대의 버튼에 마우스를 위치시켰을 때 나타나는 텍스트를 말합니다. 이것은 사용자가 실제로 그 버튼을 누르지 않고도 버튼의 기능을 설명해주는 유용한 기능입니다.

이 툴팁은 ToolBarObj 객체의 일부라고 생각하기 쉬우나 이 텍스트는 Chart FX UI의 다른 부분들에서도 사용되기 때문에 Commands 객체에 의해서 제어됩니다. 이것은 특정한 명령에 대해서 툴팁(또는 텍스트)를 변경하면 Chart FX UI 내에서 이 변경 사항이 일관적으로 적용된다는 것을 의미합니다. 따라서 도구 막대에 있는 어떤 버튼에 대해서 툴팁을 변경하려면 다른 곳(예를 들어 Chart FX 메뉴 막대는 이 텍스트를 메뉴 아이템으로 표시하게 됨)에서도 이 텍스트가 표시되기 때문에 너무 긴 문자열을 사용하지 않도록 해야 합니다. 툴팁을 표시하기 위해서는 ToolBarObj 객체에 있는 ToolTips 프로퍼티를 다음처럼 해 줍니다: ChartFX1.ToolBarObj.ToolTips = TRUE 어떤 명령에 관련된 툴팁을 변경하기 위해서는 먼저 Chart FX에서 미리 설정된 명령 목록에 명령 ID를 설정해야 합니다. 예를 들어, Chart FX 도구 막대내의 갤러리 선택자에 대한 툴팁을 변경하려면 이 명령과 관계된 ID가 CFX_ID_GALLERY라는 것을 알 수 있습니다. ID를 얻으면 다음과 같이 Commands 객체에 있는 Text 프로퍼티를 사용할 수 있습니다: ChartFX1.Commands(CFX_ID_GALLERY).Text = "Chart Types" 특정 명령에 관련된 텍스트를 변경하면 Chart FX UI는 도구 막대, 메뉴 막대, 오른쪽 마우스 버튼에 의해서 나타나는 메뉴 등에 이 변경사항을 반영하게 됩니다. 그리고 다른 언어로 어플리케이션을 개발할 때 이 툴팁을 변경할 필요가 있습니다.

Page 133: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

123

도구 막대 아이콘 변경 도구 막대에 사용되는 아이콘들은 다른 Chart FX 도구들에 의해서도 사용될 수 있습니다. 따라서 이것들은 Commands 객체에 의해서 제어되고 특정 명령에 대한 아이콘을 변경하면 그 명령에 접근하도록 해주는 다른 도구들에도 이 변경 사항이 반영됩니다. 예를 들어 데이터 에디터 아이콘은 도구 막대 뿐만 아니라 오른쪽 클릭 메뉴에도 사용되고 있습니다. 이때 데이터 에디터 명령과 관련된 아이콘을 변경하면 다음 그림에서와 같이 둘 다 이러한 변경사항을 반영하게 됩니다:

Commands객체의 Picture 프로퍼티에서 미리 준비된 아이콘을 선택하거나 새로운 아이콘을 추가시킴으로써 어떤 명령에 대한 아이콘을 변경할 수 있습니다. 여기서는 두 가지 방법 모두에 대해서 다룹니다: 미리 준비된 아이콘에서 선택 Chart FX는 Chart FX 사용자 인터페이스의 기본 아이콘을 쉽게 변경할 수 있는 16X15 크기의 미리 준비된 아이콘을 제공합니다. 기본 아이콘을 변경하기 위해서는 Commands 객체의 Picture 객체를 사용합니다. 이 프로퍼티는 명령 ID를 (미리 정의된 명령 목록에서) 받고 미리 지정된 아이콘의 인덱스를 받습니다. 미리 지정된 아이콘의 목록은 다음처럼 나타납니다:

데이터 에디터의 아이콘을 이 목록의 10번째 아이콘으로 대체하기 위해서는 다음과 같은 코드를 사용합니다: ChartFX1.Commands(CFX_ID_DATAEDITOR).Picture = 9 목록 내의 아이콘 추가 또는 교체하기

Page 134: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

124

미리 준비된 아이콘 목록에서 아이콘을 선택하는 것은 특별히 유용하지 못하지만(대부분이 다른 Chart FX의 명령에 대해 실제로 사용되고 있기 때문에) AddPicture 메소드나 ChangePicture 메소드를 사용해서 이 목록에 있는 아이콘을 추가하거나 교체할 수 있습니다. AddPicture 메소드는 Chart FX UI에 사용자 정의 명령을 추가할 때 특히 유용하게 사용될 수 있습니다. 이 메소드는 미리 정의된 목록에 하나 이상의 아이콘을 추가할 수 있도록 해서 기존의 명령이나 새로운 명령에 이 아이콘을 할당 할 수 있도록 합니다. ChangePicture 메소드는 Chart FX에 의해서 현재 사용되고 있는 아이콘을 변경하려고 할 때 아이콘 목록에 있는 기존의 아이콘들을 대체할 수 있도록 해주기 때문에 매우 유용하게 사용할 수 있습니다. 각각의 아이콘은 16X15 픽셀로 이루어 져야 하며 동시에 몇몇 아이콘들을 추가하거나 변경하려 할 때 이 아이콘들 사이에 변경의 대상이 아닌 아이콘들이 없도록 해야만 합니다. 이 두개의 메소드는 Picture 객체를 취하기 때문에 폼에 Picture객체를 생성하고 리소스를 이 객체로 로드해야 합니다. AddPicture 예제 만일 Picture1이라고 명명한 Picture 객체에 두개의 새로운 아이콘을 로드했고 아이콘 목록에 이 두개의 아이콘을 추가하려고 하는 상태에서 첫번째 아이콘은 데이터 에디터 명령과 관련된 아이콘을 변경하는데 사용하고 두번째 아이콘은 ‘차트 저장’에 대한 아이콘으로 사용하려고 한다고 가정합니다. AddPicture 메소드는 아이콘이 목록에 위치할 인덱스를 리턴하게 되고 이 인덱스를 사용해서 이 그림을 어떻게 명령과 연결시키는지를 나타내게 됩니다. 다음의 코드에서 이러한 것을 살펴 볼 수 있습니다: nIndex = ChartFX1.Commands.AddPicture Picture1.Picture ChartFX1.Commands(CFX_ID_DATAEDITOR).Picture = nIndex ChartFX1.Commands(CFX_ID_EXPORTFILE).Picture = nIndex+1 ChangePicture 예제 Chart FX에 의해서 현재 사용되고 있는 몇 개 또는 전체 아이콘을 대체하려고 하면 아이콘 목록에서 하나 이상의 아이콘을 대체시켜 주는 ChangePicture 메소드를 사용할 수 있습니다. Chart FX는 아이콘들을 다음 그림에서 볼 수 있는 순서로 사용하게 됩니다:

이것은 만일 두개의 Picture 객체를 로드했을 때 16X15 크기의 아이콘 하나를 저장하고 있는 Picture1 객체가 2D/3D 아이콘을 대체하게 될 것이고 두개의 아이콘을 가지고 있는 Picture2 객체가 ‘수평 눈금선 보이기/숨기기’와 ‘수직 눈금선 보이기/숨기기’ 아이콘을 각각 대체하게 될 것이라는 것을 의미합니다. 이때 다음과 같이 ChangePicture 메소드를 두 번 호출해야 합니다: ChartFX1.Commands.ChangePicture Picture1.Picture,4 ChartFX1.Commands.ChangePicture Picture2.Picture,8 위에서 제시된 예제에서 인덱스 4(0 기준)는 2D/3D 이미지 아이콘에 해당하고 인덱스 8은 수직 눈금선 아이콘에 대응한다는 것을 알 수 있습니다.

Page 135: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

125

세부 명령(SubCommands) 작업 Chart FX 사용자 인터페이스의 거의 모든 버튼들(도구 막대, 메뉴 막대 등)이 클릭되었을 때 특정한 기능을 수행하지만 어떤 버튼들은 클릭되었을 때 사용자가 선택할 수 있는 세부 명령 목록이 나타나게 됩니다. 예를 들어, 다음 그림에서처럼 Chart FX 도구 막대에서 도구 버튼은 사용자가 차트 영역에서 나타나기를 원하는 도구를 선택할 수 있도록 하는 목록을 표시하게 됩니다:

이러한 목록은 세부 명령 목록이라고 불리며 Chart FX 사용자 인터페이스에서 이러한 세부 명령 목록을 생성하거나 기존의 목록을 변경할 수 있습니다. 이러한 목적을 위해서 Commands 객체는 SubCommandID 프로퍼티와 RemoveSubCommand 메소드, RemoveAllSubCommands 메소드를 제공합니다. 기존의 세부 명령 제거하기 위에서 제시된 그림에서 어떻게 CFX_ID_TOOLS 명령이 사용자가 선택하게 될 세부 명령의 목록을 나타낼 수 있는지를 볼 수 있습니다. 최종 사용자가 도구 막대에서 데이터 에디터를 사용하지 못하도록 해야 하는 경우를 가정해 봅시다. 이때 다음과 같이 RemoveSubCommand 메소드를 호출함으로써 세부 명령 목록에서 데이터 에디터 옵션을 쉽게 제거할 수 있습니다: ChartFX1.Commands(CFX_ID_TOOLS).RemoveSubCommand 2 세부 명령 목록에서 어떤 세부 명령을 제거할 때 세부 명령에 대한 인덱스가 변경된다는 점에 유의해야 합니다. 예를 들어 데이터 에디터 세부 명령을 제거 하면 도구 막대는 인덱스 값으로 2를 가지고 팔레트 막대는 3을 가지게 됩니다. 목록으로부터 세부 명령을 제거함으로써 동일한 명령 ID를 가지는 다른 도구들에서도 이 옵션이 제거될 것입니다. 목록에 세부 명령 추가하기 목록에 세부 명령을 추가하기 위해서 SubCommandID 프로퍼티를 사용합니다. 만일 특정 명령에 대해서 세부 명령을 추가하려면 인덱스의 순서를 순차적으로 해야 합니다. 그렇지 않은 경우, 인덱스가 순차적이 아닌 경우에는 예상치 못한 결과를 얻을 수 있습니다. 이러한 특징은 사용자 정의 명령으로 작업을 할 때 유용하게 사용됩니다. 몇 개의 세부 명령을 포함하는 사용자 정의명령을 설명한 ‘사용자 명령 추가하기’ chapter를 참조하십시오.

Page 136: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

126

선택자(Selectors)로 작업하기 선택자는 세부 명령들을 포함하고 있다가 클릭되었을 때 이미지(아이콘) 목록을 나타내서 여기서 사용자가 선택할 수 있도록 하고 선택된 후에는 선택된 아이콘을 표시하도록 하는 명령입니다. Chart FX에서는 그림에서처럼 도구 막대의 갤러리 아이콘이 선택자로 구현되어 있습니다:

선택자는 세부 명령의 목록을 가지고 있는 명령이기 때문에 API가 설명된 ‘세부 명령으로 작업하기’ 부분도 그대로 선택자에 적용될 수 있습니다. 선택자와 보통의 세부 명령 목록과의 유일한 차이점은 세부 명령에 대한 스타일은 CBIS_SELECTOR로 설정되어 있다는 점입니다. 특정 명령에 대한 스타일을 제어하는 것에 대한 보다 자세한 내용은 Commands 객체의 Style 프로퍼티를 참조합니다.

Page 137: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

127

사용자 정의 명령 추가하기 이전의 내용에서 Chart FX의 미리 정의된 명령 목록을 추가하거나 변경, 제거하기 위해 API가 제공하는 ToolbarObj 객체와 Commands 객체를 알아보았습니다. 기존의 명령이나 Chart FX 사용자 인터페이스와 관련된 중요한 사항들을 제거하거나 아이콘을 변경함으로써 기본 Chart FX 도구 막대를 사용자 정의할 수 있도록 하는 유용한 기능이라고 할 수 있습니다. Chart FX은 미리 정의된 Chart FX 명령으로 기본 도구 막대를 사용자 정의할 수 있을 뿐만 아니라 어플리케이션 내부적으로 사용할 수 있는 사용자 정의 명령을 사용할 수도 있습니다. 예를 들어, Chart FX 도구 막대에 새로운 데이터와 새로운 시각 속성들을 가진 또 다른 차트를 로드 하기 위한 버튼을 추가하는 경우를 생각해 봅시다. 최종 사용자가 이러한 버튼을 눌렀을 때 어떻게 대응해야 하는 지를 알 수 없기 때문에 Chart FX가 이러한 기능을 미리 정의해서 제공하지 않을 것이라는 것은 분명합니다. 따라서 어플리케이션에 이에 대응하는 이벤트를 제공하고 이에 맞는 코드를 작성하기 위한 사용자 정의 명령을 추가해야 합니다 사실, 사용자 정의 버튼들만 생성할 수 있는 것만은 아니고 어플리케이션에서 나타나는 차트에 깔끔하게 통합된 형태로 표시할 수 있는 버튼, 목록, 선택자, 새로운 도구 막대 등에 대한 그룹도 생성할 수 있습니다. 여기서는 Chart FX 사용자 인터페이스에 사용자 정의 명령을 추가할 때 필요한 절차들을 설명합니다. 도구 막대에 사용자 정의 명령을 추가한다는 것은 Commands 객체 내의 속성들을 완성하고 물리적으로 그 도구 막대에서 그 버튼을 추가(또는 교체)하기 위해 ToolBarObj 객체에서 제공되는 프로퍼티들과 메소드들을 사용한다는 것을 의미합니다. Chart FX 도구 막대에 사용자 정의 명령을 추가하기 위해서 다음과 같은 절차를 따라야 합니다: 1) Chart FX 명령 목록에 명령 ID 추가하기 Chart FX UI 에 하나 이상의 사용자 정의 명령을 추가하기 위한 제일 첫번째 단계는 Chart FX 명령 목록에 해당 ID들을 추가하는 것입니다. 이것은 Commands 객체가 제공하는 AddCommand 메소들을 사용해서 할 수 있습니다. 이 ID는 사용자가 클릭하거나 사용하려 할 때 각각의 명령을 구분해주는 목적으로 사용되는 정수입니다. 이것은 사용자 정의 명령과 관련된 고유한 ID이며 다른 어떠한 사용자 정의 명령도 같은 ID를 가질 수 없습니다. Chart FX는 CFX_ID_FIRST (29440)부터 CFX_ID_LAST (29951)까지 미리 정의된 ID를 가지고 있기 때문에 이 범위의 값을 사용할 수는 없습니다. 다음과 같이 사용자 정의 명령에 ID 4를 부여할 수 있습니다: ChartFX1.Commands.AddCommand 4 2) 사용자 정의 명령에 시각적 속성 설정하기 명령 ID가 목록에 추가되면 Chart FX에게 어떻게 이 명령이 UI에 표시될지(버튼 또는 목록인지, 어떤 아이콘이 사용될지, 어떤 텍스트가 표시될지, 사용가능한지 등)를 알려주어야 합니다. 다음과 같이 Commands 객체에 각 속성을 설정하기 위한 프로퍼티가 존재합니다:

Page 138: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

128

Style. Style 프로퍼티는 Chart FX에게 지금 추가하려고 하는 명령이 2개의 상태를 나타내는(two-state) 버튼인지 목록인지 선택자인지 어떤 그룹인지를 알려주는데 사용됩니다. 이 프로퍼티를 설정하지 않으면 사용자 정의 명령은 일상적인 버튼으로 추가됩니다. 2개의 상태를 가지는 버튼으로 추가하려면 다음처럼 이 프로퍼티를 설정합니다:

ChartFX1.Commands(4).Style = CBIS_TWOSTATE

1단계에서 할당받은 ID를 어떻게 사용하고 있는지 확인하기 바랍니다.

Picture. Picture 프로퍼티는 버튼에 사용될 아이콘을 지정합니다. ‘아이콘 변경/추가’ 부분에서 설명된 대로 고유한 버튼을 추가할 수 있습니다.

Text. Text 프로퍼티는 메뉴 막대에서 명령이 표시될 경우 표시될 툴팁이나 텍스트를 지정합니다. 예를 들어 버튼에 새로운 툴팁을 설정하기 위해서 이 프로퍼티를 다음처럼 설정합니다:

ChartFX1.Commands(4).Text = "New Command"

3) 도구 막대에 사용자 정의 명령 추가하기 도구 막대에 명령 ID 4를 추가하기 위해서 다음과 같이 ToolBarObj 객체가 제공하는 AddItems 메소드와 CommandID 프로퍼티를 사용할 수 있습니다: '도구 막대의 4번째 위치에 새로운 버튼 추가 ChartFX1.ToolBarObj.AddItems 1,3 '추가된 버튼에 명령 ID 부여 ChartFX1.ToolBarObj(3).CommandID = 4 4) 사용자 정의 명령 처리하기 이제 Chart FX 명령 목록에 새로운 사용자 정의 명령을 추가했고 버튼도 도구 막대에 추가된 상태에서 필요한 것은 이 명령에 대한 기능을 구현하는 코드를 작성하는 것입니다. 사용자가 추가한 사용자 정의 명령을 클릭하거나 활성화시키면 UserCommand 이벤트가 어플리케이션에 보내집니다. 따라서 사용자가 이 버튼을 클릭할 때 이 사용자 정의 명령에 대한 ID를 나타내는 메시지 상자를 표시하려면 다음과 같이 UserCommand 이벤트를 처리해 줍니다: Private Sub ChartFX1_UserCommand(ByVal wParam As Long, ByVal lParam As Long, nRes As Integer) MsgBox "User Command:" + CStr(wParam) End Sub

Page 139: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

129

자신만의 도구 막대 만들기 이 전체의 절을 Chart FX 도구 막대(ToolBarObj 객체)에 기반을 두고 설명하고 있기는 하지만 Chart FX 명령 뿐만 아니라 사용자 정의 명령까지도 포함할 수 있는 부가적인 도구 막대도 생성할 수 있습니다. 이 특성은 원하는 대로 Chart FX의 차트 타입만 처리하는 도구 막대를 만들거나 3D 효과만 처리하는 도구 막대를 만들거나 하는 등의 부수적인 사용자 정의 수준을 제공합니다. 새로운 도구 막대를 만들기 위해서 다음과 같이 함축적인 객체의 생성을 가능하게 하는 비주얼 베이직의 새로운 키워드를 사용할 수 있습니다: Dim MyTool As New ToolBar 또는 다음과 같이 CreateObject 함수를 사용할 수도 있습니다: Set MyTool = CreateObject("SfxBar.ToolBar") 새로운 도구 막대를 생성하면 이에 대한 핸들(handle)을 변수에 저장할 수 있습니다(이 경우 MyTool). 이 변수는 ToolBarObj 객체에서 사용 가능한 모든 프로퍼티를 가지고 있습니다. 도구 막대를 만들 때 중요한 문제는 이 도구 막대가 비어 있는 명령어 목록을 가지고 있고 버튼을 가지지 않은 상태로 초기화된다는 점입니다. 따라서 두가지 옵션이 가능합니다: 1) Chart FX의 미리 정의된 명령으로 새로운 도구 막대 생성하기 만일 새로운 도구 막대가 Chart FX의 미리 정의된 명령을 몇 개 포함하고 있다면 Chart FX 명령 목록을 다음처럼 쉽게 새로운 도구 막대에 할당할 수 있습니다: MyTool.Commands = ChartFX1.Commands Chart FX 명령 목록을 새로 만들어진 도구 막대에 할당할 때 새로운 도구 막대에는 아직도 버튼이 없는 상태라는 것을 유념해야 합니다. 단지 명령 목록이 Chart FX와 동일하다는 점만 명시했을 뿐입니다. 다음에는 새로 작성된 도구 막대(MyTool)에 버튼을 생성하기 위해서 다음과 같이 AddItems 메소드와 CommandID 프로퍼티를 사용합니다: 'MyTool에 3개의 버튼을 추가하는 예제 MyTool.AddItems 3, 0 '사용할 명령을 할당 MyTool(0).CommandID = CFX_ID_GALLERY MyTool(1).CommandID = CFX_ID_3D '사용자 정의 명령 할당 MyTool(2).CommandID = 4 ToolbarObj 객체에서 지원하는 프로퍼티와 메소드들을 MyTool 객체에서 어떻게 가지고 있는지 살펴보고 차트 이름없이 이것들에게 접근하는 방법을 관찰하기 바랍니다.

Page 140: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

130

2) 코드에서 직접 도구 막대 만들기 만일 새로운 도구 막대(MyTool)가 ‘사용자 정의 명령 추가하기’에서 설명된 대로 사용자 정의 명령만을 포함하면 모든 프로퍼티의 ID들을 포함하고 있는 새로운 명령 목록을 생성하기 위해서 AddComand 메소드를 사용하고 도구 막대 아이템을 생성하기 위해서 AddItems 메소드를 사용하고 나서 CommandID 프로퍼티로 새로 만든 명령 목록의 ID를 할당하게 됩니다. 예를 들어 MyTool이 사용자 정의 명령을 수행하는 두개의 버튼만을 포함하고 있을 때 코드는 다음처럼 됩니다: '새로운 두개의 사용자 정의 명령을 추가함으로써 새로운 명령 목록 생성 MyTool.Commands.AddCommand 10 MyTool.Commands.AddCommand 11 '사용자 정의 이미지로 Commands Picture 설정 (Adding Pictures 참조) MyTool.Commands.AddPicture Picture1.Picture '각 사용자 정의 명령에 아이콘 설정 MyTool.Commands(10).Picture = 0 MyTool.Commands(11).Picture = 1 '각 사용자 정의 명령에 텍스트 설정 MyTool.Commands(10).Text = "Command 1" MyTool.Commands(11).Text = "Command 2" ' 두개의 새 버튼을 새 도구 막대에 추가 MyTool.AddItems 2,0 ' 새 버튼에 CommandID 할당 MyTool(0).CommandID = 10 MyTool(1).CommandID = 11 마지막으로 Chart FX에게 새로운 도구 막대가 존재한다는 사실을 알리기 위해서 AddBar 메소드를 사용해야 하고 다음과 같이 차트 윈도우에서 새로 만든 도구 막대를 보이기 위해서 Visible 프로퍼티를 설정합니다: ChartFX1.AddBar 3,MyTool MyTool.Visible = TRUE AddBar 메소드는 첫번째 인자로 Chart FX에 추가한 도구 막대의 ID를 받습니다. 이 ID는 새로 만들어진 도구 막대의 핸들을 얻으려 할 때 GetBar 메소드를 사용해서 얻거나 도구 막대를 제거할 때 RemoveBar 메소드를 사용해서 얻을 수 있습니다. 이것은 도구 막대의 ID를 기억할 필요가 있을 때 그리고 GetBar나 RemoveBar 메소드를 이용해서 핸들을 얻거나 제거할 때만 필요하기 때문에 MyTool 변수를 전역 변수로 설정하는 것은 별로 바람직하지 않습니다. 다른 Chart FX ID처럼 AddBar 메소드에 사용된 ID도 CFX_ID_FIRST (29440)와 CFX_ID_LAST (29951) 사이의 값을 가질 수 없습니다.

Page 141: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

131

DataEditor 객체 Chart FX 는 Chart FX에 저장되어 있는 데이터를 테이블 형태로 볼 수 있는 ‘데이터 에디터’라고 하는 스프레드시트 프로그램을 제공합니다. 또한 이것은 사용자가 차트에 포함된 범례나 값들(프로그래머에 의해 허락된 경우)을 변경할 수 있도록 해줍니다. 다른 Chart FX 도구와 마찬가지로 데이터 에디터 역시 사용자가 위치를 마음대로 설정하고 차트 내에 다양한 형태로 사용할 수 있도록 하기 위해서 다른 윈도우 위에 떠서 위치하는 형태(floating)와 격납된 형태(docked)로 제공합니다.

DataEditorObj 객체는 데이터 에디터를 제어합니다. 이 객체를 이용해서 이 도구의 위치와 색상 그리고 중요한 사항들을 설정할 수 있습니다. 예를 들어 데이터 에디터를 보이고 차트의 윗부분에 위치시키려 할 때 다음과 같이 이 객체를 사용할 수 있습니다:

ChartFX1.DataEditorObj.Docked = TGFP_TOP ChartFX1.DataEditorObj.Visible = True

Chart FX 설치 디렉토리의 \help 부분에 있는 Chart FX API 전자 도움말 파일을 참조하기 바랍니다.

Page 142: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

132

PaletteBar 객체 Chart FX은 최종 사용자가 차트 요소에 색상을 드랙&드롭해서 변경하거나 Chart FX에서 제공하는 다양한 색상안으로부터 팔레트를 선택하게 해 주는 PaletteBar 객체를 제공합니다. 다른 Chart FX 도구와 마찬가지로 PaletteBar 역시 사용자가 위치를 마음대로 설정하고 차트 내에 다양한 형태로 사용할 수 있도록 하기 위해서 다른 윈도우 위에 떠서 위치하는 형태(floating)와 격납된 형태(docked)로 제공합니다. PaletteBar 객체는 차트 영역에서 표시될 때의 위치와 스타일을 설정할 수 있도록 합니다.

PaletteBarObj 객체는 팔레트 막대를 제어합니다. 이 객체를 사용해서 이 도구의 위치와 다른 사항들을 제어할 수 있습니다. 예를 들어 팔레트 막대를 차트의 위쪽에 표시하려 하면 다음과 같이 PaletteBarObj 개체를 사용합니다:

ChartFX1.PaletteBarObj.Docked = TGFP_TOP ChartFX1.PaletteBarObj.Visible = True

Chart FX 설치 디렉토리의 \help 부분에 있는 Chart FX API 전자 도움말 파일을 참조하기 바랍니다.

Page 143: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

133

PatternBar 객체 Chart FX은 최종 사용자가 패턴을 차트 요소에 드랙&드롭 시킬 수 있도록 하는 패턴 막대라는 툴을 제공합니다. Scheme 프로퍼티의 설정에 따라서 이 패턴은 흑백이나 컬러로 표시됩니다. 다른 Chart FX 도구와 마찬가지로 PatternBar 역시 사용자가 위치를 마음대로 설정하고 차트 내에 다양한 형태로 사용할 수 있도록 하기 위해서 다른 윈도우 위에 떠서 위치하는 형태(floating)와 격납된 형태(docked)로 제공합니다. PatternBar 객체는 차트 영역에서 표시될 때의 위치와 스타일을 설정할 수 있도록 합니다.

PatternBarObj 객체는 패턴 막대를 제어합니다. 이 객체를 사용해서 이 도구의 위치와 다른 사항들을 제어할 수 있습니다. 예를 들어 패턴 막대를 차트의 위쪽에 표시하려 하면 다음과 같이 PatternBarObj 개체를 사용합니다:

ChartFX1.PatternBarObj.Docked = TGFP_TOP ChartFX1.PatternBarObj.Visible = True

Chart FX 설치 디렉토리의 \help 부분에 있는 Chart FX API 전자 도움말 파일을 참조하기 바랍니다.

Page 144: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

134

LegendBox 객체 범례 상자는 데이터 점들(시리즈가 아님)과 관련된 범례들을 표시하는 데 사용되고 PIE, DOUGHNUT , PYRAMID 와 같은 축이 없지만 점에 대한 레이블이 필요한 차트들에 대해서 가독성을 높이는데 필요한 것입니다. 다른 Chart FX 도구와 마찬가지로 범례 상자 역시 사용자가 위치를 마음대로 설정하고 차트 내에 다양한 형태로 사용할 수 있도록 하기 위해서 다른 윈도우 위에 떠서 위치하는 형태(floating)와 격납된 형태(docked)로 제공합니다.

시리즈에 대한 범례를 표시하기 위해서는 SerLegBox 객체를 참조합니다. LegendBoxObj 객체는 차트내에 범례를 표시하는 윈도우를 제어합니다. 보통 이 레이블들은 좌표축내에 표시됩니다. 그러나 축을 표시하지 않는 차트 타입에 대해서는 이 윈도우가 차트의 가독성을 증가시키기 위해서 매우 중요한 역할을 합니다. . 이 객체를 사용해서 이 도구의 위치와 다른 사항들을 제어할 수 있습니다. 예를 들어 범례 상자를 차트의 오른쪽에 표시하려 하면 다음과 같이 LegendBoxObj 개체를 사용합니다:

ChartFX1.LegendBoxObj.Docked = TGFP_RIGHT ChartFX1.LegendBoxObj.Visible = True

Chart FX 설치 디렉토리의 \help 부분에 있는 Chart FX API 전자 도움말 파일을 참조하기 바랍니다.

Page 145: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

135

SerLegBox 객체 시리즈 범례는 사용자가 위치를 마음대로 설정하고 차트 내에 다양한 형태로 사용할 수 있도록 하기 위해서 다른 윈도우 위에 떠서 위치하는 형태(floating)와 격납된 형태(docked)로 제공됩니다. SerLegBox 객체는 차트 영역에서 표시될 때의 위치와 스타일 설정등과 관련된 모든 특성을 제공합니다.

다중 시리즈 차트에서는 차트에 표시되는 시리즈에 대한 설명을 포함한 상자를 추가하는 것이 보통입니다. Series 객체 또는 SerLeg 프로퍼티를 사용해서 시리즈 범례를 할당했다면 SerLegBoxObj 객체를 통해서 시리즈 범례 상자를 제어할 수 있습니다. 이 객체를 사용해서 이 도구의 위치와 다른 사항들을 제어할 수 있습니다. 예를 들어 팔레트 막대를 차트의 왼쪽에 표시하려 하면 다음과 같이 SerLegBoxObj 개체를 사용합니다:

ChartFX1.SerLegBoxObj.Docked = TGFP_LEFT ChartFX1.SerLegBoxObj.Visible = True

Chart FX 설치 디렉토리의 \help 부분에 있는 Chart FX API 전자 도움말 파일을 참조하기 바랍니다.

Page 146: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

136

Page 147: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

137

Chart FX 프로그래머 가이드

실시간 차트

이 장에서 다뤄지는 주제들

개요 실시간에 데이터 전달하기

스크롤링 범례

Page 148: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

138

Page 149: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

139

실시간 차트 . 개요 Chart FX는 고속의 페인팅 모드(깜박임 제거)에서 차트 스크롤링을 제공하는 몇몇 함수를 통해서 진정한 실시간 차트 기능을 제공합니다. 데이터 오버플로우를 제거하기 위해서 차트 FX는 실시간 차트에 라이브러리가 받아들일 수 있는 점의 최대 개수를 지정하고 있고 차트에 새로운 값을 삽입하거나 설정할 때 이전의 값은 버려지게 됩니다. Chart FX는 두가지 다른 실시간 차트를 제공합니다: 1) 제한적 실시간: 점 개수의 최대값(미리 지정된 버퍼를 통해서)이 존재하는 차트입니다. 이러한 종류의 차트는 메모리를 한번만 할당(MaxValues 프로퍼티를 호출할 때)하기 때문에 Chart FX에서 사용 가능한 종류 중 가장 빠른 것입니다. 또한 이것은 차트가 최대 설정 개수 만큼만 취하고 나머지는 무시한다는 것을 의미합니다(즉, 점의 최대 개수로 15를 설정하면 16의 점을 전달하면 이중에 한 개를 무시한다는 것입니다.) 이전에 전달한 점을 유실하는 것이 그리 중요한 것이 아니라면 빠른 데이터 입력 속도가 필요할 때 실시간 적용을 위해서 이 방법을 추천합니다. 이런 종류의 차트에 대해서 두가지의 변형이 가능합니다: • 표준: 버퍼가 가득 찬 상태에서(최대 개수에 도달) 새로운 점을 삽입하려 하면 데이터는 스크롤되어서 첫번째 점을 잃어버리게 되고 n번째 점은 n-1번째가 됩니다.

• 루프 포지션(Loop Position): 표준과 동일하지만 새로운 값을 설정할 때 마다 사용자 정의가능한 세로 줄이 ‘새로 획득된 점’으로 변경될 점으로 이동됩니다. 데이터 집합의 끝부분에 도달하면 이 루핑 표시자는 첫번째로 이동하게 됩니다.

2) 무제한적 실시간 차트: 이러한 유형의 차트들은 기존의 점들을 제거하지 않고 새로운 점들을 추가할 수 있습니다. 또한 새로운 점을 받을 때 마다 차트를 스크롤 되도록 선택해서 이전의 데이터를 볼 수도 있습니다. 어플리케이션의 조건에 따라서 차트가 자동적으로 스크롤되도록 할수 있습니다. 다음 페이지에서 아래와 같은 내용을 다루게 됩니다: 실시간 차트를 생성하고 데이터를 전달하는 방법 실시간 스타일을 설정하기 루프 표시 요소를 사용자 정의하기

Page 150: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

140

실시간 차트를 생성하고 데이터 전달하기.

실시간 차트에 대한 예제 프로젝트가 Chart FX 예제 디렉토리에 포함되어 있습니다.(realtime 서브 디렉토리)

실시간 차트를 생성하기 위해서는 다음 단계를 따릅니다: • Type 프로퍼티를 이용해서 CT_EVENSPACING을 차트 타입에 설정합니다(디자인 시나 실행 시에)

• 제한적인 실시간 차트를 생성할 경우에는 MaxValues에 점의 개수를 지정합니다(강력 추천!).

• 원하는 실시간 스타일을 정하기 위해서 RealTimeStyle 프로퍼티를 호출합니다.

• COD_VALUES 와 결합해서 COD_ADDPOINTS를 사용해서 실시간 차트에 대한 통신 채널을 엽니다(OpenDataEx 메소드). 이렇게 함으로써 데이터 배열을 가리키고 있는 포인터들을 이전에 마지막으로 추가된 점에 상대적인 값으로 변환시킵니다. 따라서 차트가 현재 가지고 있는 점의 개수나 마지막으로 전달된 점의 인덱스를 일일이 기억할 필요가 없습니다.

• 점에 대한 절대적인 인덱스 대신에 오프셋을 이용해서 새로운 점들에 해당하는 값을 할당합니다. 이렇게 한다는 것은 차트에 두개의 새로운 점을 첨가하려고 할 때(CloseData 메소드를 사용하기 이전에) Value 프로퍼티에 있는 0과 1의 점 인덱스를 사용해야 한다는 것을 의미합니다.

• 다음의 상수와 함께 COD_VALUES를 사용해서 CloseData 메소드를 호출합니다:

COD_REALTIME Chart FX는 데이터 집합의 끝으로 스크롤하지 않습니다. COD_REALTIMESCROLL Chart FX는 차트를 데이터 끝으로 스크롤합니다.

다음의 예제는 매초 두개의 새로운 값으로 어플리케이션을 호출하는 타이머를 가지고 있다고 가정합니다. 따라서 핵심은 이러한 점들을 실시간 모드의 차트에 포함하는 것입니다” ‘차트를 실시간 모드로 준비 Chart1.Type = Chart1.Type Or CT_EVENSPACING ‘버퍼 크기를 50으로 Chart1.MaxValues = 50 ‘루프 표시 요소를 추가하고 모래시계 커서를 숨김 Chart1.RealTimeStyle = CRT_LOOPPOS Or CRT_NOWAITARROW ... ‘타이머 호출이 언제 새로운 데이터를 설정할 것인지를 지정 Chart1.OpenDataEx COD_VALUES Or COD_ADDPOINTS,1,2 ‘시리즈 1에 새로운 두개의 점들을 지정 Chart1.Value(0) = Rnd * 100 Chart1.Value(1) = Rnd * 100 ‘스크롤을 일으키는 채널을 닫음 Chart1.CloseData COD_VALUES Or COD_REALTIMESCROLL

Note

Page 151: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

141

실시간 스타일 설정 실시간 스타일은 차트가 어플리케이션에서 어떻게 표시되는지를 결정합니다. 기본적으로 적용가능한 두가지 스타일은 실시간 차트에서 루프 표시 요소를 보이는 것과 모래시계 커서를 숨기는 것입니다. VBX 모델과 관련된 프로퍼티는 RealTimeStyle 입니다. 이 프로퍼티는 차트의 실시간 스타일을 얻거나 설정하는데 사용됩니다. 설정 사항은 다음 상수의 조합으로 이루어 집니다: CRT_LOOPPOS 루프 표시 요소 보이기 CRT_NOWAITARROW 모래시계 커서 숨기기 예를 들어 두가지 스타일을 모두 지정하려면: Chart1.RealTimeStyle = CRT_LOOPPOS Or CRT_NOWAITARROW 루프 표시 요소 사용자 정의하기 루프 표시 요소는 CI_LOOPPOS 인덱스를 사용하는 ‘ItemColor’, ‘ItemWidth’ , ‘ItemStyle’ 프로퍼티를 사용해서 사용자 정의할 수 있습니다.

Page 152: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

142

실시간 모드에서 X축 범례 스크롤링하기. 실시간 차트로 작업을 하고 있고 X축의 점들에 대해서 범례를 추가하려 한다면 새로운 데이터를 받을 때 마다 실시간 차트가 적절한 범례를 가질 수 있도록 하기 위해서 이 범례들을 스크롤하도록 하는 것이 필요합니다.

예제 서브 디렉토리에서 차트가 새로운 정보를 받을 때 마다 범례를 스크롤하는 실시간 차트 예제를 볼 수 있습니다.

DLL 모델에서 X축 범례를 스크롤하기 위해서 다음의 규칙을 따라야 합니다: • TypeEX 프로퍼티에 CTE_NOLEGINVALIDATE 상수를 포함합니다.

• COD_ADDPOINTS 상수를 조합해서 통신 채널을 엽니다(OpenDataEx 메소드). (항상 실시간 차트 작업을 할 때는 이렇게 해야 합니다).

• Value 프로퍼티에서 상대 위치를 사용해서 새로운 점에 대한 값을 지정하고 새로운 점에 할당하려는 범례를 준비합니다.

• MaxValues 프로퍼티로 BufferSize 를 설정하려하면(제한된 실시간 차트) 새로운 데이터를 받고 이로 인해 차트의 최대 데이터 개수에 도달 할 때 마다 첫번째 범례를 지워야 합니다. 첫번째 범례를 지우기 위해서 Legend 프로퍼티를 사용하고 chr(1)을 인덱스 0 으로 설정합니다.

• 첫번째 범례를 지우고 나서 MaxValue-1***(50 개 점을 가지는 버퍼에 대해서 점 범례를 49 번으로 지정할 수 있습니다. Chart FX 에서는 0 을 기준으로 한다는 것을 기억해야합니다)을 인덱스 값으로 가지는 새로운 범례와 이 범례를 포함하는 설정사항을 지정할 수 있습니다.

• 마지막으로 Chart FX 가 범례를 스크롤할 수 있도록 하기 위해서 CloseData 메소드에 COD_SCROLLLEGENDS 상수를 포함시킵니다.

• Note: 범례를 스크롤 시키는 것은 실시간 차트에 루프 표시 요소를 가지고 있을 때는 적용되지 않습니다.

만일 실시간 차트에 할당된 버퍼 크기(할당된 MaxValues)를 고려하지 않는다면 마지막 점 범례를 설정하기 위해 점의 실제 개수를 사용해야만 합니다. nValues 프로퍼티의 값을 읽어서 범례에 MaxValues-1 값을 할당하는 대신 nValues-1을 할당할 수 있습니다.

Note

Note

Page 153: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

143

Chart FX 프로그래머 가이드

개방형 페인팅 구조

이 장에서 다뤄지는 주제들

차트 페인팅 사용자 정의. 개요 CPI 상수

PrePaint 예제 PaintMarker 예제

Page 154: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

144

Page 155: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

145

차트 페인팅 사용자 정의

차트 페인팅을 사용자 정의하기 위해서 윈도우 API에 있는 다양한 객체들(예를 들어 펜, 브러쉬 객체)에 익숙해질 필요가 있습니다. 따라서 초보 윈도우 개발자이거나 윈도우 환경에서 이러한 객체들을 처리하는데 익숙하지 않다면 윈도우 32 SDK를 참조하시기 바랍니다.

차트 페인팅 과정을 사용자 정의 하기 위해서는 개발자는 세가지 다른 이벤트(공지 메시지)를 처리할 수 있어야 하고 차트 윈도우에 객체를 표현(차트의 배경에 있거나 위에 있거나에 관계없이)할 수 있는 메소드와 프로퍼티들을 알아야 합니다. 이러한 객체들은 글꼴이 될수도 있고 사각형, 원, 화살표, 비트맵, 개발자가 개발한 객체 등이 될 수 있고 이것들을 디바이스 컨택스트에서 어떻게 적절하게(즉 페인팅 과정에서) 처리할 수 있는지를 알 필요가 있습니다. 이러한 개방적인 구조를 통해서 Chart FX는 개발자가 자신의 어플리케이션에서 필요로 하는 거의 모든 종류의 사용자 정의를 제공합니다. 이러한 사실로 인해서 이 절에서는 몇가지의 예제를 통해서 차트의 페인팅을 사용자 정의하는 방법을 설명합니다. 어플리케이션에 따라 이 예제들을 다른 방식으로 적용할 수도 있을 것입니다. 다음의 다이어그램에서 설명된 세가지 종류의 공지 메시지를 받게 될 것입니다”

PrePaint 이벤트: 이 이벤트는 차트가 그려지기 전에 보내집니다. 따라서 차트의 배경을 사용자 정의하는데 유용하게 사용됩니다. 배경을 그래디언트(gradient)로 설정하거나 특정 그림이나 비트맵으로 채우려고 할 때 이것을 사용합니다. 차트에는 아직 데이터 표시 요소에 대한 계산은 이루어 지지 않았지만 차트의 축(CPI_*)은 나타나 있습니다. 다음 페이지를 참조해 주십시오

PaintMarker 이벤트: 이 이벤트는 각 데이터 표시 요소가 그려질 때 마다 보내집니다. 이 이벤트는 차트 내의 특정한 정보를 강조하고 싶을 때 유용하게 사용할 수 있습니다. 그려지고 잇는 객체 중에서 강조하고 싶은 것을 쉽게 나타낼 수 있습니다. 이 이벤트에서는 데이터 표시 요소와 차트의 축(CPI_*)이 표시되어 있습니다. 다음 페이지를 참조해 주십시오

PostPaint 이벤트: 차트가 다 그려지고 나서 이 이벤트가 이후의 사용자 정의 설정을 위해서 보내집니다. 이 이벤트는 차트에 화살표나 다른 글꼴 등을 차트에 첨가하기 위해서 유용하게 사용할 수 있습니다. 이 이벤트에서는 데이터 표시 요소와 차트의 축(CPI_*)이 표시되어 있습니다. 다음 페이지를 참조해 주십시오

차트 페인팅을 사용자 정의할 때 적절한 정보 얻기

Note

Page 156: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

146

객체를 위치시킬 때 차트에 그려질 각각의 아이템들의 위치를 알 필요가 있는 경우가 있습니다. 예를 들어 차트에서 4번 점을 사각형으로 강조하기 위해서 이 점이 어디에 위치하고 있는지(즉, 좌표)를 알아야 합니다. 적절한 CPI_* 상수와 함께 PaintInfo 메소드를 사용하면 이것을 해결할 수 있습니다. CPI 상수.- CPI_GETDC:

설명: 차트의 디바이스 컨택스트를 얻어서 여기에 그림을 그릴 수 있도록 함. 중요 : 이 정보를 호출하려고 할 때 페인트 이벤트(PrePaint, PostPaint, PaintMarker)에 있지 않다면 이것에 대한 사용을 마칠 때 CPI_RELEASEDC를 호출해야 함.

lSetting: 읽기 전용 리턴 값: 디바이스 컨택스트 (HDC)

CPI_ RELEASEDC:

설명: 차트 디바이스 컨택스트를 사용 해제함. lSetting: CPI_GETDC를 통해 리턴되는 hDC 리턴 값: 쓰기 전용

CPI_MARKERTOPIXEL:

설명: nSerie-nPoint 를 차트 윈도우의 좌표에 관련되는 값으로 변환 lSetting: LOWORD = nSerieHIWORD = nPointSetting

nSerie -1 값은 해당 데이터 표시 요소의 중앙을 나타냄 리턴 값: LOWORD = XHIWORD =Y

CPI_POSITION

설명: 차트의 왼쪽 위 모서리의 값을 얻음. lSetting: 읽기 전용 리턴 값: LOWORD = left HIWORD = top 차트가 표준 페인트 이벤트에 의해서 화면에 차트가 그려지고 있다면 이 값은 0을 가짐.

CPI_DIMENSION

설명: 차트의 높이와 넓이값(픽셀 단위)을 얻음 lSetting: 없음 리턴 값: LOWORD = Width HIWORD = Height

Page 157: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

147

CPI_PRINTINFO

설명: 이 코드는 차트가 인쇄되고 있는지를 알기 원할 때나 어떤 값을 프린터 해상도 값으로 변환하고자 할 때 사용됨

lSetting: 차트가 인쇄중인 것을 확인하려고 할 때나 어떤 픽셀이 프린터 좌표에서 어떻게 나타나는지를 알기 원하는 경우에는 없음.

리턴 값: LOWORD=페이지 인쇄중, 0 = 인쇄중 아님. HIWORD=프린터 좌표로 변환 CPI_SCROLLINFO

설명: 스크롤되는 실제의 위치와 스크롤 페이지당 점의 개수를 얻음 lSetting: 축 인덱스 리턴 값: LOWORD=Actual Pos.HIWORD=Maximum.

CPI_3DINFO

설명: 각 데이터 표시 요소의 깊이와 차트의 총 깊이를 얻음(Z 축 차원) lSetting: 읽기 전용 리턴 값: LOWORD = 데이터 표시 요소 DepthHIWORD = 총 차트의 깊이(Z 축)

CPI_3DTO2D

설명: 좌표를 3차원에서 2차원으로 변환. lSetting: CHART_P3D 스트럭쳐를 가리키는 포인터 리턴 값: LOWORD = 2D X-좌표 HIWORD = 2D Y-좌표

Page 158: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

148

PrePaint 이벤트 예제 다음의 코드는 PrePaint 이벤트를 이용하고 배경을 그리기 위한 윈도우 API를 사용해서 차트의 뒷부분에 그래디언트 배경을 그리는 것입니다:

다음의 코드는 PrePaint 이벤트 내에 있어야 합니다. 예제 서브 디렉토리에서 이 코드를 포함한 예제 프로젝트를 볼 수 있습니다.

' 그래디언트 배경 그리기 hDeviceC = ChartFX1.PaintInfo(CPI_GETDC) ' 차트 위치 구하기 (차트를 인쇄하거나 chart_paint를 사용할 때 유용) lPos& = ChartFX1.PaintInfo(CPI_POSITION) x = CHART_LOWORD(lPos&) y = CHART_HIWORD(lPos&) hOldPen% = SelectObject(hDeviceC, GetStockObject(NULL_PEN)) nHeight% = (h / 20) + 1 nWidth% = (w / 20) + 1 h = h + y w = w + x For i = 0 To 9

l& = RGB(255 - (i * 20), 255 - (i * 20), 100) hBrush% = CreateSolidBrush(l&) hOldBrush% = SelectObject(hDeviceC, hBrush%) l& = Rectangle(hDeviceC, x + nWidth% * i, y + nHeight% * i, w - (nWidth% * i) + 1, h - (nHeight% * i) + 1) hOldBrush% = SelectObject(hDeviceC, hOldBrush%) hBrush% = DeleteObject(hBrush%)

Next i hOldPen% = SelectObject(hDeviceC, hOldPen%) ChartFX1.PaintInfo CPI_RELEASEDC, hDeviceC

Note

Page 159: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

149

PaintMarker 이벤트 예제 다음의 코드는 차트 내에 어떤 점들이 50이상의 값을 가지는지를 파악한 후에 이러한 점들을 사각형으로 둘러싸는 예제 입니다. 위에서 언급했듯이 이 이벤트는 차트 내에서 다양한 데이터 표시 요소들(점, 막대 등)을 강조하거나 꾸미는데 매우 유용합니다. 이 이벤트는 데이터 표시 요소들이 그려질 때 마다 보내집니다. 따라서 개발자는 차트 내에서 다양한 데이터 표시 요소들을 사용자 정의하기 위해서 유용한 정보(표시될 위치 등)를 얻을 수 있습니다

다음의 코드는 PaintMarker 이벤트 내에 있어야 합니다. 예제 서브 디렉토리에서 이 코드를 포함한 예제 프로젝트를 볼 수 있습니다.

ChartFX1.ThisSerie = nSerie f# = ChartFX1.Value(nPoint) If f# > 50 Then

nRadio% = 3 * ChartFX1.MarkerSize l& = nRadio% l& = ChartFX1.PaintInfo(CPI_PRINTINFO, l&) If l& Then

nRadio% = CHART_HIWORD(l&) End If hDeviceC = ChartFX1.PaintInfo(CPI_GETDC) hOldBrush% = SelectObject(hDeviceC, GetStockObject(NULL_BRUSH)) i = Rectangle(hDeviceC, x - nRadio%, y - nRadio%, x + nRadio%, y + nRadio%) hOldBrush% = SelectObject(hDeviceC, hOldBrush%) ChartFX1.PaintInfo CPI_RELEASEDC, hDeviceC

End If

Note

Page 160: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

150

Page 161: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

151

Chart FX 프로그래머 가이드

Chart FX UI 크로스 레퍼런스(Cross Reference)

이 장에서 다뤄지는 주제들

General 대화 상자 Series 대화 상자

Axis 대화 상자 Axis Scale 대화 상자

Axis Labels 대화 상자 Axis Gridlines 대화 상자

3D Effects 대화 상자 Constants & Stripes 대화 상자

Data/Behavior 대화 상자 Commands 대화 상자 Extensions 대화 상자

Page 162: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

152

Page 163: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

153

General 대화 상자 이 대화 상자는 차트 내에서 3차원 중첩 스타일, 메이저 단위 눈금선, 색상 등과 같은 일반적인 설정사항을 지정할 수 있도록 합니다.

1) 이 옵션은 사용자가 2D/3D를 선택할 수 있게 합니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Chart3D = True / False

2) 겹쳐진 차트를 나타내려고 할 때 각각의 시리즈들은 자신의 Z 축에 대한 위치를 가지게 됩니다. 이것은 세개의 차트가 있는 경우에 이 프로퍼티가 On되어 있다면 각각의 데이터 시리즈들은 데이터의 한 행을 차지하게 되고 차트에는 세 개의 행(z축으로 겹쳐진)이 나타나게 될 것이라는 것을 의미합니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Cluster = True / False

3) 이 옵션은 사용자가 차트내의 모든 시리즈들을 중첩시키도록 해 줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Stacked = True / False

Note: Series 객체에서 제공되는 Stacked 프로퍼티를 이용해서 시리즈를 중첩시킬 수도 있습니다. 4) 이 옵션은 사용자가 축이 그려지는 스타일을 변경할 수 있도록 합니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

Page 164: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

154

ChartFX1.AxesStyle = CAS_MATH (다른 설정도 가능)

5) 이 옵션은 사용자가 가로 세로 눈금 표시선을 그릴 수 있도록 합니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Grid = CHART_HORZGRID Or CHART_VERTGRID

Note: Axis 객체는 눈금 표시선과 관련된 더 많은 프로퍼티들을 제공합니다. 6) 이 옵션은 사용자가 전체 차트 팔레트를 변경할 수 있도록 해줍니다. 이 옵션으로 차트 내의 모든 요소들이 영향을 받게 됩니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Palette = “Dark Pastels”

Note: Chart FX의 팔레트들은 클라이언트 머신에서 리지스트리 요소로 적용되기 때문에 이 프로퍼티를 어플리케이션에 적용하려고 할때는 팔레트가 적절히 적용이 되어 있고 클라이언트 머신에 등록이 되어 있는지를 확인해야 합니다. 더 자세한 정보를 위해서는 ‘적용 문제’를 참조하기 바랍니다. 7) 이 옵션은 사용자가 데이터 표시 요소에 대한 색상안을 변경할 수 있게 합니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Scheme = CHART_CSPATTERN

Note: 이 옵션은 사용자가 단일색 표시에서 사선 패턴으로 변환할 수 있도록 합니다. 흑백도 역시 지원됩니다. 8) 이 옵션은 사용자가 차트 상자에 대한 색을 설정할 수 있도록 합니다. 이것은 데이터 표시 요소들이 포함되는 배경 공간입니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.RGB2dBk = RGB(255,0,255) ‘2D 차트 ChartFX1.RGB3DBk = RGB(255,0,0) ‘3D 차트

9) 이 옵션은 사용자가 배경색을 설정할 수 있도록 합니다. 이 배경은 차트가 그려지는 공간을 말합니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.RGBBk = RGB(255,0,255) Note: BkPicture 프로퍼티를 사용해서 배경 그림을 지정할 수도 있습니다. 10) 이 옵션은 사용자가 차트의 제목을 지정할 수 있도록 합니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Title(CHART_TOPTIT) = “My Top Title”

Page 165: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

155

Series 대화 상자 (<<All Series>> 가 선택됨) 이 대화 상자는 콤보상자내에서 <<All series>>가 선택되었을 때 차트 내의 시리즈와 관련된 시각적 속성을 포함한 특정 설정사항을 지정할 수 있도록 해 줍니다. 설정 사항은 차트 내의 모든 시리즈들에 영향을 미치게 되고 특정 시리즈가 선택되었다면 그에 맞는 다른 프로퍼티 집합이 나타나게 됩니다. 따라서 이 대화상자에 대한 두가지 다른 스크린 샷을 제시합니다:

1) 이 옵션은 사용자가 시리즈에 대한 색을 변경할 수 있도록 해 줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Color = RGB(255,0,255)

Note: OpenDataEX 메소드와 CloseData 메소들을 사용해야 합니다. 2) 이 옵션은 시리즈에 대한 테두리(border)를 나타낼 수 있도록 해줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Border = True/False

3) 이 옵션은 사용자가 테두리 색을 변경할 수 있도록 해줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.BorderColor = RGB(255,0,255)

4) 이 옵션은 사용자가 테두리의 선 유형을 변경할 수 있도록 해줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

Page 166: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

156

ChartFX1.LineStyle = CHART_DASH

5) 이 옵션은 사용자가 테두리의 선 두께를 변경할 수 있도록 해줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.LineWidth = 3

Note: 윈도우 95/98에서 LineWidth는 실선(solid) 형태와만 같이 사용가능합니다. 6) 이 옵션은 사용자가 차트 종류를 변경할 수 있도록 해줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Gallery = AREA

7) 이 옵션은 사용자가 각 데이터 표시 요소에 할당된 공간을 변경할 수 있도록 해줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Volume = 50

8) 이 옵션은 사용자가 막대 차트나 육면체(cube)차트에 대해서 데이터 표시 요소의 모양을 원통형이나 원뿔형으로 변경할 수 있도록 해줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.CylSides = 12 (원통형)

ChartFX1.CylSides = -12 (원뿔형) 9) 이 옵션은 사용자가 시리즈에 대한 점 표시 요소를 보이거나 숨길 수 있도록 해줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.PointLabels = True/False

10) 이 옵션은 사용자가 차트 내의 특정 시리즈를 숨기거나 보일 수 있도록 해줍니다. 이것을 어떻게 프로그램 상에서 구현하는지에 대한 자세한 정보는 이후의 페이지에 설명되어 있습니다.

Page 167: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

157

Series 대화 상자 이 대화 상자는 차트 내의 시리즈들에 대한 시각적인 속성 등을 포함한 특정한 설정 사항을 지정하기 위한 것입니다. 어떤 시리즈가 이 대화 상자에서 선택되면 그 선택된 시리즈에 대해서만 설정 사항이 적용됩니다. 또한 선택된 시리즈 갤러리에 따라서 대화상자가 변화할 것입니다. 이것은 표현되는 시리즈의 종류에 따라서 여기에서 설명되는 몇몇 설정 사항들은 적용되지 않음을 의미합니다. 특정 시리즈가 선택되었을때의 가장 큰 차이점은 이 대화 상자에서 호출되는 프로퍼티와 메소드들이 Series 객체에 속하는 것이고 Chart FX API의 일반 프로퍼티가 아니라는 것입니다.

1) 이 옵션은 사용자가 특정 시리즈에 대해서 색을 변경할 수 있도록 해 줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Series(1).Color = RGB(255,0,255)

2) 이 옵션은 사용자가 시리즈에 대한 경계선을 보일 수 있도록 해 줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Series(1).Border = True/False

3) 이 옵션은 사용자가 경계선 색을 변경할 수 있도록 해 줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Series(1).BorderColor = RGB(255,0,255)

Page 168: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

158

4) 이 옵션은 사용자가 경계선 유형을 변경 할 수 있도록 해 줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Series(1).LineStyle = CHART_DASH

5) 이 옵션은 사용자가 경계선 폭을 설정할 수 있도록 해 줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Series(1).LineWidth = 3

Note: 윈도우 95/98에서 LineWidth는 실선(solid) 형태와만 같이 사용가능합니다. 6) 이 옵션은 사용자가 특정 시리즈에 대해서 차트 종류를 변경할 수 있도록 해줍니다. 이 프로퍼티를 사용해서 다중 유형 차트를 구현할 수 있습니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Series(1).Gallery = AREA

7) 이 옵션은 사용자가 각 데이터 표시 요소에 할당된 공간을 변경할 수 있도록 해줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다. 이 프로퍼티는 차트 내의 모든 시리즈에 영향을 가집니다:

ChartFX1.Volume = 50

8) 이 옵션은 사용자가 막대 차트나 육면체(cube)차트에 대해서 데이터 표시 요소의 모양을 원통형이나 원뿔형으로 변경할 수 있도록 해줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Series(1).CylSides = 12 (원통형)

ChartFX1.Series(1).CylSides = -12 (원뿔형) 9) 이 옵션은 사용자가 시리즈에 대한 점 표시 요소를 보이거나 숨길 수 있도록 해줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Series(1).PointLabels = True/False

10) 이 옵션은 사용자가 차트 내의 특정 시리즈를 숨기거나 보일 수 있도록 해줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Series(1).Visible = True/False

Page 169: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

159

Axis 대화 상자 이 대화 상자는 메이저 단위 간격, 마이너 단위 간격, 배율, 최소, 최대, 눈금선, 눈금 표시 등을 포함한 축 설정을 할 수 있도록 하는 것입니다.

1) 이 옵션은 사용자가 선택된 축에 대해서 메이저 단위 간격을 설정 할 수 있도록 해줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Axis(AXIS_Y).Step = 10

2) 이 옵션은 사용자가 메이저 단위 간격에 대해서 눈금 표시(tickmark) 형식을 제어할 수 있도록 해줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Axis(AXIS_Y).TickMark = TS_CROSS

3) 이 옵션은 사용자가 선택된 축에 대해서 마이너 단위 간격을 제어할 수 있도록 해줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Axis(AXIS_Y).MinorStep = 5

4) 이 옵션은 사용자가 레이블과 눈금표시를 포함해서 특정 축을 보이거나 숨길 수 있도록 해줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Axis(AXIS_Y).Style = AS_HIDE

Page 170: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

160

5) 이 옵션은 사용자가 메이저 단위 간격에 대한 눈금선을 보이거나 숨길 수 있도록 해줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Axis(AXIS_Y).Grid = True/False

6) 이 옵션은 사용자가 마이너 단위 간격에 대한 눈금선을 보이거나 숨길 수 있도록 해줍니다 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Axis(AXIS_Y).MinorGrid = True/False

7) 이 옵션은 사용자가 마이너 단위 간격에 대해서 눈금 표시(tickmark) 형식을 제어할 수 있도록 해줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Axis(AXIS_Y).MinorTickMark = TS_INSIDE

Page 171: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

161

Axes Scale 대화 상자 이 대화 상자는 최소, 최대, 로그 배율을 포함한 축의 배율을 조작할 수 있도록 해 줍니다.

1) 이 옵션은 사용자가 선택된 축에 대해서 최소값을 설정할 수 있도록 해줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Axis(AXIS_Y).Min = 0

2) 이 옵션은 사용자가 선택된 축에 대해서 최대값을 설정할 수 있도록 해줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Axis(AXIS_Y).Max = 100

3) 이 옵션은 사용자가 선택된 축에 대해서 배율 단위를 설정할 수 있도록 해줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Axis(AXIS_Y).ScaleUnit = 1

4) 이 옵션은 사용자가 좌표축 형식을 설정할 수 있도록 해줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Axis(AXIS_Y).Format = AF_DATE

5) 이 옵션은 사용자가 선택된 축에 대해서 소수의 개수을 설정할 수 있도록 해줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Axis(AXIS_Y).Decimals = 2

Page 172: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

162

6) 이 옵션은 사용자가 로그 배율이나 선형 배율을 선택할 수 있도록 해줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Axis(AXIS_Y).LogBase = 10

7) 이 옵션은 사용자가 0에서 시작점을 설정할 수 있도록 해줍니다. 예를 들어 최소값으로 –50을 가지는 막대 차트가 있을 때 이 플래그를 on시키면 시작점은 0이 되고 각 막대의 값에 따라서 기준선에서 올라가거나 내려가게 나타낼 수 있습니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Axis(AXIS_Y).Style = AS_BREAKZERO

Page 173: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

163

Axes Labels 대화 상자 이 대화 상자는 회전, 글꼴, 축 제목 등을 포함한 축에 표시되는 레이블을 조작할 수 있습니다.

1) 이 옵션은 사용자가 선택된 축에 대해서 표시될 레이블의 회전 각도를 설정할 수 있도록 해줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Axis(AXIS_Y).LabelAngle = 45

2) 이 옵션은 사용자가 선택된 축에 대해서 제목을 설정할 수 있도록 해줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Axis(AXIS_Y).Title = “In Millions”

3,4,5) 이 옵션은 사용자가 선택된 축에 대해서 레이블 스타일을 설정할 수 있도록 해줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다: ‘레이블 숨기기 ChartFX1.Axis(AXIS_Y).Style = AS_HIDETEXT

‘레이블을 엇갈리게 표시하기 ChartFX1.Axis(AXIS_Y).Style = AS_2LEVELS

이것은 한 워드(word)값을 가지는 프로퍼티이기 때문에 이 오퍼레이터들을 on/off 시키는데 사용해야 하며 이전의 설정값을 잃어버리지 않도록 주의해야 합니다. 이 프로퍼티의 값을 설정하는 올바른 방법은

Chart1.Axis(AXIS_Y).Style = Chart1.Axis(AXIS_Y).Style Or AS_ROTATETEXT (RIGHT!)

만일 다음과 같이 사용한다면:

Chart1.Axis(AXIS_Y).Style = AS_ROTATETEXT (WRONG!)

Page 174: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

164

Axes GridLines 대화 상자 이 대화상자는 메이저 단위와 마이너 단위로 표현되는 눈금선을 사용자 정의하는데 사용됩니다.

1) 이 옵션은 사용자가 선택된 축에 대해서 눈금선의 색을 설정할 수 있도록 해줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Axis(AXIS_Y).GridColor = RGB(192,192,192)

2) 이 옵션은 사용자가 선택된 축에 대해서 눈금선의 스타일을 설정할 수 있도록 해줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Axis(AXIS_Y).GridStyle = CHART_DASH

3) 이 옵션은 사용자가 선택된 축에 대해서 눈금선의 폭을 설정할 수 있도록 해줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Axis(AXIS_Y).GridWidth = 3

4) 이 옵션은 사용자가 선택된 축에 대해서 눈금과 눈금선을 레이블과 정렬 할 수 있도록 해줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Axis(AXIS_Y).Style = AS_CENTERED

Page 175: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

165

5) 이 옵션은 사용자가 교차되는(interlaced) 눈금선을 설정할 수 있도록 해줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Axis(AXIS_Y).Style = AS_INTERLACED

Note: 교차되어(혼합) 표시되는 색들은 메이저 눈금선의 색과 차트의 배경색이 혼합되어 표시됩니다.( Rgb2DBk 또는 RGB3DBk 프로퍼티) 6) 이 옵션은 사용자가 선택된 축에 대해서 마이너 눈금선의 색을 지정할 수 있도록 해줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Axis(AXIS_Y).GridColor = RGB(192,192,192)

7) 이 옵션은 사용자가 선택된 축에 대해서 마이너 눈금선의 스타일을 지정할 수 있도록 해줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Axis(AXIS_Y).GridStyle = CHART_DASH

8) 이 옵션은 사용자가 선택된 축에 대해서 마이너 눈금선의 폭을 지정할 수 있도록 해줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Axis(AXIS_Y).GridWidth = 3

Page 176: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

166

3D 대화 상자 이 대화 상자는 3차원 차트의 3차원 특성들을 사용자 정의하는데 사용됩니다.

1) 인터렉티브 드로잉 특성. 이것을 프로그램으로 구현하기 위해서는 AngleX 프로퍼티와 AngleY 프로퍼티를 참조하시기 바랍니다.

2) 이 옵션은 사용자가 차트의 3차원 뷰(view)를 가능하게 하거나 불가능하게 할 수 있도록 해줍니다.다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Axis(AXIS_Y).View3D = True/False

3) 이 옵션은 사용자가 차트를 X축 주위로 회전시킬 수 있도록 해줍니다.다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.AngleX = 25

4) 이 옵션은 사용자가 차트를 Y축 주위로 회전시킬 수 있도록 해줍니다.다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.AngleX = 35

5) 이 옵션은 사용자가 3차원 데이터 표시 요소의 스타일을 지정 할 수 있도록 해줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.View3DLight = 1

Page 177: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

167

6) 이 옵션은 사용자가 차트의 3차원 깊이를 제어할 수 있도록 해줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.View3DDepth = 300

7) 이 옵션은 사용자가 차트의 원근을 설정할 수 있도록 해줍니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.Perspective = 80

Page 178: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

168

Constants & Stripes 대화 상자 이 대화 상자는 Chart의 상수선과 색상 띠를 사용자 정의 하도록 허용합니다. 이 대화 상자는 디자인 시에만 사용가능합니다. 이번 장에서는 일단 상수선에 대해서만 살펴보도록 하겠습니다. 여러분은 Chart FX의 API 온라인 도움말을 참조하여 색상 띠(Color Stripe)에 대해서 살펴보실 수 있습니다. 중요한 정보: 상수선과 색상 띠를 생성하기 전에 여러분은 반드시 OpenDateEx와 CloseData 메서드를 호출해야 합니다. 자세한 사항은 도움말 앞에 소개된 상수선 과 색상띠(Constant Lines and Color Stripes) 단원을 참고하시기 바랍니다.

1) 이 옵션은 상수선과 관련되는 축을 선택하도록 합니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.ConstantLine(0).Axis = AXIS_Y

2) 이 옵션은 상수선의 값을 설정합니다.다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.ConstantLine(0).Value = 30

3) 이 옵션은 상수선의 라벨을 설정합니다.다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.ConstantLine(0).Label = ‘Alarm Limit”

Page 179: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

169

4) 이 옵션은 상수선의 색상을 설정합니다.다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.ConstantLine(0).Color = RGB(128,255,0)

5) 이 옵션은 상수선의 스타일을 설정합니다.다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.ConstantLine(0).LineStyle = CHART_DASH

6) 이 옵션은 상수선의 두께를 설정합니다.다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.ConstantLine(0).LineWdith = 3

Page 180: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

170

Data/Behavior 대화 상자 이 대화 상자는 차트의 UI에서의 도구와 다른 중요한 설정사항을 보여 줍니다. 이 대화 상자는 디자인 시에만 필요한 것이고 사용자에게는 보여지지 않는 것입니다.

1) 이 옵션은 ‘미리 보기’의 목적을 위해서 시리즈와 값의 개수를 설정하는 것입니다. 차트에 실제적인 데이터를 설정하기 위해서 이 매뉴얼의 ‘데이터 전달’ chapter를 참조하시기 바랍니다.

2) 이 옵션은 차트에 표시하기 원하는 최종사용자 도구를 선택할 수 있도록 하는 것입니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

‘ 도구 막대 보이기 ChartFX1.Toolbar = True/False

‘ 메뉴 막대 보이기 ChartFX1.MenuBar = True/False ‘ 시리즈 범례 보이기 ChartFX1.SerLegBox = True/False ‘ 값에 대한 범례 보이기 ChartFX1.LegendBox = True/False ‘데이터 에디터 보이기 ChartFX1.DataEditor = True/False ‘팔레트 막대 보이기 ChartFX1.PaletteBar = True/False ‘패턴 막대 보이기 ChartFX1.PatternBar = True/False

Page 181: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

171

3) 이 옵션은 사용자의 작용에 어떻게 차트가 반응할 것인지를 설정하는 목적으로 사용됩니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

‘사용자가 점을 마우스로 드랙할 수 있도록 함 ChartFX1.AllowDrag = True/False ‘사용자가 데이터 에디터의 값을 에디트 할 수 있도록 함 ChartFX1.AllowEdit = True/False ‘사용자가 차트의 크기를 조절할 수 있도록 함 ChartFX1.AllowResize = True/False ‘사용자가 차트를 스크롤 할 수 있도록 함 ChartFX1.Scrollable = True/False

‘사용자가 데이터 표시 요소에 마우스를 위치 시켰을 때 툴팁을 표시하도록 함 ChartFX1.ShowTips = True/False ‘사용자가 요소에 오른쪽 마우스 버튼을 클릭했을 때 메뉴를 표시하도록 함 ChartFX1.ContextMenus = True/False

4) 이 옵션은 사용자가 차트의 요소를 더블 클릭했을 때 Chart FX가 어떻게 반응하는지를 설정합니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.DblClk CHART_BALLOONCLK

5) 이 옵션은 사용자가 차트의 요소를 오른쪽 버튼 클릭했을 때 Chart FX가 어떻게 반응하는지를 설정합니다. 다음과 같이 프로그램을 통해서도 동일하게 구현할 수 있습니다:

ChartFX1.RigClk CHART_PROPERTIESCLK

Page 182: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

172

Commands 대화 상자 이 대화 상자는 도구 막대를 사용자 설정하도록 합니다. 이 대화 상자는 디자인 시에만 사용가능하고 최종 사용자에게는 나타나지 않습니다.

중요한 정보: Chart FX에서 도구 막대와 다른 도구들을 사용자 정의하기 위해서 필요한 프로퍼티와 메소드들에 대한 보다 자세한 정보는 ‘도구 막대 사용자 정의’부분을 참조하기 바랍니다.

Page 183: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

173

Extensions 대화 상자 이 대화 상자는 설치된 Chart FX의 확장 기능(extension)을 사용 가능하게 하거나 불가능하게 합니다. 이 대화 상자는 디자인 시에만 필요한 것이고 사용자에게는 보여지지 않는 것입니다.

중요한 정보: Chart FX는 무료로 주석문 확장 기능(Annotation Extension)을 제공합니다. 소프트웨어 FX에서 구입가능한 다른 종류의 확장 기능도 있습니다. 특히 Chart FX 재무 에디션은 재무 차트 기능을 제공하기 위해서 특별히 설계된 것입니다. 확장 기능을 활성화시키기 위해서는 다음과 같이 AddExtension 메소드를 호출해야 합니다:

AnnotX= ChartFX1.AddExtension "AnnotationX.AnnList"

또 다른 방법은 다음과 같이 New 명령을 사용하는 것입니다: Set AnnotX = New AnnotationX ChartFX1.AddExtension AnnotX 중요한 정보: AddExtension 메소드의 리턴 값은 이 값으로 객체를 처리(추가, 제거 등)해야 하기 때문에 매우 중요한 것입니다. 따라서 이 값을 전역 변수에 저장하는 것이 좋습니다. 그러나 전역 변수 사용을 원하지 않거나 Annotation 객체에 대한 핸들을 사용하기 원하는 경우에는 Chart FX API에서 제공되는 GetExtension 메소드를 사용할 수도 있습니다.

이 확장 기능이 지원하는 객체, 프로퍼티들, 메소드들에 대한 정보는 ‘확장 기능 문서’를 참조하기 바랍니다. 더 자세한 정보를 http://www.softwarefx.com에서 얻을 수도 있습니다.

Page 184: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

174

Page 185: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

175

Chart FX 프로그래머 가이드

Annotation 객체

이 장에서 다뤄지는 주제들

개요 확장 기능 활성화

프로그램을 통해서 객체 생성하기 적용 문제

Page 186: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

176

Page 187: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

177

Chart FX 주석문(Annotation) 확장 기능. Chart FX 는 차트 내에서 자유롭게 이동시킬 수 있는 텍스트, 화살표, 다양한 도형, 이미지 등을 사용할 수 있도록 하는 주석문 확장 기능을 제공합니다. 실제적으로는 전혀 새로운 도구 막대가 차트에 첨부되어서 최종 사용자가 이러한 도형을 선택하고 회전 시키고 그룹으로 묶고 좌우를 바꾸는 등의 일을 할 수 있도록 합니다:

다른 Chart FX의 확장 기능에서와 같이 먼저 이 확장 기능을 사용 가능 상태로 설정해야 합니다. 디자인 시 설정되는 프로퍼티 대화 상자를 사용하거나 AddExtension 메소드를 호출해서 프로그램을 통해서 설정할 수 있습니다. 디자인 시에 이 주석문 확장 기능을 사용 가능 상태로 만들기 위해서는 다음 단계를 따릅니다: 디자인 시에 차트를 오른쪽 버튼 클릭하고 ‘프로퍼티(Properties)’를 선택 ‘확장 기능(Extensions)’ 탭을 선택 ‘Annotation Objects’ 선택 어플리케이션을 실행시키면 추가적인 도구 막대가 나타나서 이 Annotation 객체를 추가할 수 있도록 합니다. 이 API는 이제 개발자가 코드에서 접근 가능한 상태로 되어 있어서 동적으로 차트에 주석을 달 수 있도록 되었습니다.

프로그램을 통해서 주석 확장 기능을 추가하려면 다음과 같이 AddExtension 메소드를 사용합니다:

AnnotX= ChartFX1.AddExtension "AnnotationX.AnnList"

주석 확장 기능을 사용하는 다른 방법은 다음과 같이 New 명령을 사용하는 것입니다: Set AnnotX = New AnnotationX ChartFX1.AddExtension AnnotX

Page 188: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

178

중요한 정보: AddExtension 메소드의 리턴 값은 이 값으로 객체를 처리(추가, 제거 등)해야 하기 때문에 매우 중요한 것입니다. 따라서 이 값을 전역 변수에 저장하는 것이 좋습니다. 그러나 전역 변수 사용을 원하지 않거나 Annotation 객체에 대한 핸들을 사용하기 원하는 경우에는 Chart FX API에서 제공되는 GetExtension 메소드를 사용할 수도 있습니다 AddExtension 메소드는 오직 한번만 호출(그리고 일반적으로는 Form_Load 이벤트에서)하게 됩니다. 이 주석 확장 기능이 사용가능하게 되면 프로그램을 통해서 객체를 생성할 수 있게 됩니다.

Page 189: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

179

프로그램을 통해서 Annotation 객체 생성하기 주석 확장 기능이 프로젝트 내에서 사용가능한 상태로 되면 사용자들이 주석 확장 기능에서 제공되는 도구 막대를 사용해서 차트에 주석을 달도록 할 수도 있고 또는 이 기능을 데이터 표시 요소를 강조하는 목적으로 활용하거나 동적으로 Annotation 객체를 생성할 수도 있습니다. 이 가이드는 주석 확장 기능에서 사용 가능한 여러가지 객체들을 소개하고 프로젝트 내에서 프로그램을 통해서 이 객체들을 사용하는 방법을 설명합니다. 주석 확장 기능은 다음의 객체들을 제공합니다:

AnnArc : 호 AnnArrow : 화살표와 선 AnnBalloon : 풍선 도움말에 표시되는 텍스트 AnnCircle : 원과 타원 AnnGroup : 객체들의 그룹 AnnPicture : 그림 AnnRect : 사각형 AnnText : 텍스트

이것들은 동적으로 생성해서 차트 영역에 어디라도 위치 시킬 수 있는 객체들입니다. 이 객체들 중의 하나를 생성하기 위해서 먼저 이 객체를 가리키는 포인터를 포함하는 변수를 생성해서 이것과 연관을 가지는 프로퍼티들을 사용합니다. 예를 들어 동적으로 원을 생성하려고 하면 다음처럼 변수를 정의합니다:

Dim MyCircle As AnnCircle

중요한 정보: 이러한 객체에 접근하기 위해서 먼저 주석 확장 기능 타입 라이브러리(Annotation Extension Type Library)에 대한 레퍼런스를 포함해야 합니다. 다음 그림에서처럼 ‘프로젝트’ 메뉴를 선택해서 ‘레퍼런스’를 선택한후에 ‘주석 확장 기능 타입 라이브러리’를 체크합니다:

Page 190: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

180

이 변수(MyCircle)로 다음처럼 AddExtension 메소드의 리턴 값과 Add 메소드를 사용해서 객체를 추가할 수 있습니다:

Set MyCircle = AnnotX.Add(OBJECT_TYPE_CIRCLE) 이후에 특정 객체에 대해서 위치, 색깔등의 속성을 설정할 수 있도록 하는 프로퍼티들에 접근할 수 있게 됩니다. 예를 들어:

MyCircle.Top = 100 MyCircle.Left = 50

중요한 정보: 모든 Annotation 객체, 프로퍼티, 메소드들은 주석 확장 도움말 파일에 문서화 되어 있습니다(Chart FX \Help 디렉토리)

Page 191: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

181

주석 확장 적용 ANNOTATEX.DLL 이 필요함! 어플리케이션의 일부로 주석 확장 기능을 사용하려고 하면 클라이언트 머신에 ANNOTATEX.DLL을 재배포하고 등록해야 합니다. 어플리케이션의 일부로 필요한 파일과 관련되어 Chart FX을 재배포하는 문제는 Chart FX 프로그래머 가이드를 참조하시기 바랍니다. 컴포넌트 등록하기: Chart FX이 사용하는 대부분의 파일은 정확히 기능을 수행하기 위해서 등록될 필요가 있습니다. 이러한 셋업 유틸리티들은 ‘자동 등록 기능’을 가지고 있습니다. 이것은 거의 모든 셋업 유틸리티들이 설치시에 자신들을 등록한다는 것을 의미합니다. 이 주제와 관련된 보다 자세한 정보를 위해서는 셋업 유틸리티 문서를 참조하시기 바랍니다. 셋업 유틸리티가 이러한 옵션을 가지고 있지 않으면 이러한 모듈들을 등록하기 위해서 마이크로소프트의 REGSVR32.EXE를 사용할 수도 있습니다.

Page 192: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

182

Page 193: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

183

Chart FX 프로그래머 가이드

Appendix A. 마이그레이션(Migration) 문제

이 장에서 다뤄지는 주제들

Chart FX 3.0으로부터의 마이그레이션 프로젝트 파일 변환

필요없거나 교체된 API.

Page 194: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

184

Page 195: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

185

Chart FX 3.0으로부터의 마이그레이션 Chart FX 3.0으로부터 Chart FX으로 마이그레이션을 할때는 기본적으로 고려해야할 세가지 단계가 존재합니다: 1.- 프로젝트 파일 변환 Chart FX 3.0의 프로젝트 파일을 변환하기 위해서는 개발 도구가 ‘OLE 자동 변환’을 지원해야 합니다. 이것을 지원하는 도구는 다음과 같습니다:

비주얼 베이직 6.0 비주얼 C++ 6.0 MS 액세스 97 비주얼 FoxPro 6.0 볼랜드 델파이 4.0 (*) 볼랜드 C++ 빌더 3.0

개발 도구가 이것을 지원하면 다음 절차를 따릅니다:

1) Chart FX 3.0 build 35(버전 3.0.35) 나 이후의 버전을 사용해서 모든 프로젝트 폼/대화상자들을 저장합니다. 2) Chart FX에서 제공되는 ‘Chart FX 3.0 to 98 변환 유틸리티’(Cfx3to4.exe)를 실행시키고 변환을 수행시킵니다. 3) 프로젝트를 열고 프로젝트를 저장시키기 위해서 차트에 몇가지 변동사항을 추가합니다(예를 들어 크기를 조금 변화시킴). 차트를 저장하고 있는 모든 폼/대화상자에 대해서 이것을 수행합니다. Note: 이러한 변환을 수행하기 위해서 Chart FX 3.0 파일 필터가 필요합니다.

2.- 코드 수정 이전의 대부분 API가 호환성 문제를 해결하기 위해서 제공됩니다. 그러나 몇 개는 진보된 새로운 API로 대체되었습니다. 개발 과정에서 이 새로운 API로 변환하는 것이 좋습니다. 이것들은 개발자가 Chart FX의 객체 지향 API의 철학을 이해하는 데 도움이 될 것입니다. 차트 FX 3.0과의 호환성을 유지하려는 노력에도 불구하고 몇몇 프로퍼티와 메소드, 이벤트들은 새로운 버전에서 전혀 다른 접근이 이루어졌기 때문에 단순히 변환하는 것이 가능하지 않습니다. 지원하지 않게된 프로퍼티, 메소드, 이벤트에 대해 자세한 정보가 Chart FX 도움말 파일에 제공되어 있습니다. 3.- Chart FX 3.0 파일 (.CHF) 과 템플릿 (.CHT) importing하기 Chart FX은 개발자와 사용자가 Chart FX 3.0의 파일을 읽을 수 있도록 하는 파일 필터 라이브러리를 포함합니다. 이 필터들이 설치되어 있으면 import 메소드는 자동적으로 이러한 파일들을 읽어들일 것입니다. 이러한 기능을 사용하기 위해서는 Chart FX 3.0 필터가 설치되어 있어야만 합니다. 개발 도구가 ActiveX 변환을 지원하지 않으면 폼들을 수동적으로 변경해서 새로운 컴포넌트들을 지시하도록 해야 합니다. (*) 컴포넌트 라이브러리에 설치되었을 때 동일한 클래스 이름이 새로운 컴포넌테에 주어져야 합니다. ActiveX 프로젝트만 변환 가능합니다. Chart FX에서 VCL은 사용할 수 없습니다.

Page 196: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

186

Chart FX 3.0의 교체되었거나 사용할 수 없는 API 다음의 프로퍼티와 메소드는 단순히 호환성 때문에 존재하는 것입니다. 새로운 프로그램은 새로운 API를 사용해야만 합니다” OLD property/method NEW property/method ChartType Gallery MarkerVolume Volume PointType PointType Type TypeMask Shape CylSides PixFactor Axis(AXIS_Y).PixPerUnit FixedGap Axis(AXIS_X).PixPerUnit Angles3D AngleX, AngleY MultiType Series(i).TypeMask, Series(i).Gallery MultiShape Series(i).CylSides MultiLineStyle Series(i).LineStyle, Series(i).LineWidth MultiYAxis Series(i).YAxis MultiPoint Series(i).MarkerShape VertGridGap Axis(AXIS_X).Step Const ContantLine(i).Value FixLeg ContantLine(i).Label

Adm Axis(AXIS_*),Min, Axis(AXIS_*),Max, Axis(AXIS_*).Step, Axis(AXIS_*).LogBase

DecimalsNum Axis(AXIS_*).Decimals BarBitmap Series(i).Picture Value ValueEx, Series(i).YValue XValue XValueEx, Series(i).XValue IniValue IniValueEx, Series(i).YFrom LegStyle Axis(AXIS_*).Style ConstType ConstantLine(i).Style SetStripe Stripe(i).Color, Stripe(i).From, Stripe(i).To AutoIncrement ValueEx ThisSerie ValueEx ThisPoint ValueEx ThisValue ValueEx ThisColor Color

Page 197: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

187

다음의 프로퍼티들은 더 이상 지원되지 않고 그 기능도 완전히 변경되었습니다. Chart FX에서 이 프로퍼티들을 사용할 수 없습니다: OLD property/method Comment BarHorzGap RGBBarHorz GalleryTool 도구 막대 사용자 정의 참조 CurrentAxis 도구 막대 사용자 정의 참조 CustomTool 도구 막대 사용자 정의 참조 TBBitmap 도구 막대 사용자 정의 참조 TBItemStyle 도구 막대 사용자 정의 참조 EnableTBItem 도구 막대 사용자 정의 참조 ToolStyle 도구 막대 사용자 정의 참조 ToolSize 도구 막대 사용자 정의 참조 ToolPos 도구 막대 사용자 정의 참조 TBItemID 도구 막대 사용자 정의 참조 ShowStatus 상태 막대는 더 이상 지원되지 않음 StatusText 상태 막대는 더 이상 지원되지 않음 SetStatusItem 상태 막대는 더 이상 지원되지 않음 Status 상태 막대는 더 이상 지원되지 않음

Page 198: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

188

Page 199: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

189

Chart FX 프로그래머 가이드

Appendix B. 메모리 요구 사항

이 장에서 다뤄지는 주제들

Chart FX 메모리 요구 사항

Page 200: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

190

Page 201: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

191

Chart FX 메모리 요구 사항 Chart FX이 실행되고 있는 컴퓨터나 OS 설정이 물리적으로 가지고 있는 한계 뿐만이 아니라 Chart FX는 처리할 데이터에 대한 다음과 같은 제한 사항을 가지고 있습니다: • 시리즈의 개수는 32,767개로 제한되고 점의 총 개수는 2,147,483,647개로 제한됩니다. 이것은 2,147,483,647 개의 점을 지닌 한 개의 시리즈나 각각 536,870,911개의 점을 가진 네 개의 시리즈, 또는 이러한 조합을 가진 차트를 생성할 수 있다는 것을 의미합니다.

• 각 문자열(축 레이블, 제목 등)의 크기는 255 문자로 제한됩니다. • 레이블 리스트(X-축, Y-축, 시리즈 범례 등)당 최대 32,767개의 범례만이 가능합니다. 한 개의 차트 객체의 크기는 다음과 같이 계산됩니다: 전역 메모리: • 차트 당 2.5KB의 코어 데이터 + • 각 데이터 점에 대해 8 바이트 + • X값이 사용된 경우 각 데이터 값에 대해 8 바이트(XY 그래프) + • Ini-Values가 사용된 경우 각 데이터 점에 대해서 8 바이트 + • (디폴트 색상안이 사용되지 않는 경우) 각 색당 4 바이트 + • (디폴트가 적용되지 않는 경우) 패턴 당 2 바이트 + • 레이블 목록(사용된 경우) 당 256 바이트 + ( 4 + 레이블 문자열 + 1) * Number_Of_Elements • 상수 지시선 당 28 바이트 + • 컬러 줄무늬 당 24 바이트 GDI 리소스: Chart FX를 로드 했을 때 단지 몇 개의 전역 GDI 리소스들이 생성됩니다. 다른 리소스들은 차트가 표현되고 제거될 때 생성됩니다. 차트에 사용된 리소스들의 수는 차트 구성에 따라서 많은 영향을 받지만 속도와 리소스 소비 양측면에서 최적화 되었습니다. 다른 메모리 Chart FX ActiveX 컨트롤: 약 530K Chart FX COM DLL : 약 460K SfxBar.DLL (액티브 X, DLL 양측 다 필요) : 110K 보통 ActiveX나 DLL중 하나를 사용하게 되지만 둘다 사용하지는 않습니다(둘은 완전히 독립적입니다). COMCAT.DLL과 OLEAUT32.DLL 같은 다른 DLL들도 로드되어야 하지만 이것들은 시스템이나 어플리케이션에 의해서 로드됩니다. 확장 기능(예를 들어 CFX4DATA.DLL, CFX4FILTERS.DLL, CFX4OLE.DLL, ANNOTATEX.DLL)들도 사용될 때만 로드됩니다.

Page 202: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

192

Page 203: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

193

Chart FX 프로그래머 가이드

Appendix C. 적용 문제

이 장에서 다뤄지는 주제들

어플리케이션에 적용하기

Page 204: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

194

Page 205: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

195

어플리케이션에 적용하기 Chart FX은 몇 개의 모듈로 이루어 집니다. 개발자는 사용한 모듈을 어플리케이션에 포함시켜야 합니다. 여기에 언제 재배포할 것인지에 대한 규칙과 함께 재배포 가능한 파일들의 목록이 제시되어 있습니다: 프로그램 파일: SFXBAR.DLL 이 파일은 항상 재배포해야 합니다. 이 파일은 레지스트리에 등록될 필요가 있습니다. CFX4032.OCX ActiveX 컨트롤을 사용하는 경우에만 재배포합니다. 이 파일은 레지스트리에 등록될 필요가 있습니다. CFX4032.DLL DLL을 사용하는 경우에만 이 파일을 재배포 합니다. 보통 VB, Delphi, VC++, VFP , Access 상에서 개발했다면 이 파일을 재배포 할 필요가 없습니다. 이 DLL을 언제 사용해야 하는 지에 대해서 관련 문서를 참조하시기 바랍니다. 이 파일은 레지스트리에 등록될 필요가 있습니다. CFX4FILTERS.DLL 어플리케이션이 Chart FX 3.0 파일을 읽어야 할때만 배포하십시오. 이 파일은 레지스트리에 등록될 필요가 있습니다. CFX4DATA.DLL 데이터 바인딩(DataSource 프로퍼티)나 GetExternalData 메소드를 사용할 때만 재배포합니다. 이 파일은 레지스트리에 등록될 필요가 있습니다. ANNOTATEX.DLL Annotation 객체를 사용할때만 재배포 합니다. 이 파일은 레지스트리에 등록될 필요가 있습니다. CFX4OLE.DLL 이 파일은 실행하기 위해서 사용자의 라이센스(로열티 요금에 따라)를 필요로 합니다. 각 최종 사용자에 대해 Chart FX OLE 서버 라이센스를 구입했을 때만 이 파일을 재배포하십시오. 이 파일은 레지스트리에 등록될 필요가 있습니다. 모든 프로그램 파일은 보통 WINDOWS\SYSTEM (WINNT\SYSTEM32) 폴더에 들어갑니다. 이 파일들은 동일한 디렉토리에 있거나 경로에 존재해야 합니다. 컴포넌트 등록하기: Chart FX이 사용하는 대부분의 파일은 올바로 기능을 수행하기 위해서 등록되어야 합니다. 이 파일들은 ‘자동 등록 기능’을 가지고 있습니다. 이것은 거의 모든 셋업 유틸리티들이 설치시에 자신들을 등록한다는 것을 의미합니다. 이 주제와 관련된 보다 자세한 정보를 위해서는 셋업 유틸리티 문서를 참조하시기 바랍니다. 셋업 유틸리티가 이러한 옵션을 가지고 있지 않으면 이러한 모듈들을 등록하기 위해서 마이크로소프트의 REGSVR32.EXE를 사용할 수도 있습니다. 부가적인 파일들: PALETTES.REG: 다중 컬러 팔레트/색상안을 제공하기 위해서 이 파일을 클라이언트 컴퓨터에 저장합니다. Chart FX 파일들을 적용하기 전에 항상 재배포에 대한 라이센스 동의서를 참조하시기 바랍니다.

Page 206: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

196

Chart FX 프로그래머 가이드

Appendix D. 호환성 문제

이 장에서 다뤄지는 주제들

ActiveX 또는 DLL. 어떤 것을 사용해야 하는가? Chart FX와 비주얼 C++

Chart FX와 볼랜드 제품

Page 207: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

197

Page 208: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

198

Chart FX ActiveX vs. Chart FX DLL. 어떤 것을 사용해야 하는가? Chart FX 는 유사한 기능을 제공하는 두 개의 독립적인 모듈을 제공합니다. CFX4032.OCX (ActiveX 컨트롤)와 CFX4032.DLL (DLL COM 컴포넌트) ActiveX 컨트롤이 디자인 시에 적용되는 기능들을 제공하는 반면 DLL은 약간 더 작고 속도가 빠릅니다. DLL과 액티브 X 모두 동일한 방법으로 모든 객체 프로퍼티, 메소드들을 제공하는 비슷한 COM 인터페이스를 제공합니다. DLL은 COM 대응이 아닌 도구에 대한 표준(COM 기반이 아닌) 인터페이스를 제공하고 이전의 버전에 대한 호환성도 가지고 있습니다. 가능하면 COM 인터페이스를 사용해야 합니다. ActiveX 컨트롤에 비교해 볼 때 DLL은 OLE 오토메이션 (IDispatch) 객체가 아닙니다. 이것은 타입 변환을 할 필요가 없기 때문에 DLL에 매우 뛰어난 성능을 부여합니다. 특히 이러한 특성은 많은 수의 문자열(레이블)이 사용될 때 매우 유용합니다. ActiveX 컨트롤은 대부분의 어플리케이션에서 사용하는 것이 좋습니다. DLL을 사용하는 것은 C++과 COM(OLE)에 대한 더 많은 프로그래밍 지식을 필요로 합니다. DLL을 사용하는 것이 유리한 경우는 다음과 같습니다:

- 개발 도구가 ActiveX 컨트롤을 지원하지 않는 경우(VC++은 MFC를 통해서만 ActiveX 컨트롤을 지원합니다.)

- 뛰어난 성능을 가지는 개발 도구(에를 들어 VC++)를 사용하고 있고 많은 데이터를 가지는 차트를 작성해야 할 때

- 어플리케이션이 데이터를 받아서 차트 파일이나 그림을 작업하는 ‘배치 처리’ 프로그램일 때. 다시 말해서 어플리케이션이 차트를 나타내지 않는 경우.

기억해야 할 사실은 성능 향상을 얻으면 그것만큼 사용의 편리함을 잃어 버리게 될 것이란 점입니다.

Page 209: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

199

Chart FX와 마이크로소프트 비주얼 C++ 비주얼 C++ MFC 어플리케이션에 ActiveX 컨트롤을 추가하는 방법은 두 가지가 있습니다: 1) 액티브 X에 저장되어 있는 각 컴포넌트들에 대해서 포장 클래스(wrapper class)를 생성하기 위해서 클래스 마법사를 이용합니다. 이것은 객체에 멤버 변수를 할당함으로써 자동적으로 이루어집니다. 2) #import 명령을 다음과 같이 사용합니다: 헤더 파일 (STDAFX.H) 에서 // DEFINITION of COM wrappers #import "sfxbar.dll" no_namespace no_implementation #import "Cfx4032.ocx" no_namespace no_implementation 구현 파일(STDAFX.CPP) 에서 // IMPLEMENTATION of COM wrappers #import "sfxbar.dll" no_namespace implementation_only #import "Cfx4032.ocx" no_namespace implementation_only 이 두가지 방법은 꽤 많은 차이가 있습니다. #import가 ActiveX 컴포넌트에 대해서 듀얼 인터페이스를 통해서 DIRECT 호출을 사용하는데 비해서 클래스 마법사에 의해서 생성된 클래스들은 디스패치(Dispatch) 인터페이스만을 통해서 호출하게 됩니다. 이렇게 하면 각 호출에 대해서 인자들이 pack/unpack의 과정을 거쳐야 하기 때문에 매우 비효율적입니다. 클래스 마법사는 ActiveX 컨트롤의 내부에 있는 각 클래스(인터페이스)에 대해서 각기 다른 파일들을 생성할 것입니다. 복잡한 컨트롤(Chart FX 와 같은)에 대해서는 수많은 파일들이 프로젝트에 첨부되어서 혼란을 초래하게 될 것입니다. #import 명령은 COM 인터페이스에 대해서만 사용가능합니다. ActiveX 컨트롤에 대해서는 사용할 수 없습니다. 객체의 프로퍼티와 메소드에 접근하기 위해서 확장된 COM 구문을 사용할 수 있습니다. 예를 들어, 클래스 마법사에서 생성한 클래스들을 사용할 때 다음과 같이 해야 합니다: m_ChartFX.SetChart3D(TRUE); #import를 사용할 때는, 다음과 같이 합니다: m_pChartFX->Chart3D = TRUE; Chart FX을 사용할 때는 언급한 장점 때문에 #import를 사용하는 것이 좋습니다. #import를 사용할 때 발생하게 되는 유일한 문제점은 직접 일일이 컴포넌트를 대응시켜야 한다는 점입니다. 하지만 단 두 줄의 코드로 이것을 해결할 수 있습니다: 클래스에 두 개의 멤버를 정의합니다: CWnd m_ChartFX; // Chart FX 윈도우 IChartFXPtr m_pChartFX; // Chart FX 객체 포인터 DoDataExchange 내에서(VC++에서 생성한 주석문 외부에 이 코드를 추가하도록 해야합니다)

Page 210: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

200

DDX_Control(pDX, IDC_CHART1, m_ChartFX); // 컨트롤에 대한 링크 변수 if (!pDX->m_bSaveAndValidate) // Chart FX 포인터를 컨트롤 윈도우에 연결 m_pChartFX = m_ChartFX.GetControlUnknown(); 또는 차트를 동적으로 생성하려면: m_ChartFX.CreateControl(__uuidof(ChartFX), "", WS_VISIBLE, rc, this, IDC_CHART2,NULL,<Licence String*>); // 컨트롤 윈도우 생성 m_pChartFX = m_ChartFX.GetControlUnknown(); // 차트 포인터로 첨부 이 컨트롤을 윈도우(예를 들어 이동 시키거나 크기 등을 조절할 필요가 있을 때)로 사용하려고 할때는 m_ChartFX를 사용해야 하고 모든 프로퍼티와 메소드에 접근하기 위해서 m_pChartFX를 사용합니다. *License String은 라이센스 카드에 인쇄되어 있습니다.

Page 211: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

201

그리고, MFC를 사용하지 않는 경우: MFC에서 ActiveX를 사용하는 것과 거의 동일하게 Chart FX를 사용할 때 #import 명령과 Chart FX COM DLL을 사용하는 것이 더 장점이 많습니다: 먼저 Chart FX와 관련된 라이브러리를 다음처럼 가져 옵니다: 헤더 파일 (STDAFX.H) 에서 // DEFINITION of COM wrappers #import "sfxbar.dll" no_namespace no_implementation #import "Cfx4032.dll" no_namespace no_implementation 구현 파일(STDAFX.CPP) 에서 // IMPLEMENTATION of COM wrappers #import "sfxbar.dll" no_namespace implementation_only #import "Cfx4032.dll" no_namespace implementation_only 선언부에서: IChartFXPtr m_pChartFX; HWND m_hwndChartFX; 이후 다음처럼 Chart FX 객체를 동적으로 생성할 수 있게 됩니다: m_pChartFX.CreateInstance(__uuidof(ChartFX)); m_pChartFX->CreateWnd((long) hwndParent,IDC_CHART1,0,0,500,500,WS_CHILD | WS_VISIBLE); m_hwndChartFX = (HWND) m_pChartFX->hWnd; 차트가 보일 필요가 없거나 활성화 될 필요가 없으면 CreateWnd를 호출할 필요는 없습니다. 윈도우가 없이도 모든 프로퍼티들과 메소드들을 호출할 수 있습니다. 리소스 사용을 최소화 하기 위해서 배치 처리 어플리케이션이나 시스템 서비스에 이러한 특징을 사용할 수 있습니다. Note: 어플리케이션이 시작할 때 CoInitialize()를 호출해야 하고 종료될 때 CoUninitialize()를 호출해야 합니다.

Page 212: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

202

Chart FX ActiveX와 볼랜드 제품 ActiveX와 볼랜드 델파이, C++ 빌더를 통합하는 것은 생각만큼 쉽지 않습니다. 이에 대한 몇가지 유용한 정보를 제공합니다: 델파이 4.0 ActiveX에 대한 지원은 매우 완벽한 것 같지만 고려해야 할 몇 가지 문제가 있습니다: 1) 이전 버전의 Chart FX를 포함하고 있는 모든 패키지를 제거해야 합니다. 기본적으로 “Delphi Sample Imported ActiveX Controls’이라고 불리는 패키지는 Chart FX 2.0을 포함하고 있습니다. 이 패키지를 위한 소스가 설치되어 있지 않기 때문에 전체 패키지를 제거해야만 합니다. ‘컴포넌트’ 메뉴에서 ‘Import ActiveX Control’을 선택해서 다른 컴포넌트들을 임포트(import)시키는 것은 가능합니다. 2) ActiveX를 새로운 패키지에 임포트하십시오. 이렇게 하면 이것을 나중에 제거하거나 사용 불가능 상태로 만드는 것이 보다 간편해 집니다. 3) ActiveX 타입 라이브러리를 읽어 들여서 파스칼 클래스로 만드는 엔진에 버그가 있기 때문에 모든 메소드에 각각 여분의 변수가 추가되어야 합니다. 이 변수는 사용되지 않기 때문에 별다른 영향 없이 제거할 수 있습니다. 이 변수의 이름은 retval입니다. 이 버그는 델파이 4.0 업데이트 #1에서 수정 되었습니다. 델파이 4.0 임포트 라이브러리 엔진의 또 다른 버그: 디폴트 프로퍼티들이 디폴트로 선언되지 않습니다. 이것 때문에 직접 타입을 선언해야 합니다(예를 들어): ChartFX1.Axis.Item[AXIS_Y].Min := 20; 아래의 소스 대신에 위의 소스를 사용해야 합니다: ChartFX1.Axis.[AXIS_Y].Min := 20; 소프트웨어 FX사에서는 이미 이러한 변경 사항을 적용했고 이런 변수들이 제거되고 디폴트 프로퍼티들이 올바르게 선언된 파스칼 클래스를 구현했습니다. 1단계와 2단계를 따른 후에 다음의 파일들을 Delphi4\Imports 서브 디렉토리에 복사하면 됩니다. 이렇게 하면 2단계에서 생성된 몇 개의 파일을 교체하게 됩니다: ChartFX Client Server\Lib\ChartFX_TLB.PAS ChartFX Client Server\Lib\SfxBar_TLB.PAS 다음에는 해당 .DCU 파일들을 제거합니다(다시 컴파일하기 위해). 모든 예제와 문서들은 이러한 문제들이 해결되었다고 가정하고 제작 되었습니다. Note: 이러한 해결 방법이 가장 쉬운 것이기는 하지만 기본 클래스가 버전마다 달라지기 때문에 델파이의 차기 버전에서는 적용시키지 못할 수도 있습니다. 여기에 포함된 파일들은 델파이 4.0 Build 5.37(About Box에서 참조함)을 사용해서 생성된 것들입니다. 이렇게 해서 버전 문제로 제대로 작동하지 않는다면 1~2 단계를 반복해서 위에서 언급한 파일들을 변경해야 합니다. C++ 빌더 3.0 & 4.0

Page 213: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

203

Chart FX 를 볼랜드 C++ 빌더 3.0에 통합시키는 데는 몇 가지 문제가 있습니다. 이런 문제들 중 몇 가지는 서비스 팩 1에서 해결되었지만 이 도구와 관계된 예제와 데이터베이스 문서를 다운로드하시기 바랍니다. 더 자세한 정보를 얻기 위해서 http://support.softwarefx.com을 방문해서 ‘Borland’ 키워드를 입력해서 검색하시기 바랍니다. 델파이 3.0 & 2.0, C++ 빌더 1.0 열거형(Enumerated) 차입이 프로퍼티와 메소드의 인자로 지원되지 않습니다. ‘import engine’에 의해서 생성된 클래스들은 컴파일러 에러를 발생시킵니다. 현재 Chart FX는 이 버전의 델파이와는 호환되지 않습니다. 이러한 도구들에 대한 갱신된 정보를 얻기 위해서 http://support.softwarefx.com을 방문해서 ‘Delphi’ 키워드를 입력해서 검색하시기 바랍니다.

Page 214: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

204

Chart FX 프로그래머 가이드

Appendix E. 라이센싱 문제

이 장에서 다뤄지는 주제들

Chart FX 라이센스 체제

Page 215: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

205

Page 216: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

206

Chart FX 라이센스 체제. 역할 Chart FX 는 라이센스가 필요한 컨트롤입니다. 이것은 컴퓨터에 컨트롤에 대한 라이센스가 설치되어 있지 않다면 어플리케이션을 개발하는 목적으로 사용될 수 없다는 것을 의미합니다. IDE로부터 ActiveX 컨트롤을 사용하고 차트를 생성한다면 이것은 완전히 개발자의 입장에서는 아무런 제약없이 투명(transparent)한 것으로 보입니다. 그러나 왜 그럴까요? 이에 대한 해답은 COM 내부에 있습니다. Chart FX 는 디자인 시와 실행 시에 기능을 제공하는 개선된 클래스 팩토리인 IClassFactory2를 제공합니다. 이것이 어떻게 작동하는지를 설명하겠습니다: 디자인 시에는 컨테이너(예를 들어 비주얼 베이직)가 Chart FX에게 설치된 라이센스를 찾도록 하는 CoCreateInstance(또는 IClassFactory::CreateInstance)를 사용해서 컨트롤을 생성합니다. 만일 라이센스를 찾지 못했다면 CreateInstance가 실행되지 않습니다. 발견된 경우에는 컨트롤을 생성합니다. 컨테이너가 실행 요소(또는 유사한 바이너리 이미지)를 생성하면 Chart FX에게 라이센스 스트링(license string)을 요청합니다. 이 라이센스가 이전에 발견되었다면 Chart FX는 이 올바른 라이센스 스트링을 리턴할 것이고 컨테이너는 이것을 실행 요소 내에 저장할 것입니다. 프로그램이 이후에 실행될 때(Chart FX 라이센스를 가지고 있지 않는 다른 컴퓨터에서) IClassFactory2::CreateInstanceLic을 사용해서 차트 객체를 생성하고 저장된 라이센스 스트링을 인자로 전달하게 됩니다. Chart FX는 이 문자열이 올바른 라이센스 스트링인지를 점검할 것이고 올바른 것이라면 컨트롤을 생성하게 됩니다. 그러나 만일 Chart FX 객체를 IDE에서 제작하는 경우에는 이 모든 것이 숨겨지게 됩니다. 그러나 Chart FX 객체를 동적으로 생성하면 어떻게 될까요? 이렇게 되면 이러한 모든 지식들이 다루기 쉬운 형태로 됩니다. 만일 OCX나 DLL을 COM 객체로 사용하려 하면 IClassFactory2를 사용해서 Chart FX 객체를 생성해야만 합니다. C++에서 다음과 같은 코드를 작성하게 될 것입니다: if (SUCCEEDED(hr = CoGetClassObject(<Chart FX Class ID**>,CLSCTX_INPROC_SERVER,NULL,IID_IClassFactory2,(LPVOID FAR *) &pFactory2))) { hr = pFactory2->CreateInstanceLic(NULL,NULL,IID_IUnknown,< Chart FX License string*>,(LPVOID FAR *) &pUnk); if (SUCCEEDED(hr)) p = CChartFXDll::Create(pUnk); pFactory2->Release(); } MFC에서는 IClassFactory2가 CWnd에 싸여 있습니다. ActiveX 컨트롤을 사용하려면(DLL을 사용해서 이렇게 할 수는 없습니다) 다음처럼 할 수 있습니다: CWnd m_ChartFX; m_ChartFX.CreateControl(<Chart FX Class ID**>, NULL, WS_VISIBLE, rc, this, IDC_CHART1,NULL,NULL,< Chart FX License string*>); 이렇게 함으로써 COM을 사용할 수 있습니다. ActiveX와 DLL 모두 COM 객체로서 사용됩니다. DLL을 표준 라이브러리로 사용하려면(chart_Create, chart_Send 등을 사용) COM의 장점을 사용하지 못하게 될 것이지만 Chart FX는 여전히 실행에 필요한 라이센스를 요구하게 됩니다. 다음을 호출해야만 합니다:

Page 217: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

207

chart_SetLicense(<Chart FX License string*>); 차트를 만들 수 있기 전에, 라이센스를 제시하지 못한다면 chart_Create 함수가 실행되지 않을 것입니다. 사용 가능한 라이센스 스트링은 라이센스 카드에 인쇄되어 있습니다. 또한 이것은 Cfx98Info.exe를 실행시켜서 얻을 수도 있습니다(Chart FX). ** Chart FX 클래스 ID는: ActiveX (OCX) : {0x608E8B11,0x3690,0x11D1,{0x8F,0xD4,0x00,0xAA,0x00,0xBD,0x09,0x1C}} // {608E8B11-3690-11D1-8FD4-00AA00BD091C} DLL: {0xFFF90AC1,0x4659,0x11D1,{0x8F,0xD4,0x00,0xAA,0x00,0xBD,0x09,0x1C}} // {FFF90AC1-4659-11d1-8FD4-00AA00BD091C}

Page 218: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

208

Chart FX 프로그래머 가이드

색인

Page 219: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

209

2 2D background color, 63 2D Colored Lines, 64 2D/3D views, 154

3 3D angles, 71 3D background color, 63 3D Depth, 72 3D Effects, 71 3D representation, Surface, 86 3D view, 167 3D Wall, 71

A Access, 6 acquiring points

in Real-Time mode, 141 ActiveX, 199, 208 Activities, Gantt, 83 AddExtension, 177 add-on, 3 Adm, 186 ADO, 29, 37, 39, 40 ADO, creating an XY Plot, 77 AdoSource, 37 Analysis, Technical, 84 angles, 3D, 71 Angles3D, 186 AngleX, 167 AngleY, 167 ANNOTATEX.DLL, 195 Annotation Extension, 177 Annotation objects, creating, 179 API Reference, 4 API, obsolete, 185 Arcs, 179 Area, 77 Arrays, 41 arrows, 177 ASP, Scripts, 17 AutoIncrement, 186 automation, OLE, 199 Axis

custom labeling, 53 Formatting, 51 labeling, 52 scrolling, 54 User-Defined Formats, 51

axis drawing style, 154 Axis Format, 162 axis, showing/hiding, 160 Axis, working with, 49

B B&W printing, 109 background color, 155 background colors, 63 Background picture, 155 background, transparent, 63 Balloon, 104 BarBitmap, 186 BarHorzGap, 187 BDE Cursors, 40 Binding, 9 BitBlitz, 33 BkColor, 64 Black & White patterns, 64 border, color, 156 border, line style, 156 border, line width, 157 borders, showing, 156 Borland, 203 browsers, 17 Bubble, 77, 89 BufferSize, 144 builder, 23 Builder, 203 button, changing behavior, 121 buttons, adding to the toolbar, 122 buttons, removing from toolbar, 120 buttons, toolbar, 118

C C++ Builder, 6, 40, 203 Candlesticks, 84 Categorical Axis, 52 CFX4032.DLL, 195 CFX4032.OCX, 195 CFX4DATA.DLL, 195 CFX4FILTERS.DLL, 195 CFX4OLE.DLL, 195 Chart FX 3.0, migrating from, 185 Chart's Name, 21 ChartType, 186 Circles, 179 class ID's, 208 Class Wizard, 200 clipboard, 14, 97 CloseData, 30 Cluster Charts, 71 clustered chart, 154 CoCreateInstance, 207 COD_ADDPOINTS, 142 COD_REALTIME, 142 COD_REALTIMESCROLL, 142 Collections, reading data, 43 color scheme, 155 Color schemes, 64 Color Stripes, 94 color, dragging, 63

Page 220: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

210

Color, handling, 61 Colored Lines, 64 Colors, 9 colors, assigning to markers, 63 colors, background, 63 COM, 3, 23, 35, 98, 199, 207 Comma separated, 45 commands, 116 Common Dialog, 111 compatibility, 185 Compatibility, 17 compatibility, backward with Chart FX 3.0, 98 cones, 157 Conic shapes, 67 Const, 186 Constant lines, 93 constants, 22

CPI_, 148 Constants, 9 Constants Lines, 169 ConstType, 186 Container, OLE, 14 Context, device, 110 ContextMenus, 172 Contour, 10, 77, 86 control, picture, 100 conversion, project, 185 coordinates, x and y, 75 CPI Constants, 148 CreateWnd, 202 Creating, 21 CRT_LOOPPOS, 143 CRT_NOWAITARROW, 143 CT_EVENSPACING, 142 CTE_NOLEGINVALIDATE, 144 CurrentAxis, 187 Cursors, BDE, 40 curve, 67 Curve, 77 Customizing Chart Painting, 147 CustomTool, 187 cylinders, 157 Cylindrical shapes, 67

D Data Aware, 9 Data Editor, 171 Data Providers, 29 Data, changing values, 33 Data, Controls, 37 Data, hidden, 32 Data, Pasing using Series Object, 31 Data, Passing, 9, 29 Data, Passing to Gantt, 81 Data, Providers, 35 Data, reading from arrays, 41 Data, reading from collections, 43 Data, reading from text files, 45 Data, scrolling, 34 Data, unknown, 32 databases, connecting, 40

databinding, 37 DataEditor, 133 DataStyle, 38 DataTips, 103 DataType, 38, 44 decimals, 162 DecimalsNum, 186 default colors, 61 Delphi, 6, 40, 203 Deployment, 62, 195 Deployment, Annotation objects, 181 Depth, 72, 168 Design Time, 21 design-time licensing, 207 Device Context, 110 DeviceName, 111 Dialog

3D, 167 Axis, 160 Axis Gridlines, 165 Axis Labels, 164 Axis Scale, 162 commands, 173 Constant Lines & Color Stripes, 169 Data/Behavior, 171 Extensions, 174 General, 154 Series, 156

Dispatch interface, 200 DLL, 199, 208 docked

toolbars, 119 Document, OLE Compound, 97 drag points, 172 Dragging markers, 103 Driver, printer, 111

E edit values, 172 Effects, 3D, 71 Ellipses, 179 EnableTBItem, 187 Excel, 13 Export, 9, 97 extensibility, 3, 23, 35 Extension, Financial Edition, 84 Extensions, 174

Page 221: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

211

F

field, SQL, 38 File, 97 files, reading data from text, 45 Filters, Chart FX 3.0, 98, 185 Financial charts, 84 FixedGap, 186 FixLeg, 186 flickering

avoiding, 141 flickering, preventing, 33 floating, toolbar, 119 Fonts, 164 Format, Axis, 162 format, OLE Compound, 97 FoxPro, 7 frame, color, 94

G gallery, 157 Gallery, 79 GalleryTool, 187 Gantt, 81 GDI Resources, 191 GetExtension, 178 GetExternalData, 36, 40, 41, 45 Global Memory, 191 grayscale, printing, 109 grid, 133 grid controls, 29, 35 gridline, colors, 165 gridlines, 49, 155 Gridlines, 9, 56 GridLines, 165 Gridlines, interlaced, 57 gridlines, showing/hiding, 161 gridlines, styles, 165

H hatched patterns, 109, 155 hDC, printer, 109, 111 Hex, 22 Hidden Points, 32 Hi-Lo-Close, 84 HTML, 17

I IClassFactory2, 207 icon selectors, 128 Icons, changing, 125 icons, toolbar, 118 IDE, 207 identifier, 22 IDispatch, 199 IDs, class, 208 images, 177

images, obtaining, 100 Import, 9, 97 Importing, Cfx 3.0 files, 185 include, 17 independent colors, 83 indexes, 22 IniValue, 186 input rate

Real-Time charts, 141 Integrating, 6 interaction, configuring, 172 interaction, mouse, 103 Interface, User, 10, 171 interlaced, 166 Interlaced Grids, 57 Internet, Chart FX, 17 invisible points, 32 ItemColor, 143 ItemStyle, 143 ItemWidth, 143

K Kagi, 84 knowledgebase, 5

L Labeling, surface & contour, 88 Labels, 9 Labels, frequency and style, 52 labels, rotating, 164 LANDSCAPE, 109 LButtonDblClk, 104 LegendBox, 136 legends

scrolling in real time mode, 144 LegStyle, 186 Level colors, surface, 87 License, 207 Licensing, 4 limits, highlighting, 93 line, 67 Line, 77 Lines, 179 Lines, style & width, 68 Lines, coloring, 64 logarithmic, 163 Logarithmic, 162 Loop Marker

Real-time charts, 143 Loop Position

Real-Time charts, 141

Page 222: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

212

M Major interval, 160 major unit, 49, 56 Manager, wizard, 24 marker colors, 63 Marker Volume, 68 marker, dragging, 103 Markers, 67 MarkerVolume, 186 Marketing, 4 matrix, 42 Max, 162 MaxValues, 141, 144 Memory requirements, 191 MenuBar, 116, 171 menus, 172 Menus on Demand, 103 MFC, 200 Migrating, 185 Min, 162 Minor Interval, 160 minor unit, 49, 56 MinorStep, 52 Model, Component Object, 23 Money Flow, 84 Mouse, 9 Mouse, events, 103 Mouse, tracking, 105 MultiLineStyle, 186 Multiple Colors, 63 MultiPoint, 186 MultiShape, 186 MultiStacked, 80 MultiType, 186 MultiType charts, 79 Multitype, financial charts, 85 MultiYAxis, 186

N numerical axis, 49 Numerical Axis, 54

O Object, Axis, 50 Object, Data Editor, 133 Object, LegendBox, 136 Object, PaletteBar, 134 Object, PatternBar, 135 Object, Printer, 109 Object, SerLegBox, 137 objects, handling, 50 obsolete API, 185 OEM, 6 OLE automation, 199 OLE Compound Document, 97 OLE Server, 13 OLE stream, 97 OleDB, 35

On-Line Support, 5 OOP, 23 OpenDataEx, 61, 142, 144 OpenDataEX, 30 Open-Hi-Lo-Close, 84 Orientation, paper, 109

P Painting

customizing, 147 PaintMarker, 147

Sample, 151 palette, 61, 155 Palette, 9 Palette Bar, 171 palette, changing default, 62 PaletteBar, 134 PALETTES.REG, 195 Paper orientation, printing, 109 Pattern, 9 patternbar, 64 PatternBar, 135, 171 patterns, 155 Patterns, 64 patterns, hatched, 109 perspective, 168 Perspective, 72 picture, background, 155 picture, obtaining, 100 Pictures, 179 PIE Legends, 136 Pie slice, separating, 68 PixFactor, 186 PixPerUnit, 34, 54 Plot, contour, 88 plot, surface, 86 Plots, 10 Plots, XY, 75 point markers, 157 Point Shape, 67 Point Size, 67 PointType, 186 polar, 67 Port, printer, 111 PORTRAIT, 109 PostPaint, 147 PowerPoint, 13 PrePaint, 147

Sample, 150 Printer, Driver, 111 Printing, 9, 109 Printing, two or more charts, 110 programmatically, 22 Programming, OOP, 23 Project, converting, 185 properties indexes, 22 Providers, Data, 29, 35 pull-down menu, 103

Page 223: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

213

R Real-time, 33 RealTime, 9, 141 RealTimeStyle, 142 Rectangles, 179 redistributing, 181, 195 redistribution, 14 References, 41, 43, 45 references, Data Provider, 36 registry, 62 Registry, 21 Renko, 84 repainting, prevent flickering, 33 reporting tools, 100 Requirements, Memory, 191 resize, 172 resultsets, ADO, 40 RGBBarHorz, 187 rights, distribution, 195 Rotation, 71, 167 run-time licensing, 207

S Samples, 9 scale, 49 Scales, 162 scatter, 67, 75 scheme, color, 155 Schemes, color, 64 scientific, 93 screen flickering, preventing, 33 screen, visible points, 54 scroll, 172 Scroll, 9 Scroll, controlling, 34 Scrollable, 34, 55 scrolling

Real-Time, 141 Scrolling

in real time mode, 144 Scrolling, Axis, 54 Secondary Y axis, 50, 83 Selectors, 128 Series Legend, 171 series, color, 156 series, showing & hiding, 157 SerLegBox, 137 Server, OLE, 13 SetScrollView, 34 SetStatusItem, 187 SetStripe, 186 SFXBAR.DLL, 195 Shape, 67 ShowStatus, 187 Size, point, 67 slice, separating, 68 solid colors, 61 source, data, 36 spreadsheet, 133 SQL statement, 40

SQL Statement, 38 stack, 154 Stacked, 9, 80 Statement, SQL, 38 Status, 187 StatusText, 187 Step, 52 stream, OLE, 97 Stripes, 9, 94, 169 style, lines, 68 SubCommands, 127 Support, 4, 5 Surface, 10, 77, 86 system aware colors, 61

T Tab separated, 45 Tab Separated Values, 97 TBBitmap, 187 TBItemID, 187 TBItemStyle, 187 Technical Analysis, 84 Technical Support, 4 telephone, 4 Templates, 97 Text files, reading data, 45 ThisColor, 186 ThisPoint, 186 ThisSerie, 186 ThisValue, 186 Three Line Break, 84 Tickmark, 160 tickmarks, 49 Tickmarks, 56 TipMask, 104 Title, 155 Title, axis, 164 Toolbar, 171

adding custom commands, 129 changing icons, 125 creating your own, 131 positioning, 119 removing buttons, 120 selectors, 128 showing, 119 subcommands, 127

toolbar, annotation extension, 177 ToolBar, overview, 116 ToolPos, 187 Tools, 115 ToolSize, 187 ToolStyle, 187 tooltips, 103 ToolTips, 118, 124, 172 tooltips, balloon, 104 Tracking the Mouse, 105 transparent, background, 63 type conversions, 199 type, chart, 157 TypeEX, 144

Page 224: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

214

U UI, 171 UserScroll, 34

V ValueEx, 75 ValueEX, 30 Values Legend, 171 Values, changing, 33 values, editing, 172 VB scripts, 17 VCL, 185 VertGridGap, 186 View3D, 71 View3DDepth, 72 Visual Basic, 6 Visual C++, 7, 200 Visual FoxPro, 7 volume, 84 Volume, marker, 68

W Wall Width, 71 width, lines, 68 Wizard, Class MFC, 200 Wizards, 24 Word, 13

X X axis

scrolling in real time, 144 X-axis, 49 XValue, 186 XValueEx, 75 XY, 10, 75 XY Plots, FAQ, 77

Y Y Axis, 49 Y axis, secondary, 50, 83 YValue, 31

Z z axis, 71 Zoom, 9

Page 225: FX (Software FX, Inc.) All rights reserved - pds.devpia.compds.devpia.com/MAEUL/19/vb_lec/4000/3049/CfxPGAll.pdf · 데이터베이스에 포함된 정보를 포함하고 있는 소프트웨어는

www.yessdata.com

215