안녕하세요. 김경수입니다.
인쇄에 대해서 물어볼려구요. 아래와 같이 인쇄를 하면 글자의 크기가 제대로 나옵니다.
근데 다시한번 출력하면 무지하게 작은 글자가 출력되는데
제가 뭐 설정안해논거 있나해서요.낼까지 해야되는데 고수님들의 조언 부탁드립니다.
건강하세요
//인쇄 버튼 클릭시
if MessageDlg(ed_1.text+' 영업소의 거래명세서를 인쇄하시겠습니까?',
mtinformation, [mbYes, mbNo], 0) = mrYes then
printer.Canvas.font.Height := 18;
printer.BeginDoc;
y := 200;
try
for i:=1 to sg_1.rowcount-1 do
if i<9 then
begin
begin
printer.Canvas.TextOut(150,y,sg_1.cells[0,i]); //품명
printer.canvas.textout(650,y,'box'); //박스단위
printer.canvas.textout(730,y,sg_1.cells[1,i]); // 박스
printer.canvas.textout(800,y,sg_1.cells[2,i]); //수량
printer.canvas.textout(850,y,sg_1.cells[3,i]); //낱개수량
printer.canvas.textout(1050,y,sg_1.cells[4,i]); //공급가단가
printer.canvas.textout(1200,y,sg_1.cells[5,i]); //공급가금액
y := y+60;
end;
if sg_1.rowcount-1<9 then
begin
printer.canvas.textout(1200,680,ce_1.text);
printer.canvas.textout(1200,740,ce_2.text);
printer.canvas.textout(1200,800,ce_3.text);
end;
end
else
finally
printer.enddoc;
b_next.Click; //나머지 항목의 인쇄
---끝나기
화면이 72 DPI일 경우 Font.Height 의 공식은 아래와 같습니다.
Font.Height = -Font.Size * Font.PixelsPerInch / 72
즉, Font의 Height가 양수이면 Size가 음수, Height가 음수이면 Size가 양수가 되죠. 즉, 아래의 Font.Height := 18은 잘못된 것입니다.
가능하면 Font.Size를 가지고 하는것이 직관적입니다.
프린터의 해상도를 구하는 방법은 이곳 Q&A를 검색하시면 나옵니다.
그것을 가지고 위의 식으로 계산해서 해보세요.
김경수 wrote:
> 안녕하세요. 김경수입니다.
> 인쇄에 대해서 물어볼려구요. 아래와 같이 인쇄를 하면 글자의 크기가 제대로 나옵니다.
> 근데 다시한번 출력하면 무지하게 작은 글자가 출력되는데
> 제가 뭐 설정안해논거 있나해서요.낼까지 해야되는데 고수님들의 조언 부탁드립니다.
> 건강하세요
>
>
> //인쇄 버튼 클릭시
>
> if MessageDlg(ed_1.text+' 영업소의 거래명세서를 인쇄하시겠습니까?',
> mtinformation, [mbYes, mbNo], 0) = mrYes then
> printer.Canvas.font.Height := 18;
> printer.BeginDoc;
> y := 200;
> try
> for i:=1 to sg_1.rowcount-1 do
> if i<9 then
> begin
> begin
> printer.Canvas.TextOut(150,y,sg_1.cells[0,i]); //품명
> printer.canvas.textout(650,y,'box'); //박스단위
> printer.canvas.textout(730,y,sg_1.cells[1,i]); // 박스
> printer.canvas.textout(800,y,sg_1.cells[2,i]); //수량
> printer.canvas.textout(850,y,sg_1.cells[3,i]); //낱개수량
> printer.canvas.textout(1050,y,sg_1.cells[4,i]); //공급가단가
> printer.canvas.textout(1200,y,sg_1.cells[5,i]); //공급가금액
> y := y+60;
> end;
> if sg_1.rowcount-1<9 then
> begin
> printer.canvas.textout(1200,680,ce_1.text);
> printer.canvas.textout(1200,740,ce_2.text);
> printer.canvas.textout(1200,800,ce_3.text);
> end;
> end
> else
> finally
> printer.enddoc;
> b_next.Click; //나머지 항목의 인쇄
>
> ---끝나기
>
>