Q&A

  • 4번째 묻습니다. 제발 조언을... 인쇄문제
답이 없어 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;

2  COMMENTS
  • Profile
    문성준 1999.09.30 02:27
    안녕하세요..구관중님..

    질문의 결론은 인쇄가 안된다는 걸 알겠는데..정확하게 어떤 상황인지는 잘 파악이 안되네요..

    코딩에는 잘못이 없는것 같다니까.......

    아래의 내용중에서 의심가는 부분은 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 부분의 위치를 바꾸든지..그 알고리즘을 다시 한번 생각해 보시는게 좋을듯 합니다..

    정확한 답변 드리지 못해 죄송합니다..너무 답답해 하고 계시는 거 같아서..

    문제 해결하시길 바랍니다..

    그럼 이만..

  • Profile
    구관중 1999.10.01 17:20
    먼저 감사의 말씀 드립니다. 문성준님!!



    free 를 준다고해서 없어지는건 아니고 이미 draw 명령으로 이미지를 그렸기 때문에 없어지진 않더군요. 중간의 쿼리절들을 빼고 이미지만 인쇄하면 된답니다.

    메모리가 모자라 그런건 아닌거 같구... 암튼 저도 찾는데로 곧 올리겠습니다.

    문성준님 다시 한 번 감사합니다.



    p.s. 고수님들이 제 질문을 잘안보는건 아마도 너무 우수운 문제라 그런가요 ?

    그런데 정말 속이 터진답니다. 왜이리 안되는지 ..



    문성준 wrote:

    > 안녕하세요..구관중님..

    > 질문의 결론은 인쇄가 안된다는 걸 알겠는데..정확하게 어떤 상황인지는 잘 파악이 안되네요..

    > 코딩에는 잘못이 없는것 같다니까.......

    > 아래의 내용중에서 의심가는 부분은 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 부분의 위치를 바꾸든지..그 알고리즘을 다시 한번 생각해 보시는게 좋을듯 합니다..

    > 정확한 답변 드리지 못해 죄송합니다..너무 답답해 하고 계시는 거 같아서..

    > 문제 해결하시길 바랍니다..

    > 그럼 이만..