답이 없어 3번째 올립니다.
----------------------------
안녕하세요...
다음 같은 사항이 있어 자문을 구합니다.(재질문이죠.. 답이 없어서리)
비트맵 이미지를 2개를 동적 생성후 인쇄하려고 하는데
그림 파일만 인쇄가 안되는군요.
문제가 몬지 모르겠어요 ..@#@$#%?? 도와주시길...
밑은 제가 이미지를 하려고 한 소스입니다.
이미지만 인쇄는 잘됩니다.
그런데 그사이에 몇 스텝 추가 시키면
(오라클 테이블 쿼리결과및 라인 드로잉) 그림 인쇄는 안됩니다.
무엇이 문제일까요 ? 그림만 따로 인쇄하면 인쇄가 나오는거 보면
프린터 해상도 문제는 아니도 아니고, 명령문이 틀린것도 아닌것 같은데..
메모리가 문제이면 무엇을 조정해야 하는지요 ?
원래 프로그램은 박스도 그리고 기타 자질구래한 데이타를 넣는데
그 프로그램은 이미지 두개가 모두 인쇄가 안됩니다. (-_-;)
생성된 이미지는 draw 명령 실행후 소멸 되고 인쇄는 안됩니다.
( 이미지 로딩은 정상적으로 되구요 : 화면에 나타났다 사라짐...)
{ ...............................................}
{ ....................소스.......................}
{ ...............................................}
procedure TForm1.BitBtn1Click(Sender: TObject);
var
i:integer;
temp_lot, sign:string;
Hanimg, SignImg : TImage;
{ Tbitimg 로 정의 해도 인쇄가 안됨.
물론 picture 메쏘드 부분은 뺏습니다. }
begin
signImg := TImage.Create(form1);
with SignImg do begin
Parent := form1;
Top := 10;
Left := 10;
AutoSize := True;
end;
HanImg := TImage.Create(form1);
with HanImg do begin
Parent := form1;
Top := 50 ;
Left := 50;
AutoSize := True;
Picture.LoadFromFile('로고.bmp');
end;
.
{ 쿼리 및 폼의 라인 드로잉 }
.
.
.ㅇ라ㅏㅏkk
// 서명 파일을 부르기 위한 변수 sign
sign := '이미지1.bmp';
SignImg.Picture.LoadFromFile(Sign);
end;
printer.begindoc;
with printer.canvas do begin
try
draw(23*80-20,38*80+10,SignImg.picture.graphic);
draw(21*80,5*80,HanImg.picture.graphic);
finally
SignImg.free;
Hanimg.free;
end;
.
.
.
.
textout(2*80,40*80,'이미지 인쇄 연습 ');
printer.enddoc;
end;
end;
질문의 결론은 인쇄가 안된다는 걸 알겠는데..정확하게 어떤 상황인지는 잘 파악이 안되네요..
코딩에는 잘못이 없는것 같다니까.......
아래의 내용중에서 의심가는 부분은 try ~ finally.. 입니다.
구관중 wrote:
>
>
> printer.begindoc; ----
> with printer.canvas do begin ^
> try ^
> draw(23*80-20,38*80+10,SignImg.picture.graphic); @@ 이 사이 부분.... @@
> draw(21*80,5*80,HanImg.picture.graphic); ^
> finally ^
> SignImg.free; ^
> Hanimg.free; ^
> end; ----
> .
> .
> .
> .
> textout(2*80,40*80,'이미지 인쇄 연습 ');
> printer.enddoc;
> end;
>
> end;
위의 코딩에서 이미지 동적생성후 메모리에서 해제하기 위한 free를 해주는 것은 당연한 것인데..
그림이 한번 나타났다 사라지죠?
그리고 프린터가 안된다는 건 이미 이미지를 프리(메모리해제)한 상태에서 프린트명령을 만나니까 그런 현상이 일어나는 것 같네요..
try ~ finally 부분의 위치를 바꾸든지..그 알고리즘을 다시 한번 생각해 보시는게 좋을듯 합니다..
정확한 답변 드리지 못해 죄송합니다..너무 답답해 하고 계시는 거 같아서..
문제 해결하시길 바랍니다..
그럼 이만..