제목이 어려워졌는데요~
다름아니라, 델파이로 프로그램시에 프린터에 있는 다양한 용지함을 지정해서 출력이
가능한가요??
제가 사용하길 원하는 프린터는 용지함이 총 5개가 있습니다.
1번부터 5번까지 있구요..
사용하는 용지함은 2번부터 5번까지의 4개입니다.
프로그램에서 한번 인쇄를 돌릴때 총 4페이지의 인쇄가 되는데,
2번 용지함에서 한장
3번 용지함에서 한장
4번 용지함에서 한장
5번 용지함에서 한장
이런식으로 출력을 해야 합니다. 양식폼이 서로 달라서요.. 용지크기는 모두 A4입니다.
이런 방식의 처리가 델파이에서 가능할지요?
고수님들의 도움을 부탁드립니다.
검색해보니 김영대님의 글이 있네요...
건강하시구요,,, 즐거운 하루 되세요...
.....................................
아래는 김영대님께서 이곳에서 답변하신 글입니다...
procedure TForm1.Button1Click(Sender: TObject);
var
Device : array[0..255] of char;
Driver : array[0..255] of char;
Port : array[0..255] of char;
hDMode : THandle;
PDMode : PDEVMODE;
begin
Printer.PrinterIndex := Printer.PrinterIndex;
Printer.GetPrinter(Device, Driver, Port, hDMode);
if hDMode <> 0 then
begin
pDMode := GlobalLock(hDMode);
if pDMode <> nil then
begin
{legal 용지로 바꾸는 예}
pDMode^.dmFields := pDMode^.dmFields or dm_PaperSize;
pDMode^.dmPaperSize := DMPAPER_LEGAL; // Windows.pas에서 DMPAPER_ 로 시작하는 상수값을 찾아보세요
(*
{사용자 정의 용지로 바꾸는 예}
pDMode^.dmOrientation := DMORIENT_PORTRAIT;
pDMode^.dmFields := pDMode^.dmFields or
DM_ORIENTATION or
DM_PAPERSIZE or
DM_PAPERWIDTH or
DM_PAPERLENGTH;
pDMode^.dmPaperSize := DMPAPER_USER;
pDMode^.dmPaperWidth := 500 {단위는 mm}
pDMode^.dmPaperLength := 300 {단위는 mm}
{용지 공급을 바꾸는 예}
pDMode^.dmFields := pDMode^.dmFields or DMBIN_MANUAL;
pDMode^.dmDefaultSource := DMBIN_MANUAL;
*)
GlobalUnlock(hDMode);
end;
end;
Printer.PrinterIndex := Printer.PrinterIndex;
Printer.BeginDoc;
Printer.Canvas.TextOut(100,100, 'Test 1');
Printer.EndDoc;
end;