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

델파이 Q&A
Delphi Programming Q&A
[4614] [답변] J1025427/ 프린터제어에 대하여 좀더 자세히 부
찌께다시 [ ] 1296 읽음    1998-09-22 20:53
안녕하세요 어린 프로그래머 찌께다시입니다.

프린터 기종마다 정확하게 뿌려지는지는 확실히 검증해

보지 못했기때문에 그냥 예전에 비슷한 경험이 있어서

이렇게 올립니다... 참고 하세요...

TPrinter객체를 사용한다면...

현제 페이지의 높이와 폭(컬럼) 그리고 폰트의 크기에도 정확하게

신경을 써주어야 할 것같습니다..

1.글꼴의 크기를 기준으로 페이지당 출력되는 줄의 수를 계산합니다.

2.페이지당 줄의 수를 기준으로 하요 줄사이의 간격을 계산합니다.

자 프린트 버튼을 눌렀을 때의 헨들러를 간단히 보면 이런 구조가 되겠지요..



  //중략

if PrintDialog1.Execute then
begin
  //인쇄를 시작한다.
  Printer.BeginDoc;
  //인쇄될 페이지의 높이를 읽어 들인다.
  PHeight := Printer.PageHeight;
  //글꼴의 크기를 18로 설정한다.
  Printer.Canvas.Font.Size := 18;
  //글꼴의 종류는 굴림체로 한다.
  Printer.Canvas.Font.Name := '굴림체';
  //페이지당 인쇄되는 줄의 수를 계산하기 위하여
  //라인 간격으로 10만큼의 여백을 추가 한다.
  LinePerPage := PHeight div FontSize + 10
  //페이지당 출려되는 줄의 수를 기준으로 줄간격을 계산한다.
  LineSpace := PHeight div LinePerPage;
 

  //뭐 현재 페이지의 값을 읽어들이고 뭐 기타등등의 코딩 
  중략 ...


  While not eof(F) do  //물론 인쇄하고자 하는 파일을 위에서 열었겠지요..
  begin
    readln(F, TempStr); //텍스트 파일로부터 한줄을 읽어 들여
                        //TempStr변수에 저장한다.
    Printer.Canvas.TextOut(0,x,TempStr); //TempStr의 내용을 Printer객체로
    //다음 줄을 인쇄하기 위해 적절한 수의 픽셀만큼을 증가시킨다.
    x := x + LineSpace;
    //인쇄 되는 라인의 수를 센다.
    ctr := ctr + 1
    if ctr > LinePerPage - 1 then
    begin
      Printer.NewPage;
      x:= 0
      ctr:= 0
      PageNum := IntToStr(Printer.PageNumber);
      //중략
    end;
  end;
  //중략
  CloseFile(F);
  Printer.Enddoc;
  //중략  

end;

아 물론  위에서 필요한 변수들 은 선언이 당연히 되어야 하겠지요.

var
  F : TextFile;
  TempStr, PageNum : String;
  Ctr, x, PHeight, LineSpace, LinePerPage, ... : Integer;

뭐 대충 이런 식이 되지 않을 까 합니다..

저도 프린터마다 정확하게 같은 곳에 찍히는지는 솔찍히

테스트를 하지 못했지만...

인쇄될 페이지를 픽셀로 높이와 줄간격 폰트에 맞게 Printer객체를

셋트한다면 되지 않을 까하는데....

참고 하시고 정확하게 그렇게 된다면 저에게도 연락을 주세요...

그럼 존 코딩하세요....

                        어린 프로그래머     ---찌게다시-----


+ -

관련 글 리스트
4614 [답변] J1025427/ 프린터제어에 대하여 좀더 자세히 부 찌께다시 1296 1998/09/22
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.