* * SetPrinterDevMode.prg -- Modifies the printer's DevMode for Orientation, Paper Tray, Copies and Paper Size * Local lcRpt lcRpt=Sys(2015) =PushWorkArea() Select 0 Create Cursor Temp (Test C(10)) Select 0 Create Report (gcTmp+lcRpt+".frx") From Temp Use In Select("Temp") Use (gcTmp+lcRpt+".frx") Exclu Alias UPDevMod Set Printer to Name (goApp.oPrintParam.Printer) * * Write printer environment to cursor * Sys(1037,2) Replace Next 1 UPDevMod.Tag2 With ConfigureDevMode(goApp.oPrintParam,UPDevMod.Tag2) * * Write modified printer environment to printer * Sys(1037,3) Use In Select("UPDevMod") =PopWorkArea() myole.Print() * * I have tried opening a text file with "Modi Comm" and then printing the * thinking it should honour the settings I modified above but this does * not work. * * Return Function ConfigureDevMode LParameters toParam,tcDevMode Local lnPaperSize tcDevMode=Stuff(tcDevMode,DM_ORIENTATION_OFFSET,2,BinToC(Iif(toParam.Orientation="Portrait",1,2),"2sr")) tcDevMode=Stuff(tcDevMode,DM_COPIES_OFFSET,2,BinToC(toParam.Copies,"2sr")) * * Convert my Paper Size parameters to the ones used in the WinAPI * Do Case Case toParam.PaperSize=Transform(VPAPER_A4) lnPaperSize=DMPAPER_A4 Case toParam.PaperSize=Transform(VPAPER_LETTER) lnPaperSize=DMPAPER_LETTER Case toParam.PaperSize=Transform(VPAPER_LEGAL) lnPaperSize=DMPAPER_LEGAL Case toParam.PaperSize=Transform(VPAPER_CSHEET) lnPaperSize=DMPAPER_CSHEET Case toParam.PaperSize=Transform(VPAPER_DSHEET) lnPaperSize=DMPAPER_DSHEET Case toParam.PaperSize=Transform(VPAPER_ESHEET) lnPaperSize=DMPAPER_ESHEET Case toParam.PaperSize=Transform(VPAPER_LETTERSMALL) lnPaperSize=DMPAPER_LETTERSMALL Case toParam.PaperSize=Transform(VPAPER_TABLOID) lnPaperSize=DMPAPER_TABLOID Case toParam.PaperSize=Transform(VPAPER_LEDGER) lnPaperSize=DMPAPER_LEDGER Case toParam.PaperSize=Transform(VPAPER_STATEMENT) lnPaperSize=DMPAPER_STATEMENT Case toParam.PaperSize=Transform(VPAPER_EXECUTIVE) lnPaperSize=DMPAPER_EXECUTIVE Case toParam.PaperSize=Transform(VPAPER_A3) lnPaperSize=DMPAPER_A3 Case toParam.PaperSize=Transform(VPAPER_A4SMALL) lnPaperSize=DMPAPER_A4SMALL Case toParam.PaperSize=Transform(VPAPER_A5) lnPaperSize=DMPAPER_A5 Case toParam.PaperSize=Transform(VPAPER_B4) lnPaperSize=DMPAPER_B4 Case toParam.PaperSize=Transform(VPAPER_B5) lnPaperSize=DMPAPER_B5 Case toParam.PaperSize=Transform(VPAPER_FOLIO) lnPaperSize=DMPAPER_FOLIO Case toParam.PaperSize=Transform(VPAPER_QUARTO) lnPaperSize=DMPAPER_QUARTO Case toParam.PaperSize=Transform(VPAPER_10X14) lnPaperSize=DMPAPER_10X14 Case toParam.PaperSize=Transform(VPAPER_11X17) lnPaperSize=DMPAPER_11X17 Case toParam.PaperSize=Transform(VPAPER_NOTE) lnPaperSize=DMPAPER_NOTE Case toParam.PaperSize=Transform(VPAPER_ENV_9) lnPaperSize=DMPAPER_ENV_9 Case toParam.PaperSize=Transform(VPAPER_ENV_10) lnPaperSize=DMPAPER_ENV_10 Case toParam.PaperSize=Transform(VPAPER_ENV_11) lnPaperSize=DMPAPER_ENV_11 Case toParam.PaperSize=Transform(VPAPER_ENV_12) lnPaperSize=DMPAPER_ENV_12 Case toParam.PaperSize=Transform(VPAPER_ENV_14) lnPaperSize=DMPAPER_ENV_14 Case toParam.PaperSize=Transform(VPAPER_ENV_DL) lnPaperSize=DMPAPER_ENV_DL Case toParam.PaperSize=Transform(VPAPER_ENV_C5) lnPaperSize=DMPAPER_ENV_C5 Case toParam.PaperSize=Transform(VPAPER_ENV_C3) lnPaperSize=DMPAPER_ENV_C3 Case toParam.PaperSize=Transform(VPAPER_ENV_C4) lnPaperSize=DMPAPER_ENV_C4 Case toParam.PaperSize=Transform(VPAPER_ENV_C6) lnPaperSize=DMPAPER_ENV_C6 Case toParam.PaperSize=Transform(VPAPER_ENV_C65) lnPaperSize=DMPAPER_ENV_C65 Case toParam.PaperSize=Transform(VPAPER_ENV_B4) lnPaperSize=DMPAPER_ENV_B4 Case toParam.PaperSize=Transform(VPAPER_ENV_B5) lnPaperSize=DMPAPER_ENV_B5 Case toParam.PaperSize=Transform(VPAPER_ENV_B6) lnPaperSize=DMPAPER_ENV_B6 Case toParam.PaperSize=Transform(VPAPER_ENV_ITALY) lnPaperSize=DMPAPER_ENV_ITALY Case toParam.PaperSize=Transform(VPAPER_ENV_MONARCH) lnPaperSize=DMPAPER_ENV_MONARCH Case toParam.PaperSize=Transform(VPAPER_ENV_PERSONAL) lnPaperSize=DMPAPER_ENV_PERSONAL Case toParam.PaperSize=Transform(VPAPER_FANFOLD_US) lnPaperSize=DMPAPER_FANFOLD_FANFOLD_US Case toParam.PaperSize=Transform(VPAPER_FANFOLD_STD_GERMAN) lnPaperSize=DMPAPER_FANFOLD_STD_GERMAN Case toParam.PaperSize=Transform(VPAPER_FANFOLD_LGL_GERMAN) lnPaperSize=DMPAPER_FANFOLD_LGL_GERMAN EndCase tcDevMode=Stuff(tcDevMode,DM_PAPERSIZE_OFFSET,2,BinToC(lnPaperSize,"2sr")) If toParam.Tray<>"-1" tcDevMode=Stuff(tcDevMode,DM_DEFAULTSOURCE_OFFSET,2,BinToC(Val(toParam.Tray),"2sr")) EndIf Return tcDevMode EndFunc