Q&A

  • 질문)프린터유무확인이맞나좀 봐주세요 ㅠㅠ
직접 프린트를 제어해서 화면의 이미지를 찍어냅니다.

그런데......

설정된 프린트가 없을때 에러처리를 하려고 하는데.....이렇게해도별반..

여기저기서 찾아서 해봤는데..좀안되네요

고수님들 보시고 틀린곳좀 지적해주십시오.







procedure TfScreenFrame.pPrint_Image;

var

lImage_Rect : TRect;

lPrinterDevice : Array[0..255]of Char;

lPrinterDriver : Array[0..255]of Char;

lPrinterPort : Array[0..255]of Char;

lPrinterHandle : THandle;

begin

lImage_Rect.Left := 200;

lImage_Rect.Top := 200;

lImage_Rect.Right := Printer.PageWidth-200;

lImage_Rect.Bottom := Printer.PageHeight-200;



Printer.GetPrinter

(lPrinterDevice,lPrinterDriver,lPrinterPort,lPrinterHandle);



//GetPrinter하면 현재의 프린터의 상태가 나오는거 아닌가요?

//그래서 아래같이 프린터의 핸들이 안나오면

//else로 빠져나가게 해봤는데 그래도 프린터가 없다고 안나오네요..



if lPrinterHandle <> 0 then begin

with Printer do begin

BeginDoc;

Canvas.Font.Charset := HANGEUL_CHARSET;

Canvas.Font.Name := '굴림체';

Canvas.Font.Color := clBlack;

Canvas.Font.Size := 10;

Canvas.Font.Style := [];

Canvas.TextOut(100,100,ps_DvrIDChannel);

Canvas.StretchDraw(lImage_Rect,img_Big.Picture.Graphic);

EndDoc;

end;

end else Exit;

end;



1  COMMENTS
  • Profile
    초보 2001.09.27 14:14
    aparadin wrote:

    > 직접 프린트를 제어해서 화면의 이미지를 찍어냅니다.

    > 그런데......

    > 설정된 프린트가 없을때 에러처리를 하려고 하는데.....이렇게해도별반..

    > 여기저기서 찾아서 해봤는데..좀안되네요

    > 고수님들 보시고 틀린곳좀 지적해주십시오.

    >

    >

    >

    > procedure TfScreenFrame.pPrint_Image;

    > var

    > lImage_Rect : TRect;

    > lPrinterDevice : Array[0..255]of Char;

    > lPrinterDriver : Array[0..255]of Char;

    > lPrinterPort : Array[0..255]of Char;

    > lPrinterHandle : THandle;

    > begin

    > lImage_Rect.Left := 200;

    > lImage_Rect.Top := 200;

    > lImage_Rect.Right := Printer.PageWidth-200;

    > lImage_Rect.Bottom := Printer.PageHeight-200;

    >

    > Printer.GetPrinter

    > (lPrinterDevice,lPrinterDriver,lPrinterPort,lPrinterHandle);

    >

    > //GetPrinter하면 현재의 프린터의 상태가 나오는거 아닌가요?

    > //그래서 아래같이 프린터의 핸들이 안나오면

    > //else로 빠져나가게 해봤는데 그래도 프린터가 없다고 안나오네요..

    >

    > if lPrinterHandle <> 0 then begin

    > with Printer do begin

    > BeginDoc;

    > Canvas.Font.Charset := HANGEUL_CHARSET;

    > Canvas.Font.Name := '굴림체';

    > Canvas.Font.Color := clBlack;

    > Canvas.Font.Size := 10;

    > Canvas.Font.Style := [];

    > Canvas.TextOut(100,100,ps_DvrIDChannel);

    > Canvas.StretchDraw(lImage_Rect,img_Big.Picture.Graphic);

    > EndDoc;

    > end;

    > end else Exit;

    > end;

    >



    전 이렇게 하니깐 잘 되던데...

    procedure TForm1.FormCreate(Sender: TObject);

    var

    Device : array[0..255] of char;

    Driver : array[0..255] of char;

    Port : array[0..255] of char;

    hDMode : THandle;

    begin

    try

    Printer.GetPrinter(Device, Driver, Port, hDMode);

    if hDMode <> 0 then Label1.Caption := '프린트있음'

    else Label1.Caption := '프린트없음';

    except



    end;

    end;



    try... except...end 가 추가된것말고는 큰차이가 없는데... 잘 작동되던데요...