Version 0.9.003 (released September 10th, 2017)

This release is primarily about smoothing the path for new users that are trying Panorama for the first time.

- Implemented a new Panorama Video Training wizard (in the Help menu). This wizard brings all of the available Panorama training videos into one spot, including free and on-demand. There are 15 new Quick Start videos, 4 new videos about transitioning from Panorama 6 to X, a video about Panorama X pricing, and one introducing the Panorama X Intensive Training course. More videos will be released in the future.

  When a video is selected, the lower left hand corner of the window displays a list of help topics related to that video. You can double click any item in this list to open that topic in a new Help window (or single click on the link icon, as shown below).

  The size of of Panorama Video Training window is adjustable with a pop-up menu – Regular, Large or Extra Large. It will remember the size you set it to between uses. The first time it opens, it will be Extra Large. The sizes adjust to the size of the monitor available. See Panorama Video Training wizard to learn more.

- Made minor UI changes to the Panorama Database Exchange wizard. More importantly, fixed and documented the process for uploading example files to the exchange (see Uploading to the Panorama Database Exchange. At the time this is being written, there are 15 example files in the exchange, with more coming from both ProVUE and Panorama customers.

  A particular shoutout to Gary Yonaites for being the first Panorama user to upload databases to the exchange.

- Added new let statements, which both create a variable and assign a value to it. There are five variations: Let, LetFileGlobal, LetPermanent, LetWindowGlobal and LetGlobal. For example, the statement

  `let n=1`

  Is identical to these two statements:

  `local n`
  `n=1`

  Here at ProVUE, we expect the let statement (and its variations) to almost completely eliminate the use of local, fileglobal, etc.

- Added a preference to set the default mode of new Text Display objects. The default mode is now Literal Text (it was Formula), but you can change the default in the Panorama preferences panel.

  This is a major change in the default behavior of new Text Display objects. We think this will be much simpler for beginner and intermediate users, but advanced users may wish to switch the preference back to Formula mode. If you have any programming code that creates Text Display objects with the newformobject statement, make sure that the code specifies the mode, since you can no longer rely on the default mode being Formula.

- Holding down the Shift key when opening the Find/Select Dialog now causes to Panorama to re-open the previous search, even if the preferences are set to reset the search every time. This makes it easy to repeat the previous search, perhaps with some modifications.

  The Shift key has the same effect when opening the Summarize & Analyze Dialog.

- Now when editing the name of a favorite (sort, search, etc.), the name updates immediately as you type. So you don’t have to remember to press the Return key to update the name before you press the Done button. This makes the process of creating a favorite much less error prone.

- Panorama now honors the Page Setup scaling value, so you can print at 50% or 125% or whatever you want. This works both when you print or preview from the File menu and when using the printtopdf statement.

- There are new info functions that return the current page setup settings for the current database: info(“pagesetupscale”), info(“pagesetuporientation”), info(“pagesetuppaperheight”) and info(“pagesetuppaperwidth”).

- Fixed toolbar so that the items in the overflow menu work.

  This fix also allows the toolbar Text Only mode to work.

- Added Import>New Database from Text file options to File menu when no database is open.

- Upgraded Field>Morph>Fill with Value and Field>Morph>Fill with Formula to use a nice dialog sheet instead of plain-jane modal dialog.

- In the Find/Select Dialog, the New Selection/Subset of Current Selection/Superset of Current Selection pop-up menu now immediately updates the search preview.

- Added the Move Record Up and Move Record Down commands in the Records menu, with shortcuts of Command-Up Arrow and Command-Down Arrow.

- Added new count( function, which is like the sum( function but counts up non-empty line item fields. Can be used with sum( to calculate the average of non-empty line item fields, for example `100*sum("Amount")/count("Amount")`.

- Implemented the safefileerase statement, aka safefiletrash. Somehow this was documented but not actually implemented in previous releases.

- Implemented the MakeFileSecret statement. It was already documented, so probably it had been implemented before but somehow the code got lost along the way.

- Fixed Panorama Help so that when you switch to a different help realm, the first topic in the realm is automatically selected. Also, when opening the Tutorial from the Help menu, it automatically selects the Tutorial realm and starts with the tutorial table of contents page.

- Text Label objects can no longer be resized. They always resized automatically, so any manual resize was cancelled as soon as you edited or changed the font, but now attempts to resize by dragging the handles are simply ignored. (The handles are still displayed, though.) A Text Label object can still be resized with the Measurement Panel, or if it is part of a group or multiple objects being resized. But as before, any resize will have only temporary effect.

- If the title parameter of the StartDatabaseChange statement is omitted, the title now defaults to the name of of the procedure the statement is enclosed in. In practice, this will often mean that you can leave off this parameter.

- The StartDatabaseChange statement now displays an error message if an unknown undo operation type is specified. Also, Panorama will remove white space from the undo operation type, so for example `"current record"` or `"all records"` are allowed.

- Menu separator items in a custom menu now work correctly even if a non-standard font or size is used for the menu. (In previous versions the separator would appear as a dash instead of as a proper separator.)

- New specialkey( function, can be used with menuitem( function to create command key equivalents for special keys like down arrow, up arrow, function keys, etc.

- Fixed problem that caused nothing to print if the data tile was taller than the height of the printed page.

- The fieldvalue( function (aka *grabdata(*) now works correctly in database scanning statements like formulafill and select, even when accessing a field in the current database. This also means that using the superlookup( function with double chevron notation to reference fields in the current database will work when using these statements.

- The import() function now works with the importtext statement.

- The formulafill statement now works correctly with a lookuplast( function that looks into the current database. There was also an unreported bug with superlookup( if the SkipCurrentRecord option was enabled in this situation, also fixed.

- The lookupall( function now includes empty values in the results, just like it did in Panorama 6.

- The lookupall( function now works properly when the key field has spaces or punctuation in it. You no longer need to both quote and add chevrons to the key field name to get it to work. (However, so that any databases you have adjusted for this bug will still work, it is still allowed to use both quotes and chevrons at the same time.)

- Fixed five url related functions that would crash if a malformed URL was supplied (for example `"hello%world.html"` instead of `"hello%20world.html"`. The fixed functions are urltask(, url(, loadurl(, openurl( and posturl(. The same problem was fixed in the OpenURL statement, and in the Web Browser Object.

- The for statement now skips code in body of loop if initial loop index is greater than final loop value.

- Now strips leading and trailing white space (inclucing line breaks) from field names when importing from Panorama 6.

- There is now only one shortcut for Find Previous, and it is Command-Shift-G.

- Changes made to reduce Panorama’s peak memory footprint when doing intensive long running tasks.

- Corrected the statelookup( function documentation to indicate that it returns the original text if the state is not found.

- The Site License wizard now correctly submits orders for 1 month.

- Fixed cosmetic problem with Database Options dialog (double instances of objects in first pane when first opening dialog).

- OpenWizard now allows a wizard’s _WizardInfo code to specify a width as well as height.

- Incorporated documentation corrections submitted by multiple users, including David Thompson, John Bovenmyer, Michael Kellock and Craig McPherson. Thank you!

Brand new features implemented in this release (features that were not included in Panorama 6):

- count( -- The count( function counts all non-empty instances of a line item field in the current record.
- info("pagesetuporientation") -- The info("pagesetuporientation") function returns the printing page orientation for the current database.
- info("pagesetuppaperheight") -- The info("pagesetuppaperheight") function returns the printing paper height for the current database.
- info("pagesetuppaperwidth") -- The info("pagesetuppaperwidth") function returns the printing paper width for the current database.
- info("pagesetupscale") -- The info("pagesetupscale") function returns the printing scale factor for the current database.
- let -- The let statement creates a local variable and assigns a value to it.
- letfileglobal -- The letfileglobal statement creates a fileglobal variable and assigns a value to it.
- letglobal -- The letglobal statement creates a global variable and assigns a value to it.
- letpermanent -- The letpermanent statement creates a permanent variable and assigns a value to it.
- letwindowglobal -- The letwindowglobal statement creates a windowglobal variable and assigns a value to it.
- moverecorddown -- The moverecorddown statement moves the current record down one line.
- moverecordup -- The moverecordup statement moves the current record up one line.
- specialkey( -- The specialkey( function returns the unicode value for special keys on the keyboard.

Features implemented in this release that work differently than they did in Panorama 6.

- Panorama Video Training -- learn how to get the most from Panorama's video training wizard, including finding a video, zooming the video, opening related help topics, and purchasing on-demand training videos.

Features implemented in this release that work exactly the same as they did in Panorama 6.

ALL features that were added or changed in this release:

- arraylookup( -- The arraylookup( function uses a key to look up a value in a two dimensional text array containing key/value pairs (see Text Arrays).
- count( -- The count( function counts all non-empty instances of a line item field in the current record.
- let -- The let statement creates a local variable and assigns a value to it.
- letfileglobal -- The letfileglobal statement creates a fileglobal variable and assigns a value to it.
- letglobal -- The letglobal statement creates a global variable and assigns a value to it.
- letpermanent -- The letpermanent statement creates a permanent variable and assigns a value to it.
- letwindowglobal -- The letwindowglobal statement creates a windowglobal variable and assigns a value to it.
- moverecorddown -- The moverecorddown statement moves the current record down one line.
- moverecordup -- The moverecordup statement moves the current record up one line.
- specialkey( -- The specialkey( function returns the unicode value for special keys on the keyboard.
- startdatabasechange -- The startdatabasechange statement adds undo support to a procedure.

See Also

- Version 0.1.001 (released July 7th, 2012) -- Summary of Version 0.1.001 (released 7/7/2012)
- Version 0.1.002 (released August 12th, 2012) -- Summary of Version 0.1.002 (released 8/12/2012)
- Version 0.1.003 (released December 2nd, 2012) -- Summary of Version 0.1.003 (released 12/2/2012)
- Version 0.1.004 (released December 10th, 2012) -- Summary of Version 0.1.004 (released 12/10/2012)
- Version 0.1.005 (released December 21st, 2012) -- Summary of Version 0.1.005 (released 12/21/2012)
- Version 0.1.006 (released December 26th, 2012) -- Summary of Version 0.1.006 (released 12/26/2012)
- Version 0.1.007 (released May 1st, 2013) -- Summary of Version 0.1.007 (released 5/1/2013)
- Version 0.1.008 (released May 22nd, 2013) -- Summary of Version 0.1.008 (released 5/22/2013)
- Version 0.1.009 (released July 9th, 2013) -- Summary of Version 0.1.009 (released 7/9/2013)
- Version 0.1.010 (released October 14th, 2013) -- Summary of Version 0.1.010 (released 10/14/2013)
- Version 0.1.011 (released December 6th, 2013) -- Summary of Version 0.1.011 (released 12/6/2013)
- Version 0.1.012 (released August 29th, 2015) -- Summary of Version 0.1.012 (released 8/29/2015)
- Version 0.1.013 (released September 6th, 2015) -- Summary of Version 0.1.013 (released 9/6/2015)
- Version 0.1.014 (released September 14th, 2015) -- Summary of Version 0.1.014 (released 9/14/2015)
- Version 0.1.015 (released September 29th, 2015) -- Summary of Version 0.1.015 (released 9/29/2015)
- Version 0.1.016 (released October 12th, 2015) -- Summary of Version 0.1.016 (released 10/12/2015)
- Version 0.1.017 (released November 11th, 2015) -- Summary of Version 0.1.017 (released 11/11/2015)
- Version 0.1.018 (released December 7th, 2015) -- Summary of Version 0.1.018 (released 12/7/2015)
- Version 0.1.019 (released January 28th, 2016) -- Summary of Version 0.1.019 (released 1/28/2016)
- Version 0.1.020 (released February 15th, 2016) -- Summary of Version 0.1.020 (released 2/15/2016)
- Version 0.1.021 (released February 29th, 2016) -- Summary of Version 0.1.021 (released 2/29/2016)
- Version 0.1.022 (released March 1st, 2016) -- Summary of Version 0.1.022 (released 3/1/2016)
- Version 0.1.023 (released May 27th, 2016) -- Summary of Version 0.1.023 (released 5/27/2016)
- Version 0.1.024 (released June 12th, 2016) -- Summary of Version 0.1.024 (released 6/12/2016)
- Version 0.1.025 (released July 21st, 2016) -- Summary of Version 0.1.025 (released 7/21/2016)
- Version 0.1.026 (released August 29th, 2016) -- Summary of Version 0.1.026 (released 8/29/2016)
- Version 0.1.027 (released September 18th, 2016) -- Summary of Version 0.1.027 (released 9/18/2016)
- Version 0.1.028 (released November 9th, 2016) -- Summary of Version 0.1.028 (released 11/9/2016)
- Version 0.1.029 (released December 31st, 2016) -- Summary of Version 0.1.029 (released 12/31/2016)
- Version 0.1.030 (released February 12th, 2017) -- Summary of Version 0.1.030 (released 2/12/2017)
- Version 0.1.031 (released March 3rd, 2017) -- Summary of Version 0.1.031 (released 3/3/2017)
- Version 0.1.032 (released April 3rd, 2017) -- Summary of Version 0.1.032 (released 4/3/2017)
- Version 0.9 (released May 15th, 2017) -- Summary of Version 0.9 (released 5/15/2017)
- Version 0.9.001 (released July 18th, 2017) -- Summary of Version 0.9.001 (released 7/18/2017)
- Version 0.9.002 (released July 27th, 2017) -- Summary of Version 0.9.002 (released 7/27/2017)
- Version 0.9.004 (released September 14th, 2017) -- Summary of Version 0.9.004 (released 9/14/2017)
- Version 0.9.005 (released September 19th, 2017) -- Summary of Version 0.9.005 (released 9/19/2017)
- Version 0.9.006 (released September 27th, 2017) -- Summary of Version 0.9.006 (released 9/27/2017)
- Version 0.9.007 (released October 3rd, 2017) -- Summary of Version 0.9.007 (released 10/3/2017)
- Version 0.9.008 (released October 12th, 2017) -- Summary of Version 0.9.008 (released 10/12/2017)
- Version 10.0.0 (released October 18th, 2017) -- Summary of Version 10.0.0 (released 10/18/2017)
- Version 10.0.01 (released December 10th, 2017) -- Summary of Version 10.0.01 (released 12/10/2017)
- Version 10.1 (released August 6th, 2018) -- Summary of Version 10.1 (released 8/6/2018)
- Version 10.1.1 (released August 30th, 2018) -- Summary of Version 10.1.1 (released 8/30/2018)
- Version 10.1.2 (released November 15th, 2018) -- Summary of Version 10.1.2 (released 11/15/2018)
- Version 10.2 (released November 25th, 2024) -- Summary of Version 10.2 (released 11/25/2024)
- Version 10.2.0 b12 (released January 27, 2021) -- Summary of Version 10.2.0 b12 (released 01/27/2021)
- Version 10.2.0 b13 (released February 15, 2021) -- Summary of Version 10.2.0 b13 (released 02/15/2021)
- Version 10.2.0 b14 (released March 14, 2021) -- Summary of Version 10.2.0 b14 (released 03/14/2021)
- Version 10.2.0 b15 (released March 30, 2021) -- Summary of Version 10.2.0 b15 (released 03/30/2021)
- Version 10.2.0 b16 (released April 27, 2021) -- Summary of Version 10.2.0 b16 (released 04/27/2021)
- Version 10.2.0 b17 (released June 23, 2021) -- Summary of Version 10.2.0 b17 (released 06/23/2021)
- Version 10.2.0 b18 (released July 21, 2021) -- Summary of Version 10.2.0 b18 (released 07/21/2021)
- Version 10.2.0 b20 (released August 26, 2021) -- Summary of Version 10.2.0 b20 (released 08/26/2021)
- Version 10.2.0 b21 (released September 20, 2021) -- Summary of Version 10.2.0 b21 (released 09/20/2021)
- Version 10.2.0 b22 (released October 6, 2021) -- Summary of Version 10.2.0 b22 (released 10/06/2021)
- Version 10.2.0 b23 (released October 20, 2021) -- Summary of Version 10.2.0 b23 (released 10/20/2021)
- Version 10.2.0 b24 (released October 21, 2021) -- Summary of Version 10.2.0 b24 (released 10/21/2021)
- Version 10.2.0 b25 (released December 10, 2021) -- Summary of Version 10.2.0 b25 (released 12/10/2021)
- Version 10.2.0 b26 (released June 15, 2022) -- Summary of Version 10.2.0 b26 (released 06/15/2022)
- Version 10.2.0 b27 (released August 11, 2022) -- Summary of Version 10.2.0 b27 (released 08/11/2022)
- Version 10.2.0 b28 (released August 23, 2022) -- Summary of Version 10.2.0 b28 (released 08/23/2022)
- Version 10.2.0 b29 (released September 13, 2022) -- Summary of Version 10.2.0 b29 (released 09/13/2022)
- Version 10.2.0 b30 (released October 30, 2022) -- Summary of Version 10.2.0 b30 (released 10/30/2022)
- Version 10.2.0 b31 (released January 16, 2023) -- Summary of Version 10.2.0 b31 (released 01/16/2023)
- Version 10.2.0 b32 (released January 21, 2023) -- Summary of Version 10.2.0 b32 (released 01/21/2023)
- Version 10.2.0 b33 (released April 30, 2023) -- Summary of Version 10.2.0 b33 (released 04/30/2023)
- Version 10.2.0 b34 (released October 27, 2023) -- Summary of Version 10.2.0 b34 (released 10/27/2023)
- Version 10.2.0 b35 (released December 4, 2023) -- Summary of Version 10.2.0 b35 (released 12/4/2023)
- Version 10.2.0 b36 (released December 25, 2023) -- Summary of Version 10.2.0 b36 (released 12/25/2023)
- Version 10.2.0 b37 (released January 11, 2024) -- Summary of Version 10.2.0 b37 (released 1/11/2024)
- Version 10.2.0 b38 (released April 7, 2024) -- Summary of Version 10.2.0 b38 (released 4/7/2024)
- Version 10.2.0 b39 (released June 26, 2024) -- Summary of Version 10.2.0 b39 (released 06/26/2024)
- Version 10.2.0 b40 (released October 1, 2024) -- Summary of Version 10.2.0 b40 (released 10/01/2024)
- Version 10.2.0 b41 (released October 20, 2024) -- Summary of Version 10.2.0 b41 (released 10/20/2024)
- Version 10.2.0 b42 (released November 11, 2024) -- Summary of Version 10.2.0 b42 (released 11/11/2024)
- Version 10.2.0 b43 (released November 23, 2024) -- Summary of Version 10.2.0 b43 (released 11/23/2024)
- Version 10.2.1 (released January 19, 2025) -- Summary of Version 10.2.1 (released 01/19/2025)
- Version 10.2.2 (released August 8th, 2025) -- Summary of Version 10.2.2 (released 8/8/2025)