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
[65631] Re:Re:폼 프린트시 콤보박스 선택 내용 미출력 문제 __ 해결!!
로더 [] 1366 읽음    2011-12-02 20:12
문제점에 대한 답변을 올려 주셔서 이것저것 테스트 해보느라 이제야 해결 내용을 올립니다.
몇가지 문제점은 있지만, 대략 기능은 수행하는 것 같아 보입니다.
폼에 프린터다이얼로그 하나 올리셔야 합니다.

문제점 1. 듀얼스크린 지원문제 : 보조모니터에 프로그램을 올리고 실행하면 출력이 안 됩니다. (빈페이지 출력)
문제점 2. 프린터 해상도(DPI ??) 에 따른 출력 싸이즈 자동 조절 : 전 그냥 테스트 하면서 값을 고정 시켰습니다.

혹시 소스를 보시고 해결 가능한 방법을 알려 주시면 열심히 공부하겠습니다.
깊이 있는 덧글 달아주신 장성호님 감사합니다!!


장성호 님이 쓰신 글 :
: @문제원인
: VCL 자체의 GetFormImage 에 문제가 있는듯 합니다.
: Form의 Print함수도 내부적으로 GetFormImage를 이용하고 있어서 문제가 있는것이구요
:
: @상세분석1
: TComboBox는 화면에 보이는 부분이 두개의 window 입니다.
: 바깥으 Frame은 VCL의  TComboBox이지만 안에 글자부분은 win32-control인 "EDIT" 입니다.
: 이는 VCL의 TControl을 상속받은 control이 아니기 때문에 ComboBox의 안쪽 글자 부분이
: 제대로 Print가 되지 않는것 같습니다.
:
:
: @ 해결방안
:
:  방법1
:     ComboBox의 원인을 찾아 GetFormImage의 문제점을 해결하는 방법이 있겠구요
:
:  방법2
:    그냥 Form의 Client영역만 화면캡쳐하는 방법을 이용하여 캡쳐하는 방법 있을것입니다.
:    다음 링크에 두어가지 방법이 나와 있습니다.
:    http://stackoverflow.com/questions/3190777/how-do-i-copy-a-form-as-an-image-to-the-clipboard
:
:    2-1 :  GetDC(0) -> BitBlt
:    
:    2-2 : PrintWindow
:
:
: @ 비고
:
:     두방법이 모두 똑같지는 않습니다.
:    주의1.  GetFormImage는 Form이 화면(모니터,스크린)밖을 벗어나도 캡쳐가 됩니다만
:        2-1번 방법은 Form이 스크린 밖으로 나가면 밖으로 나간 부분이 캡쳐가 되지는 않습니다.
:
:    주의2. 또한 작업관리자 같은 다른 TopMost-Window가 Form 보다 앞에 떠 있는경우
:              TopMost-Window와 같이 캡쳐됩니다.
:
:    PrintWindow라는 API를 이용하는것이 좀더 좋은데요
:    이놈도 전혀 문제가 없는것으 아니구요
:
:
: 그럼..
:
:   
:
: 로더 님이 쓰신 글 :
: : 안녕하세요. 로더입니다.
: :
: : 제목 그대로 폼을 프린트 하려는데
: :
: : 콤보박스에 선택된 내용이 출력 안되는 문제가 발생 되었습니다.
: : (기타 다른 컨트롤들(메모, 에디트박스 등)의 내용은 잘 출력이 됩니다.)
: :
: : 방법은 2가지를 시도해 보았습니다.
: :
: : 1. 폼의 Priint() 사용 (프린터 선택 문제 발생.)
: :
: :                 form->PrintScale = poPrintToFit;
: :                 form->Print();
: :                 ShowMessage("인쇄 완료");
: :
: : 2. GetFormImage()  사용 (Q&A 게시판 참고)
: :
: :                 Graphics::TBitmap *FormImage = form->GetFormImage();
: :                 if(PrintDialog->Execute())
: :                 {
: :                         Printer()->BeginDoc();
: :                         Printer()->Canvas->Draw((FormImage->Width),
: :                                                 (FormImage->Height),
: :                                                 FormImage);
: :                         Printer()->EndDoc();
: :                 }
: :                 delete FormImage;
: :                 ShowMessage("인쇄 완료");

+ -

관련 글 리스트
65611 폼 프린트시 콤보박스 선택 내용 미출력 문제 로더 1334 2011/11/29
65616     Re:폼 프린트시 콤보박스 선택 내용 미출력 문제 장성호 1501 2011/11/30
65631         Re:Re:폼 프린트시 콤보박스 선택 내용 미출력 문제 __ 해결!! 로더 1366 2011/12/02
65632             Re:Re:Re:폼 프린트시 콤보박스 선택 내용 미출력 문제 __ 해결!! 장성호 1216 2011/12/02
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.