|
저도 전에 잠깐 해보다가 잘 안되어서 덮어두고 있었는데...
질문 올라오는것 보고 다시 해봤습니다.
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의 미리보기에서 프린트하는 것을 막을 려고 합니다.
: 어떻게 해야 하나요?
|