Razzak
Thanks for the excellent examples of how to use the CVAL new feature and
PRNSETUP in combination. That REALLY made it clear!
David Blocker
----- Original Message -----
From: "A. Razzak Memon" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Friday, October 05, 2001 12:05 AM
Subject: From The Edge: Enhancing and Automating PRNSETUP Options
>
> October 5, 2001
>
> ================================================================
> From the Edge: Enhancing and Automating PRNSETUP Options
> (A comprehensive look)
> Section: New CVAL Functions
> Chapter: Running R:BASE Your Way!
> Platform: R:BASE 2000 (ver 6.5++) for Windows
> Build: 1.843xRT03 and Higher
> ================================================================
>
> Many new CVAL functions were introduced with the release of
> R:BASE 2000 (ver 6.5++) for Windows on June 15, 2001.
>
> To add more value, a new (CVAL('WindowsPrinter')) function has
> been introduced in R:BASE 2000 (version 6.5++) for Windows,
> In-Line Patch-1, Build:1.843xRT03, to be released soon.
>
> Now, you can enhance and completely automate PRNSETUP options!
>
> First, let's gather all related PRNSETUP options along with
> any associated CVAL Functions and Enhanced CHOOSE parameters
> to automate PRNSETUP options.
>
> Commands:
> PRNSETUP
> Parameters: PRNSETUP 'Printer Name'
> PRNSETUP 'Paper Size'
> PRNSETUP 'Paper Source'
> PRNSETUP 'Orientation'
> PRNSETUP COPY n
>
> For details on each parameter above, please
> check PRNSETUP topic on http://www.RSyntax.com
>
> CHOOSE
> Parameters: #LIST
>
> CVAL Functions:
> (CVAL('Printers'))
> (CVAL('WindowsPrinter'))
> (CVAL('CurrentPrinter'))
>
>
> (CVAL('Printers'))
> Returns the list of all installed printers on local workstation
>
> (CVAL('WindowsPrinter'))
> Returns the name of windows default printer
>
> (CVAL('CurrentPrinter'))
> Returns the name of selected windows printer for current R:BASE
> session using PRNSETUP 'Printer Name' command. If no PRNSETUP
> 'Printer Name' command was issued, then, R:BASE for Windows
> will default to the windows default printer.
>
> Following examples will explain different ways to enhance and
> automate PRNSETUP options:
>
> Example 01:
>
> Among various types of installed printers on your local
> workstation, if you need to print two copies of legal size
> reports from the lower tray of your HP Laserjet 4 printer,
> here's what you need do at the R> prompt or in a command
> file:
>
> PRNSETUP 'HP Laserjet 4'
> PRNSETUP 'LEGAL'
> PRNSETUP 'LOWER'
> PRNSETUP COPY 2
>
> OUTP PRINTER
> PRINT ReportName WHERE ... ORDER BY ...
> OUTP SCREEN
>
> Example 02:
>
> In your customized application, if you would like to create
> a PDF version of any report, for example, using Adobe Acrobat
> PDFWriter printer driver (if installed), and then after
> creating the PDF file want to switch back to the windows
> default printer, here's what you would do:
>
> SET VAR vWinPrinter = (CVAL('WindowsPrinter'))
>
> PRNSETUP 'Acrobat PDFWriter'
>
> OUTP PRINTER
> PRINT ReportName WHERE ... ORDER BY ...
> OUTP SCREEN
>
> PRNSETUP .vWinPrinter
>
> Example 03:
>
> If you would like to give your users the option to choose
> from a list of all installed printers on local workstations,
> pick appropriate printer and then switch back to windows
> default printer, here's how:
>
> -- AutoPRN.RMD - Automating Printer Selections (10 Steps)
>
> -- 01. Set R:BASE 2000 for Windows Environment
> CLEAR ALL VAR
> SET CAPTION ' '
> SET AUTODROP OFF
> SET RBGSIZE CENTER CENTER 800 600
> CLS
> PAUSE 3 USING 'Please Wait ...' AT 16 30
>
> -- 02. Get Database QUOTE Setting
> SET VAR vQuoteName TEXT = QUOTE
> SET VAR vQuote = (CVAL(.vQuoteName))
>
> -- 03. Pre-Define All Required Variables
> SET VAR vWinDefaultPrinter TEXT = NULL
> SET VAR vPrinterList TEXT = NULL
> SET VAR vLines INTEGER = 1
> SET VAR vCurrPrinter TEXT = NULL
>
> -- 04. Find Windows Default Printer
> SET VAR vWinPrinter = (CVAL('WindowsPrinter'))
> SET VAR vWinPrinter = (.vQuote+.vWinPrinter+.vQuote)
>
> -- 05. Get List of All Windows Installed Printers
> SET VAR vPrinterList = (CVAL('Printers'))
>
> -- 06. Determine the number of lines to be displayed in CHOOSE window
> WHILE (SSUB(.vPrinterList, .vLines)) IS NOT NULL THEN
> SET VAR vLines = (.vLines+1)
> ENDWHILE
> IF vLines > 20 THEN
> SET VAR vLines = 20
> ELSE
> SET VAR vLines = (.vLines -1)
> ENDIF
>
> -- 07. Give user the option to select printer from the list
> CLS
> CHOOSE vCurrPrinter FROM #LIST .vPrinterList AT CENTER CENTER +
> CHKBOX 1 TITLE 'Select Printer' +
> CAPTION 'Currently Available Printers' +
> LINES .vLines FORMATTED
> IF vCurrPrinter IS NULL OR vCurrPrinter = '[Esc]' THEN
> PAUSE 2 USING 'No Printer Selected!'
> GOTO Done
> ENDIF
> SET VAR vCurrPrinter = (.vQuote+.vCurrPrinter+.vQuote)
>
> -- 08. Change Printer Accordingly
> PRNSETUP &vCurrPrinter
>
> -- 09. Send Output to the Selected Printer
> OUTP PRINTER
> PRINT ReportName WHERE ... ORDER BY ...
> OUTP SCREEN
>
> -- or
>
> SET VAR vRBGLines = (CVAL('LINES'))
> SET LINES 0
> OUTP PRINTER
> SELECT ColName1=10, ColName2=16, ColName3=20=S +
> FROM TableName WHERE ... ORDER BY ...
> OUTP SCREEN
> SET LINES .vRBGLines
>
> -- 10. Switch back to the Windows Default Printer
> PRNSETUP &vWinPrinter
>
> LABEL Done
> CLEAR ALL VAR
> QUIT TO MainMenu.RMD
> RETURN
>
>
> Example 04:
>
> In your application, if you would always like to display
> both default printer for R:BASE session as well as windows
> default printer, then, you can use the following options:
>
> SET VAR vCurrPrinter = (CVAL('CurrentPrinter'))
> SET VAR vWinPrinter = (CVAL('WindowsPrinter'))
>
> Once defined, you may display these variables as CAPTION or
> variable objects in R:BASE forms.
>
> Now just imagine the various possibilities of using the POWER
> and Flexibility of R:BASE 2000 (version 6.5++) for Windows.
>
> You're ONLY limited by your imagination!
>
> Stay tuned for more ....
>
> Very Best Regards,
>
> Razzak.
>
>
> ===================================-============================
> Official R:BASE List Server: mailto:[EMAIL PROTECTED]
> RBTI Events/Training: http://www.rbase2000.com/events
> R:DCC Members: http://www.rbase2000.com/rdcc
> ================================================================
> R:BASE, Oterro & R:Tango are registered trademarks of RBTI.
> ==================================-=============================
>