Q&A

  • TPrinter를 이용한 출력에 관한 질문
엄청나게 긴 라인을 인쇄할 때 라인이 문서의 끝에 오면 자동으로 Word-Wrap되어서 인쇄되는 기능을 구현하려고 합니다.
좀 도와주십시오. 시중의 책에 소개된대로 해봤는데도 안 되네요...
소스를 올립니다...

with Printer.Canvas do begin
      x := 20;
      y := 20;
      iWidth := Printer.PageWidth + GetDeviceCaps(Printer.Handle, PHYSICALOFFSETX);
      iHeight := Printer.PageHeight;

      //TextOut(x, y, memo.Lines[0]);

      for i:=0 to memo.Lines.Count - 1 do begin
         sPrnText := memo.Lines[i];
         iTextWidth := Canvas.TextWidth(sPrnText);
         if iTextWidth > iWidth then begin
            iCharWidth := iTextWidth div length(sPrnText);
            iCharCount := Trunc(iWidth div iCharWidth);
            TextOut(x, y, copy(sPrnText, 1, iCharCount - 1));
            y := y + TextHeight('한') + 10;
            TextOut(x, y, copy(sPrnText, iCharCount + 1, length(sPrnText) - iCharCount - 1));
         end
         else begin
            y := y + TextHeight('한') + 10;
            TextOut(x, y, memo.Lines[i]);
         end;
         if y > iHeight then begin
            y := 20;
            Printer.NewPage();
         end;
      end;
0  COMMENTS