'퀵리포트'에 해당되는 글 1건

[[강좌] 퀵리포트 실전입문 01
k8z7 올림, 2000년 1월 24일 월요일 오전 4시 37분
---------------------------------------------------------------------------

퀵리포트는 물론 한계도 있겠지만 강력한 기능을 가지고 있다.
그러나 초보자를 위한 현실적인 참고자료는 찾아보기 어렵다.
초보자로서 한참 헤맨 끝에 실전적인 도움말을 정리한다.
우선 이번에는 기본적인 밴드 및 컴포넌트 사용법을 다룬다.
기회가 되면 페이지 디자인에 관해서도 정리할 필요가 있다.
데이터베이스와 연결시키는 안내는 당연히 필요하다.
도움말이 필요한 분은 연락을 주기 바란다.
모르는 것은 공부해서라도 강좌로 올릴 의향이 있다.

1. 새 폼

언제든지 프로젝트는 새 폼으로부터 시작한다.
실습도 마찬가지이다.
프로젝트를 새로 시작하든지, {File - New Form}으로 새 폼을 연다.
폰트를 열어보면 = MS Sans Serif, 8포인트임을 알 수 있다.

2. 테이블, 데이터소스

테이블을 올린 후에는 (1)DatabaseName (2) TableName (3) Active 차례로 설정한다.
데이터소스를 올린 후에는 (1) Dataset(테이블컴포넌트의 델파이 Name)을 선택한다.
이번에는 데이터베이스 연결을 다루지 않지만, 기본적으로 언급한 것이다.

3. 퀵리포트/이하 팔레트의 퀵리포트 페이지에서 가져온다.

폰트를 열어보면 = Arial, 10포인트임을 알 수 있다.
* 퀵리포트는 폼의 폰트를 상속하지 않는다.
퀵리포트를 올려둔 후에는 (1) Dataset(테이블 또는 쿼리)을 연결해 주어야 된다.
오늘은 데이터베이스 연결 없이도 이후의 실습이 모두 가능하다.
* 다른 폰트 사용이 필요하면, 퀵리포트의 폰트를 바꾸고 시작하는 것이 좋다.

4. 디테일밴드

퀵리포트의 Bands/HasDetail 속성을 true로 바꾸면 간편하게 디테일밴드를 만들 수
있다.
만들어진 디테일밴드를 클릭하면, 오브젝트 인스펙터에 나타난다.
폰트를 열어보면 = Arial, 10포인트 = 퀵리포트를 상속함을 알 수 있다.
기본적인 사용에는 달리 설정해 줄 것이 없다.
디테일밴드의 폰트를 바탕체, 13포인트로 바꾸어 보자.

5. Child밴드

디테일밴드의 HasChild 속성을 true -> 디테일밴드 아래에 차일드밴드가 붙는다.
차일드밴드는 Parent밴드 밑에 따라붙게 만들어진다.
* Child밴드는 밴드의 내용을 수직으로 연결, 확장할 때 유용하다.
폰트를 열어보면 = Arial, 10포인트 = 퀵리포트를 상속함을 알 수 있다.
<기억> 디테일의 Child인데도 디테일이 아닌 퀵리포트를 상속하다니...

Child밴드의 폰트를 바탕체, 13포인트로 바꾸어 보자.
Child밴드의 HasChild 속성을 true -> 디테일밴드 아래에 차일드밴드가 붙는다.
* 이런 식으로 Child밴드를 계속 이어붙일 수가 있다.
<기억> 이번에도 폰트는 퀵리포트를 직접 상속한다.

6. TQRMemo( 퀵리포트 메모 컴포넌트 )

팔레트에서 QRMemo 하나(QRMemo1)를 디테일밴드에 올리자.

7. Top, Left, Lines 속성

QRMemo1의 Top(0), Left(0)으로 설정하면 밴드 왼쪽 위로 붙는다.
* 밴드에 올려진 컴포넌트의 위치는 밴드에 대한 상대위치이다.
QRMemo1의 AutoStretch(true) 설정하자.
* AutoStretch는 기본 false인데, 이 상태에서는 리포트에 1줄밖에 출력되지 않는다
.

8. 메모 / Lines 속성

모든 종류의 메모 컴포넌트에서는 Lines 속성에 내용을 담게 되어 있다.
Lines의 String List Editor를 열고, 반 페이지 조금 못될 텍스트를 복사해 넣자.
* 편하게 사용하는 워드나 에디터로부터 복사하여 붙이면 된다.
리스트 에디터에서 Esc를 눌렀다가, 다시 에디터를 열어보면 빈 껍데기이다.
다시 복사를 붙이고, [OK]로 닫자.

9. 컴포넌트 복사하여 붙이기

반복되는 동일한 작업, 거의 유사한 작업은 최대한 줄이는 것이 건강에도 유익하다.

10. 메모 컴포넌트 복사

QRMemo1을 복사(^C)한 후, ChildBand1에 붙이면(^V) QRMemo2가 생기고, ChildBand2
에 또 붙이면 QRMemo3가 생길 것이다.
* 복잡한 설정이 필요한 컴포넌트는 하나 만들어서 복사하여 붙이면 간편하다.

11. 밴드 복사

ChildBand1, ChildBand2를 차례로 클릭하고 를 눌러 모두 지워버리자.
디테일밴드를 클릭한 후 복사(^C)하자.
한 번 붙이면(^V), 디테일밴드 위로 QRBand1이 만들어진다.
다시 한 번 붙이면(^V), QRBand1 위로 QRBand2가 만들어진다.
차례대로 메모를 선택하고 Lines를 열어 '2', '1', '디테일' 표시를 해 두자.
퀵리포트(밴드를 선택하면 안됨)에서 오른클릭, Preview를 해 보자.
* 둘 이상의 디테일밴드가 있으면, 맨 위(여기서 '2')의 디테일만 보고서 출력된다.

12. 밴드 / ForceNewPage 속성

QRBand1, QRBand2를 지우고, Child1, Child2를 다시 만들며 메모도 복사하자.
이제 프리뷰를 보면 디테일, Child1, Child2 차례로 연속해서 출력이 될 것이다.
Child1밴드를 클릭하고 ForceNewPage 속성을 true로 바꾸자.
* 어떤 밴드이든지 새 페이지에 인쇄하려면 ForceNewPage 속성을 이용한다.
이제 프리뷰를 보면 1페이지에 디테일, 2페이지에 Child1이 출력된다.

13. SubDetail 밴드

팔레트에서 SubDetail 밴드 하나를 퀵리포트에 올리자.
* 서브디테일은 하나의 퀵리포트에 무제한 허용되며, 모두 출력된다.

14. SubDetail / Dataset 설정

디테일밴드에는 없지만, 서버디테일에는 Dataset 속성이 있다.
디테일은 퀵리포트의 Dataset을 따라가지만, 서브디테일은 독립성이 있다는 말이다.
* 서브디테일은 퀵리포트와 별도의 Dataset을 가질 수 있다.
서브디테일을 올려둔 후에는 (1) Dataset(테이블 또는 쿼리)을 연결해 주어야 된다.

15. 서브디테일 복사

다른 밴드의 메모 컨트롤을 복사하여 서브디테일에 붙여넣자.
이제 디테일, Child1, Child2 차례로 다 지워버리자.
QRSubDetail1을 복사, 두 번 붙이면 QRSubDetail2, QRSubDetail3이 차례로 생긴다.
프리뷰를 보면 모든 서브디테일이 출력되는 사실을 알 수 있다.

16. 그룹밴드

QRSubDetail3에서 Bands/HasFooter, HasHeader 속성을 모두 true로 바꾸자.
그러면 Group Header, Group Footer 밴드가 QRSubDetail3의 위/아래로 생길 것이다.
* 서브디테일은 그룹헤더, 그룹푸터를 붙여서 그룹밴드로 만들 수 있다.

17. QRLabel1( 퀵리포트 레이블 컴포넌트 )

레이블 컴포넌트 하나를 그룹헤더밴드에 올리자.
AutoSize 속성(기본 true)을 false로 바꾸자.
Width를 300으로 바꾸자. -> 레이블의 폭이 늘어난다.
레이블 컴포넌트의 캡션에 '이것이 제목이다'를 입력 -> 레이블 왼쪽에 나타난다.

18. Alignment, AlignToBand 속성

레이블 컴포넌트의 Alignment 속성을 taCenter로 바꾸자.
'이것이 제목이다'가 레이블 한가운데로 모여 보일 것이다.
레이블의 AlignToBand 속성을 true로 바꾸자.
레이블 자체가 밴드의 한가운데로 이동할 것이다.
레이블의 Alignment 속성을 taLeftJustify로 바꾸자.
레이블이 밴드의 왼쪽에 붙고, 그 내용도 레이블의 왼쪽으로 붙는다.
레이블의 Alignment 속성을 taRightJustify로 바꾸자.
레이블이 밴드의 오른쪽에 붙고, 그 내용도 레이블의 오른쪽으로 붙는다.
레이블의 폰트를 돋움체, 25포인트로 바꾸자.

19. 그룹헤더의 디자인높이

이제 프리뷰를 보면, 내용은 다 나오는데 레이블에 쓴 제목 아래가 잘려서 보인다.
그 모양은 디자인시에 우리가 화면에서 본 모양이다.
메모는 Autostretch 속성을 true로 바꾸었을 때 다지인 화면에 다 나타나지 않아도,
프리뷰에서 모든 내용이 다 출력되었는데, 그 속성을 false로 두어서 그럴까?
레이블의 Autostretch 속성을 true로 바꾸고 프리뷰해도 결과는 마찬가지일 것이다.

* 그룹헤더밴드는 디자인시의 높이대로 출력된다.

그룹헤더밴드의 Height에 100이나 적당한 크기를 주자.
레이블의 Top을 보기 적당한 위치로 이동시키자.
이제 그룹헤더밴드의 ForceNewPage을 true로 주고 다시 프리뷰해보라.

20. 그룹푸터 디자인

그룹헤더의 레이블을 복사, 그룹푸터에 붙이고, 왼쪽정렬, '여기가 끝이다.'로.
디자인시에 레이블이 보이지 않도록 헤더 높이를 줄이자.
이제 프리뷰해 보라. 그래도 프리뷰에 정상으로 나타날 것이다.

* 디자인시의 밴드높이는 그룹헤더에서만 출력시에 영향을 미친다.

21. Child밴드와 그룹푸터

SubDetail3(그룹본체)밴드를 클릭하고 HasChild 속성을 true로 바꾸자.
그러면, 헤더/본체/Child/푸터 순서로 보일 것이다. 그대로 출력된다.

22. LinkBand, Frame 속성

LinkBand 속성은 앞뒤의 밴드를 같은 페이지에 출력하게 하는 것이라고 한다.
그러나, 연습을 해 보았는데 무언가 잘 되지 않았다.
정확하게 아는 분이 있으면 가르침을 기다린다.

프레임 속성을 펼쳐보면 밴드에 테두리나 아래선 등을 줄 수 있음을 알 수 있다.

23. 잔소리

이 정도만 알면, 퀵리포트에 관해 막연한 거리감은 없어질 것이다.
내가 이 정도 정리하기까지, 며칠이지만, 사람을 만나 자문하고 자료실을 뒤지고 델
파이 온라인 헬프를 베끼며 번역하고, 델파이 샘플 프로그램을 분석하고 ...
이루 다 말할 수 없지만, 아직 수박 겉핥기에 불과함을 절감한다.
내게 진전이 있는 대로, 후배들을 위한 강좌를 남기고 싶다.

---------------------------------------------------------------------------
[강좌] 퀵리포트 실전입문 01
2000년 1월 24일 월요일 오전 4시 38분
k8z7@hitel  김병희 ( 017 - 264 - 4995 )
---------------------------------------------------------------------------
Posted by csbuilder