|
제가 아는한 도트방식의 프린터인경우 특정한 길이의 종이를 사용하실경우
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를 이용하면 될것도 같은데
: : : : : 어떻게 활용해야 할지 알 수가 없네요
: : : : :
: : : : : 많은 분들의 조언을 부탁드립니다.
: : : : : 끝까지 읽어주셔서 감사합니다
: : : : :
|