Q&A

  • 퀵리포트에서 사용자정의크기를 A4로 축소 출력하는 방법좀
아주큰 사용자정의 리포트를 축소해서 A4로 찍을수 없을까요.....

프린터는 축소가 지원되는 레이져 프린터를 사용합니다.

1  COMMENTS
  • Profile
    조규춘 2000.04.05 02:51
    김현중 wrote:

    > 아주큰 사용자정의 리포트를 축소해서 A4로 찍을수 없을까요.....

    > 프린터는 축소가 지원되는 레이져 프린터를 사용합니다.



    안녕하셔요! 조규춘이라고 합지요!

    그런디 뒤지다 보니 이런 내용이 있더라구요! 물론 테스트는 안해봤지만도

    된다면 좋구 실패하면 제가 내용을 잘못 찾은거구요!

    그럼 이만 줄이겠습니다. 행복하셔요

    procedure SetDefaultPrinter(ADevice:PChar);

    var

    TamanoDevice:longint;

    Caracteristicas:TdeviceMode;

    DevMode:PDeviceMode;

    Devicemode:THandle;

    Impresora:THandle;

    // Nombre : string;

    begin

    // Nombre := '삼보 Stylus COLOR 600H';

    // Openprinter(pchar(Nombre),Impresora,nil);

    openprinter(ADevice,impresora,nil);

    TamanoDevice:=DocumentPropertics(0,impresora,Adevice, Carateristicas, Carateristicas, 0);

    Devicemode := GlobalAlloc(GHND, TamanoDevice);



    if Devicemode <> 0 then

    begin

    Devmode := Globallock(Devicemode);

    if DocumentProperties(0, impresora, Adevice, devmode^, devmode^, DM_OUT_BUFFER) <0 then

    showmessage('Error 1');



    Devmode^.dmpapersize := 0;

    Devmode^.dmpaperlength := 500;

    Devmode^.dmpaperwidth := 500;

    Devmode^.dmfields := DM_PAPERSIZE or DM_PAPERLENGTH or DM_PAPERWIDTH;

    Devmode^.dmpapersize := DMPAPER_A4;

    Devmode^.dmFields := DM_PAPERSIZE;



    if Documentproperties(0, impresora, Adevice, Devmode^, DEvmode^, DM_INBUFFER or DM_OUT_BUFFER or DM_UPDATE) < 0 then

    showmessage('Error 2');



    Globalunlock(DeviceMode);

    Globalfree(DeviceMode);

    DeviceMode := 0;

    end

    else

    showmessage('No se reservo memoria');

    Closeprinter(impresora);



    end;





    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;

    begin

    Printer.Printerindex := printer.printerindex;

    printer.Getprinter(DEvice, Driver, port, hdmode);

    // device에 '삼보 Stylus COLOR 600H'라고 이름을 직접 적어주어도 된답니다.

    setdefaultprinter(device);

    end;