ER/Studio 의 자동조작 API를 Delphi 2009에서 사용하기 - Getting Started by Pawel Glowacki

By: Beomyong Park

Abstract: Pawel Glowacki, CodeGear EMEA Evangelistr가 ER/Studio 의 자동조작 API를 Delphi 2009에서 사용하기 - Getting Started 를 따라하기 방식으로 보여줍니다.

ER/Studio 자동조작 API Delphi 2009에서 사용하기 - Getting Started

Pawel Glowacki 작성 (해당블로그: http://blogs.codegear.com/pawelglowacki/2008/08/13/38513

(역자 주: 2008년 8월에 작성된 아티클 이지만, 2011년 5월 현재 버전인 ER/Studio XE와 Delphi XE에서도 여전하므로 번역함)

지난달 (2008년 7월) 토론토의 엠바카데로 기술 킥오프 행사에서는 소프트웨어 컨설턴트, 제품 책임자를 비롯한 모든 엔지니어들이 모여 코드기어 개발툴과 데이터베이스 기어 DB툴에 대한 지식, 계획, 제품, 로드맵에 대해 공유하였다. 무엇보다 중요한 것은 통합으로 인해 새롭게 더욱 커진 기술팀의 팀워크를 가족처럼 다지는 일이었다. 킥오프 행사 후 나는 바로 여름 휴가를 위해 크로아티아로 떠나야 했기에 이 아티클을 다소 늦게 올리게 되었다.

아마 델파이와 C++빌더에서 95%는 어떤 형태이든 데이터베이스를 사용하고 있을 것이다. 비록 여러분이 원하는 데이터베이스 애플리케이션 개발에 필요한 모든 것을 델파이가 이미 제공하고 있지만, 델파이는 ER/Studio처럼 크로스-플랫폼 데이터베이스 모델링을 위한 모든 기능을 제공하기 위해 만들어진 DB 모델링 도구는 아니다. 따라서 지금까지 나는 데이터베이스 생성 작업을 위해서 써드 파티 프로그램을 사용해왔다. 내가 본 하지만 ER/Studio의 기능은 정말 인상적이었다.

나는 코드기어/엠바카데로에 합류하기 전에 약 5년간 폴란드에서 가장 큰 시중 은행의 재무 관리 팀에서 사용하는 커다란 DW(데이터 웨어하우스)의 데이터를 Excel 매크로 자동조작 API를 이용하여 보기 좋은 스프레드 시트로 만드는 델파이 3~5 애플리케이션을 구축 관리하였다. 당시 일부 동료들은 델파이를 이용하여 엄청난 규모로 엑셀 파일을 생성하는 것이 충분하지 않을 수도 있다고 우려했었다.:-)

내가 델파이로 이런 자동조작 코드를 쓰게 된 것은 Charlie Calvert (지금은 마이크로소프트에서 C# Evangelist로 재직중)가 쓴 "Delphi and Microsoft Office: Automating Excel and Word" 라는 글 덕분이다. 당시 또 하나의 좋은 소스는 Binh Ly의 "Techvanguards"사이트였다. 요즘에는 델파이와 Automation 자동조작 자료에 대한 링크가 "OLE/COM/DCOM/Automation/ActiveX - Delphi knowledge base"에 잘 정리되어 있다.

코드기어와 데이터베이스기어의 제품들이 서로 밀접하게 통합되는데는 시간이 걸릴 것이다. 하지만, 지금 당장 할 수 있는 것들도 있다. ER/Studio 는 OLE Automation을 통해 자동조작 될 수 있고, 이미 ER/Studio의 풍부한 오브젝트 모델을 잘 활용한 VBA 매크로 스크립트 코드도 많다. 지금 바로 델파이를 이용해서 ER/Studio의 자동조작 API를 시작하지 못할 이유가 없다. 

이 글에서는 델파이 VCL 폼 Win32 애플리케이션에서 ER/Studio를 바로 구동하는 예제를 스텝-바이-스텝으로 보여주고자 한다. 딱히 멋진 내용은 없으나, 많은 유사한 연동 요구 사항에 대한 시작점이 되기에는 충분할 것이다. 예제는 ER/Studio 7.6.0와 Delphi 2009 Tiburon을 사용하여 진행된다 (2011년 현재의 Delphi XE와 ER/Studio XE 에서도 유효함, 또한 마이크로소프트 C#과 VB등을 통해서도 연동됨: 역자 주)

델파이의 "Components" 메뉴의 "Import Component" 마법사는 COM 타입 라이브러리를 가져오면 해당 타입 라이브러리에 정의된 클래스들을 웹핑(wrap)한 VCL 컴포넌트를 만들어 준다. 만약 "Tool Pallette" 에 설치하고자 한다면 "Package"를 생성한 후 마법사를 통해 이미 생성된 델파이 유닛(unit)에 추가하고, 개발툴에 패키지를 설치하기만 하면 된다. Delphi 2009의 "Import Component" 마법사는 예전 보다 더욱 쉬워졌다. (Chris Bensen이쓴 블로그"Tiburon Sneak Peek: Import Component Wizard" 참조). 마법사에서 패키지 프로젝트까지 바로 생성해주기 때문이다. 또한 "Registered Type Libraries" 탭에서 검색 기능을 제공하기 때문에 등록된 타입 라이브러리를 찾기 위해 스크롤 할 필요가 없다. (대부분 많은 타입 라이브러리를 추가하므로 스크롤 목록이 매우 길 것이다)

델파이로 ER/Studio 타입 라이브러리 임포트(Import)하기

먼저 ER/Studio 와RAD Studio 가 컴퓨터에 설치되어 있는지 확인한다. 그리고 "CodeGear RAD Studio" 를 시작하고 메인 메뉴의 "Components" 에서 "Import Component" 를 선택하면 아래와 같은 "Import Component" 마법사가 나타난다.

Hide image

맨 처음 나타나는 "Personality, Framework and Platform" 탭에서 "VCL for Delphi Win32" 를 선택하고 "Next >>" 버튼을 클릭한다. 만약 "Delphi 2009" 바로가기를 통해서 RAD Studio 를 실행하면(IDE에서 델파이로 이미 지정되어 있다면) 아래 화면은 생략된다.

Hide image
 

다음 탭에서 "Import a Type Library" 옵션을 선택하고 "Next >>"를 클릭한다.

Hide image

다음은 "Registered Type Libraries" 탭이다. 여기에서 Delphi 2009 에서 새로 추가된 검색 기능을 활용하여 "ER/Studio Type Library"의 위치를 찾는다. "C:\Program Files\Embarcadero\ERStudio7.6\ERSTUDIO.exe" 파일이다.

Hide image
Click to see full-sized image 

다음 탭에서 Palette Page의 이름을 지정한다. 이곳에 컴포넌트들이 설치되게 된다. 여기에서는 "ER Studio" 라고 입력하겠다(원하는 이름을 넣으면 된다). "Generate Component Wrappers" 가 체크되었는지를 확인하고 "Next>>"를 클릭한다.

Hide image
Click to see full-sized image

다음 탭에서는 Delphi 2009 에서 추가된 옵션인 "Install to New Package"를 선택한다. 그러면, 새 패키지 프로젝트를 만드는 단계를 직접 하지 않아도 된다.

Hide image

다음 화면에서 새 패키지 프로젝트의 이름과 위치를 지정하면 설치된 패키지 목록에 추가된다. 여기에서는 "D2009ERS76" 라고 프로젝트 이름을 주고 Delphi 2009 demos 폴더를 지정하였다 (역시 원하는 데로 지정하기 바란다)

마법사의 마지막 화면에서 정보를 확인하고 "Finish 버튼을 클릭하면, 새로운 "Package" 프로젝트가 만들어지고 여기에 ER/Studio 타입 라이브러리가 임포트되어 the "ERStudio_tlb.pas"델파이 유닛이 만들어진다. 이제 "File \ Save" 메뉴나 "Ctrl+S" 를 통해서 프로젝트를 저장한다

Hide image
Click to see full-sized image

우선 생성된 유닛의 "Structure" 뷰의 "Errors" 섹션에서 "//"로 시작되지 않게 시작된 주석에 대한 에러가 몇 개 보일 것이다. 이 에러는 간단히 고칠 수 있다. 주석 처리되어야 함에도 “//” 로 시작되지 않는 해당 코드 라인을 선택한 후 "Ctrl+/" 을 통해서 주석 처리하면 된다. 문제가 되는 소스 코드 라인을 파악하는 가장 빠른 방법은 프로젝트를 컴파일 해 보는 것이다. 프로젝트를 컴파일 하려면 메뉴에서 "Project \ Compile"을 클릭하거나 Project Manager"의 해당 프로젝트에서 오른쪽 클릭을 한 후 "Compile"을 선택하거나 "Ctrl+F9"를 누르면 된다. 문제가 되는 모든 코드 라인을 주석 처리하고 나면 "Done: Compiled" 메시지가 표시된다.

 Hide image
 

IDE 에 패키지를 설치하기 위해 한가지 더 알아둘 것이 있다.

"Tool Palette" 에는 동일한 이름을 가진 컴포넌트가 허용되지 않는다. 델파이에 이미 "TShape" 라는 컴포넌트가 있기 때문에 ER/Studio의 "TShape" 컴포넌트는 동일한 이름은 사용될 수 없다. ER/Studio 패키지를 "Tool Palette"로 가져오려면 생성된 "TShape" 컴포넌트의 이름을 "TShapeERS" 처럼 다른 이름으로 바꾸어야 한다. 이름 바꾸기는 델파이의 리팩토링 기능 중 하나인 "Rename"을 사용하면 매우 간단하다.

먼저, 생성된 유닛에서 "TShape = class(TOleServer)" 선언부로 가보자 . 여기에서 "Ctrl+F"를 통해 구문 검색 대화상자를 띄우고 "TShape = class"를 입력한 후 OK를 클릭한다. "TShape" 식별자에 커서를 올려 두고, 오른쪽 클릭하여 "Refactoring \ Rename" 옵션을 선택하면 Rename" 대화상자가 나타난다 ("Shift+Ctrl+E"을 해도 된다).

Hide image

"New name" 에 "TShapeERS"를 입력하고 OK를 클릭하면 "Refactoring"탭이 표시되면서 리팩토링의 영향을 받는 모든 위치가 나열된다. 루비 큐브 모양의 아이콘을 클릭하거나 "Ctrl+R" 를 누르면 이름바꾸기 리펙토링이 수행되고 모든 TShape" 이"TShapeERS"로 바뀌게 된다.

Hide image
 

이제 "Tool Palette"에 컴포넌트를 설치할 준비가 되었으므로 "Ctrl+S" 를 통해 저장한다. Project Manager 창에서 프로젝트명 ("D2009ERS78.bpl")을 오른쪽 클릭하고 "Install" 을 선택한다. 프로젝트가 컴파일되어 패키지가 성공적으로 설치되었으며, 아래와 같은 모든 컴포넌트를 활용할 수 있다는 확인 창이 표시된다.

Hide image
Click to see full-sized image

엄청나게 많은 컴포넌트를 볼 수 있다. 아마 208개의 컴포넌트가 설치 될 것이다. 이만큼 많은 자동 조작이 가능하다는 의미이다;-)

개발툴에 ER/Studio 타입 라이브러리를 임포트하는 작업이 완료되었다.이제 델파이 VCL Forms 애플리케이션을 만들어 보자. "File \ Close All"를 통해 패키지 프로젝트를 닫는다.

간단한 델파이 ER/Studio Automation 자동조작 예제

델파이 애플리케이션에서 ER/Studio의 자동조작을 구현해 보자. "File \ New \ VCL Forms Application - Delphi"를 선택하여 빈 애플리케이션을 생성한다. "File \ Save All"을 선택하여 메인 폼에 원하는 이름을 지정한다. 여기에서는 프로젝트 명을 "ERSVersionInfo"로 하고 메인폼은 "Unit1" 으로 그냥 두겠다.

"Tool Palette" 의 "ER Studio" 탭을 펼치면 폼에서 사용될 수 있는 모든 새 컴포넌트가 표시된다. 이제 무엇부터 시작해야 할까?

Hide image
Click to see full-sized image

ER/Studio 설치 폴더에는 우리가 바로 개발하기 위해 필요한 모든 정보가 들어있는 "ERStudio 자동조작 API 레퍼런스 (ERStudio Automation Interface Reference)" (AIRef.chm) 도움말 파일이 있다. ER/Studio 의 automation자동조작 API는 외부 애플리케이션이나 ER/Studio 내부의 매크로를 통해서 활용될 수 있다. 외부 애플리케이션의 경우 Application" 오브젝트의 인스턴스를 생성하는 것부터 시작된다.

Hide image
Click to see full-sized image

폼에서 간단히 "TApplication" 컴포넌트를 끌어다 놓는 것에서부터 시작해보자. Tool Palette  의 상단에 "Application"이라고 타이핑하면 쉽게 "TApplication" 컴포넌트를 찾을 수 있으며, 더블 클릭하면 폼에 추가된다. 설치된 ER/Studio의 버전을 표시하는 간단한 예제를 만들어 보자.

Import Component" 를 통해 생성된 모든 웹퍼 컴포넌트들은 "TOleServer" 클래스로부터 상속받으며 디자인 타임(개발 환경)에서 Object Inspector에 오픈된 속성이 나타난다. "TApplication” 컴포넌트를 폼 위에 떨어뜨리고 나서 "AutoConnect" 와"AutoQuit" 를 "false" 에서 "true"로 바꾸어 보자. 이렇게 하면 델파이 애플리케이션이 시작하거나 멈출 때 ER/Studio 도 같이 시작되고 멈추게 된다.

Hide image

폼에 ER/Studio의 버전을 표시하려면, 버튼을 하나를 끌어다 놓은 후, OnClick" 이벤트에 간단히 소스 한 줄을 추가하면 된다.

Hide image
Click to see full-sized image

이제 다되었다! 녹색 화살표 아이콘을 (또는 "F9") 을 통해서 애플리케이션을 구동하면 버튼 하나가 달린 간단한 폼을 보여질 것이다. 이 델파이 애플리케이션이 시작되면 ER/Studio 도 자동으로 같이 시작된다. "Show Version" 버튼을 클릭하면 아래와 같은 메시지가 보여진다.

Hide image

델파이 애플리케이션을 닫으면, ER/Studio 도 같이 닫힌다.

요약

델파이는 네이티브 윈도우 애플리케이션을 작성하는 최고의 도구이다. COM 자동조작 지원은 Delphi 3 이후 십수년간 지속적으로 향상되고 있다. ER/Studio는 외부 애플리케이션에서 ER/Studio의 기능을 활용할 수 있도록 매우 풍부한 오브젝트 모델을 오픈하고 있다. 이 아티클에서는 ER/Studio 타입라이브러리를 델파이로 임포트하는 방법과 매우 간단한 애플리케이션 생성을 해 보았다. 이것이 여러분이 자동조작 요구사항을 구현할 때 좋은 시작점이 되기를 바란다.

ER/Studio VCL 컴포넌트 웹퍼(wrapper)가 포함된 델파이 패키지는 Code Central에서 다운받아서 설치할 수 있다.

.

Go 델파이! Go ER스튜디오! Go 엠바카데로!

Server Response from: ETNASC03