엄청나게 긴 라인을 인쇄할 때 라인이 문서의 끝에 오면 자동으로 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;