C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[52367] Re:QReport의 미리보기 기능중에 프린트 하는 것을 막는 기능이 있나요?
장성호 [nasilso] 1901 읽음    2008-02-21 16:38
저도 전에 잠깐 해보다가 잘 안되어서 덮어두고 있었는데...
질문 올라오는것 보고 다시 해봤습니다.

QuickRep 버젼은 정확히 잘 모르겠고  Builder6.0 pro 깔면 기본적으로 설치되는 버젼으로
Builder6.0에서 테스트 해 봤습니다.


[Spy로 정보 획득]
먼저 Preview하면 보여지는 폼을 spy로 확인해 보니 ..

메인프레임     =  TQRStandardPreview 였습니다.
툴바               =  TToolBar
보여지는 부분 =  TQRPreview

이었습니다.

저 ToolBar의 포인터만 찾으면 되는데...
QuickReport 소소는 없도 hpp밖에 없으니...
FindWindow로 찾는것은 HWND핸들뿐이구...

[예전에..]
예전에 preview폼이  맨처음에 보일때
Zoom to Width 가 아닌 Zoom to Fit로 보이게 하기 위해서

1. FindWindow 로   TQRStandardPreview 의  HWND 핸들을 찾고
2. 다시 FindWindowEx로 TQRStandardPreview 에서 TToolBar 핸들을 찾은다음
3. SendMessage로 WM_LBUTTONDOWN , WM_LBUTTONUP 메세지를 보내 toolbar에서 첫번째 버튼이 클릭되도록 하여서
    구현한적이 있습니다.


[해결 방법]

방법1.
   ; 아이디어 입니다.
   FindWindow , FindWindowEx  로  ToolBar 핸들을 찾은다음 WindowProc를 바꿔서 서브클래싱으로
   WM_LBUTTONDOWN , WM_LBUTTONUP 메세지를 보고.. LPARAM으로 들어오는 마우스 좌표를 보고 print부분이면
   return해버리는 방식으로 구현 가능할것 같습니다.


방법2.
   ; 퀵리포트 해더파일( *.hpp)을 보다보니까..
     QRPrntr.hpp 의 TQRPrinter 클래스에 보니까
     PreviewControl라는게  private 멤버로  있더군요

     그래서 FindWindow로 찾은  TQRStandardPreview 의 핸들과
     PreviewControl의 Handle을 비교해 봤습니다.

     결론은 같았습니다.  ===> 앗싸

     자  이제 TQRStandardPreview 를 찾았으니
     TQRStandardPreview 에서 TToolBar * 를 찾는것은 금방이겠죠

     TToolBar를 찾았으면 ToolBar의 12번째 TToolButton을 Visible=false 시키면 깔끔하더군요
     Enabled=false 해도 되구
     ToolBar->Buttons[11]->Visible=false;
  
     저도 이기능이 필요했는데...
     질문덕택에 해결했네요

[참고사항]

1. PreviewControl 은  TQRPrinter 클래스의 private 멤버인데
   class의 private멤버 access하는 방법은 팁&트릭 게시판에 있습니다. 참고하시구요


2. Preview 또는 PreviewModal등이 호출되기 전에는 
   TQuickPre 의 Printer 가 없다는것이 중요합니다.
 
   Preview 가 호출된 직후에
   위 방법1,방법2의 작업을 해줘야 합니다.
  
   요건  쓰레드 , 타이머, 포스트메세지 등의 방법이 있겠네요

그럼..
  

암흑사제 님이 쓰신 글 :
: QReport의 미리보기에서 프린트하는 것을 막을 려고 합니다.
: 어떻게 해야 하나요?

+ -

관련 글 리스트
52361 QReport의 미리보기 기능중에 프린트 하는 것을 막는 기능이 있나요? 암흑사제 1331 2008/02/20
52367     Re:QReport의 미리보기 기능중에 프린트 하는 것을 막는 기능이 있나요? 장성호 1901 2008/02/21
52374         구현에서는 어떻게 해야 하나요 죄송합니다. 초보입니다. 암흑사제 1551 2008/02/22
52379             Re:구현에서는 어떻게 해야 하나요 죄송합니다. 초보입니다. 장성호 2217 2008/02/22
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.