Hi
I am using an ActiveX control to print RTF files. Since this will be used in an automated environment I need to be able to configure the printer settings without user intervention. So after reading articles about the WinAPI and articles by other VFP programmers such as Barbara Peisch I began testing the following code. The print parameters are contained in object (oPrintParam) which is attached to my main application object (goApp). So I wrote a program to convert the parameters into a Printer DevMode Structure which I then write to the printer using Sys(1037).
However it appears to have no effect on the printer settings and the document is not printed with the correct orientation or copies etc.
I have not been able to see what I have done wrong. Can anyone tell me what might be wrong with this code?
Thanks,
Simon
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)
Sys(1037,2)
Replace Next 1 UPDevMod.Tag2 With ConfigureDevMode(goApp.oPrintParam,UPDevMod.Tag2)
Sys(1037,3)
Use In Select("UPDevMod")
=PopWorkArea()
myole.Print()
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"))
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
Simon White
dCipher Computing