Q&A

  • 프린터출력문제...
안녕하세요, 이번에 델파이를 공부하게 되어 몇번 찾아 왔었는데, 이렇게 계시판에 무언가를 쓴다는 건 처음이군요, 것두 질문이라 넘 죄송하게 생각 되네요.

문제는 다름아니라, 디버거를 통해서 한줄한줄 따라가 보면 textout 문장이 모두 맞게 돌아가는데, 이상하게도 프린트 출력은 되지 않습니다.

왜 프린트 출력이 되지 않는 건지 이유와 해결방법을 알려 주셨으면 합니다.



아래는 문제가 된 부분의 소스입니다.

DATABASE IV 파일을 사용하며, Axx, Bxx 등은 개별 필드이며 그외의 변수들은 모두 longint형 입니다.



cnt := 1;

while not(prn_query.Eof) do begin

cnt_j := 1;

printer.BeginDoc;

setmapmode(printer.handle,MM_LOMETRIC);

y := 300;

with printer.canvas do begin

font.Height := 50;

textout(500,100,'[ * 보증수리 집계 * ]');

font.Height := 37;

y := y+80;

textout(800,y,'+---------+---------+--------+---------+--------+');

y := y+80;

textout(800,y,'| 담 당 | 주 임 | 부 장 | 부사장 | 사 장 |');

y := y+80;

textout(800,y,'+---------+---------+--------+---------+--------+');

y := y+80;

textout(800,y,'| | | | | |');

y := y+80;

textout(100,y,' 기계정비 '+ edit15.Text + ' <-> ' + edit16.text +' | | | | | |');

y := y+80;

textout( 80,y,'+--------------------------------------------------------------------------------------------------------------+');

y := y+80;

textout( 80,y,'| | R/O 번 호 | 수리청구 | 수리입금 | 부품청구 | 부품입금 | 차 액 |');

y := y+80;

textout( 80,y,'+--------------------------------------------------------------------------------------------------------------+');

end;

while (cnt_j < 24) and not(prn_query.eof) do begin

with prn_query do begin

susum := fieldbyname('B15').asinteger + fieldbyname('B25').asinteger + fieldbyname('B35').asinteger + fieldbyname('B45').asinteger;

busum := fieldbyname('A14').asinteger + fieldbyname('A24').asinteger + fieldbyname('A34').asinteger + fieldbyname('A44').asinteger

+ fieldbyname('A54').asinteger + fieldbyname('A64').asinteger + fieldbyname('A74').asinteger + fieldbyname('A84').asinteger;

end;

cha := prn_query.fieldbyname('suin').asinteger + prn_query.fieldbyname('buin').asinteger

- susum - busum;

temp_str := format('| %3d | %9s | %-9d | %-9d | %-9d | %-9d | %-9d |',[cnt,

prn_query.fieldbyname('code').asstring,susum,prn_query.fieldbyname('suin').asinteger,

busum,prn_query.fieldbyname('buin').asinteger, cha]);



y := y+80;

showmessage(temp_str);

printer.Canvas.TextOut(80,y, temp_str);

y:=y+80;

printer.canvas.textout( 80,y,'+--------------------------------------------------------------------------------------------------------------+');

cnt_j := cnt_j +1 ;

cnt := cnt +1;

prn_query.Next;

end;

if prn_query.Eof then begin

// 아래 항목들을 계산해야 함.

// tot_susum, tot_busum; tot_cha; tot_suin; tot_buin, t_cha

// : longint;



temp_str := format('| | 합 계 | %-9d | %-9d | %-9d | %-9d | %-9d |',[

tot_susum, tot_suin, tot_busum, tot_buin, tot_cha]);

with printer.canvas do begin

y:= y+80;

textout(80,y,temp_str);

y:= y+80;

textout(80,y,'+--------------------------------------------------------------------------------------------------------------+');

end;

end;

printer.EndDoc;

end;









그럼, 꼭 부탁드립니다.

좋은 시간 되세요.

0  COMMENTS