직접 프린트를 제어해서 화면의 이미지를 찍어냅니다.
그런데......
설정된 프린트가 없을때 에러처리를 하려고 하는데.....이렇게해도별반..
여기저기서 찾아서 해봤는데..좀안되네요
고수님들 보시고 틀린곳좀 지적해주십시오.
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 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 가 추가된것말고는 큰차이가 없는데... 잘 작동되던데요...