최보최 wrote:
> 안녕하세요!!
> 프린터설정화면을 만드는데 막막하군요!
> 프린터가 가지고 있는 용지정보와 용지함 정보를 읽을려고 하는데
> 영 되질않는군요 도와주세요!!
> 고수님들 그럼 부탁드림니다..
> 감사 꾸뻑~~~~~~
> 
// 아래 내용은 이곳 Q&A에 김영대님께서 답변하신 내용입니다...
// '용지설정' 하시고 검색해보세요....
// 좋은 하루 되세요...
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;