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
[24837] Re:Re:[딥변] Printer()->PageHeight값을 변경하세요....
둘리 [dooly] 1042 읽음    2003-03-21 11:59
제가 아는한 도트방식의 프린터인경우 특정한 길이의 종이를 사용하실경우
port를 직접 제어 하셔야 됩니다.
일반적으로 윈도우즈 에서의 프린터 드라이브 역시 HDC와 같은 DC를 사용합니다.
이러한 DC형식은 2차원 평면을 기본으로 하는 좌표계이며
dot 방식의 line feed 형식을 사용하기가 힘듭니다.

그러므로 printer port를 직접 제어 하셔야 됩니다.
일반적으로 98계열은 포트를 직접 제어 할수 있는데요
NT계열은 이러한 포트를 직접 제어 할수 없습니다.

여기 콤포넌트 검색 부분에 포트 제어하는 것 이 몇개 올라와 있던데.
그런걸 한번 사용해 보심이 어떨지요..

프린터의 PageHeight 은 read only입니다.
그렇게 임의로 설정할 수 없습니다..

참고적으로 윈도우지 컴포넌트 help에 property 왼쪽에 파란색 삼각형은 read only를 뜻합니다




답답이 님이 쓰신 글 :
: 먼저 친절히 답변해주신것에 감사드립니다.
: 정성훈.해미 님께서 조언해 주신 대로 프린터되는 부분을 수정해보았습니다.
: 그런데 자꾸만 에러가 발생하네요

:     TPrinter *Prntr = Printer();
:     Prntr->PageHeight=395;  <-----여기서 에러발생
:
:  [C++ Error] wrkprn.cpp(540): E2247 'TPrinter::PageHeight' is not accessible
:
:     Prntr->BeginDoc();
:     if(Check==true) ReWriteText(Prntr->Canvas);
:     else WriteText(Prntr->Canvas);
:     check=2;
:     Prntr->EndDoc();
:
: 제가 기초가 많이 부족한 상태에서 작업을 하다보니
: 뭐가 잘못 되었는지 잘 모르겠습니다.
: 한 번더 조언 부탁드립니다.
:
: 정성훈.해미 님이 쓰신 글 :
: : 다음을 Printer()->BeginDoc(); 앞에 넣으세요.
: :
: : Printer()->PageHeight = 297/2; //높이를 원하는 만큼 변경하세요...
: :
: : 이렇게 하면 프로그램에서 변경하지 못합니다..
: : 변경할 수 있게 프린터 다이알로그를 사용하는건 어떠한지요..
: :
: :
: : 답변이 늦어소 죄송...
: :
: : 업무 때문에 확인 못했네요....
: :
: :
: :
: : 답답이 님이 쓰신 글 :
: : : 정성훈.해미 님의 답변 정말 감사드립니다.
: : : 제가 지금 외부에 나와 있어서 직접 코딩에 적용하지는 못 했습니다.
: : : 그리고 제가 죄송하지만 의문 사항이 있습니다.
: : :
: : : 아래 소스에 보면 인쇄할 좌표는 있는데 인쇄할 페이지의 사이즈에 대한 언급이 없는것
: : : 같아서 혹시 아시면 좀 더 자세한 답변 부탁드립니다
: : : 페이지가 프린터 될때 프린터 한 페이지가 80컬럼 연속용지 반사이즈 크기가 프린터의
: : : 한 페이지의 크기가 되게 하려고 합니다.
: : :
: : : 현재 문제가 되는것은 예를 들면 계산서 한장을 출력하면 80컬럼 연속용지 반사이즈만큼만
: : : 출력하고 프린터가 정지해야 되는데 A4한장 사이즈만큼 밀려 나오는 문제입니다.
: : :
: : : 조언 부탁드립니다.
: : :
: : : 정성훈.해미 님이 쓰신 글 :
: : : : 상단에 다음을 추가하시구염....
: : : : #include <Printers.hpp>
: : : :
: : : :
: : : : 출력할 이벤트 함수에는....
: : : :
: : : :     TBitMap *PrintImage1 = Form1->GetFormImage(); // 윗장에 출력할 폼
: : : :     TBitMap *PrintImage2 = Form2->GetFormImage(); // 아랫장에 출력할 폼
: : : :
: : : :     Printer()->Title = "세금계산서"; //인쇄관리자에 표시될 문서 이름을 넣습니다
: : : :     Printer()->BeginDoc(); // 인쇄 작업 시작
: : : :     Printer()->Canvas->Draw(20, 20,PrinteImage1); //이미지 인쇄
: : : :     Printer()->Canvas->Draw(20, 20 + Form1->Height,PrinteImage2); //이미지 인쇄
: : : :
: : : :     //Draw()함수 내용   
: : : :     //Draw(왼쪽 좌표,위쪽 좌표,인쇄할 이미지)
: : : :
: : : :     Printer()->EndDoc(); //인쇄 작업 종료
: : : :
: : : :     delete PrintImage1; // 임시 메모리 해제
: : : :     delete PrintImage2; // 임시 메모리 해제
: : : :
: : : : 이렇게 하면 아마 될겁니다....
: : : :
: : : :
: : : :
: : : : 답답이 님이 쓰신 글 :
: : : : : 답변이 없어서 다시 글을 올립니다.
: : : : : 급합니다.
: : : : : 제발 조금이라도 아시는 분이 계시다면 조언 부탁드립니다.
: : : : :
: : : : : 도트 프린터에서 출력을 하려고 합니다.
: : : : : 출력양식이 일반 80컬럼 연속용지 반 사이즈로 출력을 합니다.
: : : : : 예를들면 세금계산서 출력을 하는데 앞장은 공급자용 뒷장은 공급받는자용으로
: : : : : 두장이 붙어있는 상황입니다.
: : : : : 그래서 출력도 거기에 맞게 출력이 되어야 하는데
: : : : : 적당한 컨트롤 방법을 모르겠습니다.
: : : : :
: : : : : 그래서 한장 출력후 현재는 A4사이즈 만큼 종이가 밀려나옵니다.
: : : : : 현재 업무에 직접적으로 사용을 해야 하는데
: : : : : 이런 문제 때문에 적용을 못하고 있습니다.
: : : : :
: : : : : 특정한 양식 사이즈를 적용하여서 출력하는 방법을 알고싶습니다.
: : : : : 저는 출력 진행이 PaintBox에 해당 출력 사항을 그린후에 출력을 합니다.
: : : : :
: : : : : 저는 아직 실력이 모자라서 그런지 게시판에 비슷한 내용들을 봐도
: : : : : 무슨 말인지 잘 이해되지 않아서 이렇게 글을 올립니다.
: : : : :
: : : : : TPrinter의 PageHeigh를 이용하면 될것도 같은데
: : : : : 어떻게 활용해야 할지 알 수가 없네요
: : : : :
: : : : : 많은 분들의 조언을 부탁드립니다.
: : : : : 끝까지 읽어주셔서 감사합니다
: : : : :

+ -

관련 글 리스트
24818 [질문]엑셀 파일을 읽는 방법을 알고 싶습니다. 김삿갓 830 2003/03/20
24820     Re:[질문]엑셀 파일을 읽는 방법을 알고 싶습니다. 임선규 1147 2003/03/20
24819     Re:[질문]엑셀 파일을 읽는 방법을 알고 싶습니다. 조준회 889 2003/03/20
24815         Re:답변 감사합니다. 답답이 897 2003/03/20
24824             [딥변] Printer()->PageHeight값을 변경하세요.... 정성훈.해미 940 2003/03/20
24832                 Re:[딥변] Printer()->PageHeight값을 변경하세요.... 답답이 1295 2003/03/21
24837                     Re:Re:[딥변] Printer()->PageHeight값을 변경하세요.... 둘리 1042 2003/03/21
24839                         Re:Re:Re:[딥변] 답변감사합니다. 이성희 1011 2003/03/21
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.