DevExpress QuantumGrid 사용법 006 (4/4)( Tutorial – 004 : Footer, GroupFooter, Incremental Search 사용법 )

전장까지 가장 기본적인 사용법을 기술하였습니다.
이번장은 퀀텀의 가장 큰 특징인 Footer, Hroup Footer, Incremental Search의 사용법에대해 알아 보려 합니다.

요즘 필자가 갑자기 백수가 되는 관계로 인해 맥주를 한잔 하자는 여러 부류의 압박에 의해 글을 빨리 올리지 못하는 일이 발생하고 있습니다. 이해해 주시기 바랍니다.

이번 내용도 역시 본 제작자가 이동 또는 게시하지 않는 경우를 제외하고는 이곳 외에 다른곳에서 볼수 없습니다. 이를 어길시 정말 법적 제제가 가해질수 있습니다.

이번장에 해야 하는 작업은
-. Incremental Search 구현해보기.
-. Footer, GroupFooter 구성하기.
-. StyleRepository 이용하여 꾸미기 등입니다.
-. 그리드의 모양 그대로 프린트 하기.

외장 하드의 고장으로 사용하던 VirtualMachine이 망가져서리 며칠 글을 못올렸네요 ㅜ.ㅜ

-. 그리드 모양 그대로 프린트 하기

QuantumGrid의 내용을 프린트 할때 Quantum에서 제공하는 TdxComponentprinter를 이용하면 편리합니다.
컴포넌트의 이름에서 느껴지듯 그리드뿐만 아니라 웬만한 콘트롤은 전부 선택해서 프린트가 가능합니다.

필자는  개인적으로 Chart나 Image, Form을 출력하고자할때 사용합니다.

우선 프린트를 출력하기 위해 컴포넌트를 올려 놓습니다.

컴포넌트를 더블 클릭하여 Editor를 띄웁니다. 여기서 빈 창에 Add를 클릭하여 Component 선택 창을 띄웁니다.
Add Report를 이용하여 그리드를 선택하고 Link의 이름과 Caption등을 변경합니다.
“Show Designer” 버튼을 눌러 Format Report창을 띄웁니다.
Format Report창에서 첫번째 View Tab의 Show 항목에서 Caption과 Filter부분을 설정합니다.
여기서 Show 항목의 Caption은 TcxGrid–>TcxGridLevel –> Caption에 설정한 내용을 출력하는 내용입니다.
필요 여부에 따라서 Check를 해주시면 됩니다.

두번째 Behaviors Tab에서 Auto Width를 선택하여 출력 종이의 크기에 꽉차게 그리드의내용을 출력하도록 조정합니다. 이기능 켜면 그리드의 폭이 좁던 넓던 간에 지정한 용지의 크기에 꽉차게 그리드가 출력이 됩니다.
물론 폭이 넓어서 종이의 폭이 좁으면 글자나 Header의 크기가 일정 비율로 줄어들어 내용이 모두 출력되지 않을 수도있습니다. 이런경우  Page Setup에서 종이 인쇄 방향을 세로를 가로로 변경하거나 Scaling을 조정하면 대부분 해결이 가능 합니다.

위와 같이 Designer설정을 맞췄으면, Page Setup 설정을 합니다.
Page Setup에서는 Page Tab에서 인쇄될 용지의 Type을 설정하고, Orientation을 설정합니다. 뭐 다들 아시는 거니깐 대충 대충 넘어 가겠습니다.

Margins는 독자분들이 스스로 선택 하시면 될거구요. 물론 preview에서도 설정이 가능하기 때문에 preview에서 직접 내용을 보며 조정하시기를 권장 합니다.
다음은 Header와Footer를 조정하는 Tab입니다. 아래 그림처럼 간단히 구성해 보았습니다.
Footer에 [Page# of Pages#] 부분을 [Page# / Pages#] 로 변경 하였습니다. 같은 결과이지만 Footer의 가운데 설정도 가능 하다는 것을 보여 드리기 위해 표시해 보았습니다.

간단하게 Header 와 Footer의 설정이 끝나면 Preview 버튼을 눌러 내용을 확인하고 프린트의 내용이 용지에 잘 출력이되는지, 글자가 잘리거나 이상은 없는지 등을 확인하고 만약 용지가 좁다면, Scaling을 조정 하던가 아니면, 용지의 Orientation을 조정하여 설정합니다.

이제 Print Preview 버튼을 눌러 그리드가 정상적으로 출력되는지 확인 합니다.

가장 먼저 해야 할내용은 margin의 설정입니다. 좌우 여백 및 Header 와 Footer의 크기, 상단 하단의 여백등을 직접 조정 합니다.

이외에도 Title( 실제로 아직 타이틀 설정을 하지 않았습니다. ), Design, Page Setup등의 직접 수정 할수 있습니다.

     

우선Title 설정 부분을 보도록 하겠습니다. Mode에 On Every top Page를 선택하고( 기본값 으로 설정되어 있습니다.) Text에 Title값을 입력합니다.

그럼. 아래처럼 멋드러지게 출력이 되는 거져.

간단하죠?

자그럼. Button을 올려놓고 BTN_Print 라고 Name을 정의하고 Caption에 “프린트” 로 설정합니다.
Click 이벤트에는 아래와 같이 입력합니다.

procedure TForm1.BTN_PrintClick(Sender: TObject);
begin
Prn_Print_Test.Print( True, Nil );
또는
Prn_Print_Test.Preview;
end;

Print뒤에 파라미터로 True를 정의했는데, 이는 프린트 Dialog를 그림 처럼 띄우고 False는 Dialog를 띄우지 않고 바로 출력합니다.

그리 어렵지도 않고 단지 설정이 많은 부분이라 ( 원체 프린트가 노가다성 작업이므로 ) 귀찮기는 하지만, 단 한줄의 코딩으로 이렇게 쉽게 그리드의 모양 그대로를 출력할수 있다는 것은 프로그래머의 부담을 상당히 줄여 주게 됩니다.
참고 : TcxComponentPrinter에서 TcxGrid를 출력할겨우  출력 버튼을 누를당시의 그리드 모양 그대로 출력하기때문에 만약 Groups의 내용이 모두 Collapse상태라면, 그상태 그대로 일부분만 Expanded상태라면 그상태로 출력합니다. 따라서 AllExpanded상태로 출력을 원하신다면, print전에 반드시 BandTV_Simple.DataController.Groups.FullExpand 상태로 출력해야 합니다.

간단하게나마 프린트 하는 부분을 마쳤습니다. 다음은 그리드의 내용을 Excel로 출력하는 방법에 대해 알아 보도록 하겠습니다.

-. 그리드를 엑셀로 출력하기.

그리드를 엑셀로 출력하는 경우 그동안은 꽤나 많은 작업을 하였습니다.  물론 몇몇 컴포넌트는 Query나 Table의 내용을 Excel로 나타내지만, 좀 아쉽지요.( TMS도 Grid를 Excel로 내보내는 기능이 있습니다. )

우선 uses문에 cxGridExportLink, ShellApi 를 추가 합니다.
TButton을 Btn_Excel이라 설정하고 Caption을 “Excel”이라 설정한뒤에 아래처럼 Event를 설정합니다.

procedure TForm1.Btn_ExcelClick(Sender: TObject);
begin
ExportGridToExcel( ‘C:\Test.xls’, GRD_Simple, TrueTrueFalse );
if FileExists( ‘C:\Test.xls’ )  then
ShellExecute(Application.Handle, ‘open’, ‘C:\Test.xls’, nil, nil, SW_ShowNormal)
end;

ExportGridToExcel함수의 파라미터는 아래와 같습니다.( 마지막 한개는 디폴트로 ^^ )

 const AFileName: string;  저장한 파일의 이름을 기술합니다. Full Path명을 적어 주어야 합니다.
 AGrid: TcxGrid;  출력할 그리드를 지정합니다. 여러 Level이 있더라도 현재 ActiveLevel만 출력하므로 편리합니다.
 AExpand: Boolean = True; group이나 Master Detail을 출력할때 확장하여 출력할것인지 현재 모양대로 할것인지 지정합니다.
 ASaveAll: Boolean = True;  그리드의 전체 내용을 모두 출력할것인지 선택된 내용만 출력할것인지 정의 합니다.
 AUseNativeFormat: Boolean = True;  사용자가 Grid의 각컬럼마다 정의한 포맷으로 출력하고자 한다면 False를 기본 양식으로 출력하고자 한다면 True를 지정합니다. 이부분은 반드시 False로 지정해야 사용자가 지정한 양식대로 출력합니다.

간단하죠? 쉽고 빠르게 그리드를 Excel로 Export하고 화일이 생성되면, ShellExecute로 열러 버립니다.
물론 엑셀이 설치되지 않았다면 열지 못한다고 메세지가 나타나겠죠?

자 요기까지 프린트와 Excel로 Export하는 법에 대해 알아 보았습니다.

다음장은 Master-Detail 관계를 출력하는 법에 대해 알아보도록 하겠습니다.

Author: yyjksw