* All sizes in inches ooo = NEWOBJECT("AddPrinterForm", "AddPrinterForm.fxp") IF NOT ooo.AddForm("MyCustomForm1", 5,7, lcPrinterName) ? ooo.cErrorMessage ? ooo.cApiErrorMessage * Error ENDIF
*!* * Delete just created form *!* ooo = NEWOBJECT("AddPrinterForm", "AddPrinterForm.fxp") *!* IF NOT ooo.DeleteForm("MyCustomForm1", lcPrinterName) *!* ? ooo.cErrorMessage *!* ? ooo.cApiErrorMessage *!* * Error *!* ENDIF
* All sizes in cm ooo = NEWOBJECT("AddPrinterForm", "AddPrinterForm.fxp", "", "Metric") IF NOT ooo.AddForm("MyCustomForm2", 15,17, lcPrinterName) * Error ENDIF
*!* * Delete just created form *!* ooo = NEWOBJECT("AddPrinterForm", "AddPrinterForm.fxp") *!* IF NOT ooo.DeleteForm("MyCustomForm2", lcPrinterName) *!* ? ooo.cErrorMessage *!* ? ooo.cApiErrorMessage *!* * Error *!* ENDIF ****addprintorform Class * AddPrinterForm.prg DEFINE CLASS AddPrinterForm AS Custom
PROCEDURE DeleteForm(tcFormName, tcPrinterName) LOCAL lhPrinter, llOK
IF PCOUNT() > 1 This.cPrinterName = tcPrinterName ENDIF
This.ClearErrors() lhPrinter = 0 IF OpenPrinter(This.cPrinterName, @lhPrinter, 0) = 0 This.cErrorMessage = "Unable to get printer handle for " + This. cPrinterName + "." This.cApiErrorMessage = WinApiErrMsg(GetLastError()) RETURN .F. ENDIF
* Finally, call the API llOK = ( DeleteForm(lhPrinter, tcFormName) <> 0 ) IF NOT llOK This.cErrorMessage = "Unable to delete Form " + tcFormName This.cApiErrorMessage = STRTRAN(WinApiErrMsg(GetLastError()), "f ile", "form", -1, -1, 3) ENDIF = ClosePrinter(lhPrinter) RETURN llOK
HIDDEN PROCEDURE LoadApiDlls DECLARE Long HeapCreate IN WIN32API Long dwOptions, Long dwIniti alSize, Long dwMaxSize DECLARE Long HeapAlloc IN WIN32API Long hHeap, Long dwFlags, Lon g dwBytes DECLARE Long HeapFree IN WIN32API Long hHeap, Long dwFlags, Long lpMem DECLARE HeapDestroy IN WIN32API Long hHeap DECLARE Long GetLastError IN kernel32 ENDPROC
FUNCTION OpenPrinter(tcPrinterName, thPrinter, tcDefault) DECLARE Long OpenPrinter IN WinSpool.Drv ; String pPrinterName, Long @ phPrinter, String pDefault RETURN OpenPrinter(tcPrinterName, @thPrinter, tcDefault)
FUNCTION ClosePrinter (thPrinter) DECLARE Long ClosePrinter IN WinSpool.Drv Long hPrinter RETURN ClosePrinter(thPrinter)
FUNCTION AddForm(thPrinter, tnLevel, tcForm) DECLARE Long AddForm IN winspool.drv Long hPrinter, Long Level, String @pForm RETURN AddForm(thPrinter, tnLevel, tcForm)
FUNCTION DeleteForm(thPrinter, tcForm) DECLARE Long DeleteForm IN winspool.drv Long hPrinter, String pFormName RETURN DeleteForm(thPrinter, tcForm)