Q&A

  • 델파이 프로그래밍시 인쇄부분에서 용지 급지함선택이 가능한가요?
제목이 어려워졌는데요~



다름아니라, 델파이로 프로그램시에 프린터에 있는 다양한 용지함을 지정해서 출력이



가능한가요??



제가 사용하길 원하는 프린터는 용지함이 총 5개가 있습니다.



1번부터 5번까지 있구요..



사용하는 용지함은 2번부터 5번까지의 4개입니다.



프로그램에서 한번 인쇄를 돌릴때 총 4페이지의 인쇄가 되는데,



2번 용지함에서 한장

3번 용지함에서 한장

4번 용지함에서 한장

5번 용지함에서 한장



이런식으로 출력을 해야 합니다. 양식폼이 서로 달라서요.. 용지크기는 모두 A4입니다.



이런 방식의 처리가 델파이에서 가능할지요?



고수님들의 도움을 부탁드립니다.

3  COMMENTS
  • Profile
    김상면 2001.04.26 00:50
    자세한 것은 모르겠구요...



    검색해보니 김영대님의 글이 있네요...



    건강하시구요,,, 즐거운 하루 되세요...



    .....................................



    아래는 김영대님께서 이곳에서 답변하신 글입니다...



    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;



  • Profile
    장명호 2001.04.26 03:23
    죄송합니다만 제가 델파이에 대해선 초보라서요..

    아마도 Printer객체를 사용하는 것으로 보이는데요..

    이 Printer객체의 속성과 메쏘드에 대해 좀더 알 수 있는 것이

    없을까요? 제가 가지고 있는 책은 초보용이라서인지 이것에 대한 내용이

    전혀없군요.

    아래 소스에서 용지공급을 바꿀때 어떻게 넣어주어야 2번째 공급지로 바꿀 수 있는지

    소스로 보면 잘 모르겠군요. (상수값을 이해 못해서리..)

    그리고 델파이홈에서 검색하여 내용을 보려고 하니 회원등록하라고 해서 하니까 마지막에

    계속 내부오류가 나더군요. 해서, 델파이홈에서도 해당 내용을 보지 못했어요.

    초보에게 지도 좀 부탁드립니다.

    김상면 wrote:

    > 자세한 것은 모르겠구요...

    >

    > 검색해보니 김영대님의 글이 있네요...

    >

    > 건강하시구요,,, 즐거운 하루 되세요...

    >

    > .....................................

    >

    > 아래는 김영대님께서 이곳에서 답변하신 글입니다...

    >

    > 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;

    >

  • Profile
    서철기 2001.04.26 06:49
    quickrep.printersettings.outputbin

    여기에 보면 auto, first,cassete등..옵션이 있습니다.



    이걸루 해결하시면 될 것 같네요..