Version 10.0.01 (released December 10th, 2017)
This version includes a handful of new features and about twenty bug fixes. Under the hood, this version also contains a lot of new code for shared database operation with Panorama Server, but those changes will not affect current single user Panorama databases.

- Panorama X now includes a new Error Wizard that provides detailed information when a program error occurs. To enable this wizard, open the Panorama>Preferences window and check the Enable Advanced Error Dialog setting. When this setting is enabled, Panorama will display the advanced dialog shown below when an error occurs. In addition to showing the error message itself, this dialog also shows the location of the error in the code, as well as whatever procedures called the code that triggered the error. You can easily open any of this code to edit it.

- The user can now change the font size used in procedure windows using the General Preferences dialog. So if you want to use big text for procedure code, now you can. This doesn’t affect currently open procedure windows, only windows that are opened after the setting is changed.

- You can also use the “PXSourceCodeFontSize” preference setting to change the size in a program, as shown below. The value must be a float, as shown in this example.

  setpreferencevalue “PXSourceCodeFontSize”,float(18)

- A program can also change the font used, as shown below. There is no setting for this in the preference panel.

  setpreferencevalue “PXSourceCodeFontName”,“Avenir-Light”

- If you want to go back to standard font & size you can do this:

  removepreferencevalues “PXSourceCodeFontName”,“PXSourceCodeFontSize”

- Added Lock/Unlock object to the graphics mode context menu, and to the Objects menu. Added Ignore Locked Objects to the Objects menu.

- Added the new arraycommonprefix( function, which examines all elements of a text array for a common prefix, and if found, returns the prefix text. (This function was needed for Panorama X Server, but is available for anyone to use.)

- The Panorama Video Training wizard now has a menu item to copy video URL to the clipboard.

- The date( function now returns zero if an empty string is passed in, just like Panorama 6 did (previous versions of Panorama X returned an error).

- When inserting a date into literal text, it is no longer required to put a space between “date:” and the date pattern. For example, both `«date:Month dd, yyyy»` and `«date: Month dd, yyyy»` are now ok.

- When importing a Panorama 6 database, Panorama X now brings over any field notes that had been set up in the design sheet or Field Properties dialog.

- The goform statement now works properly when switching back and forth from a regular form to a view-as-list form (both directions are now ok).

- Fixed the GetText statement to eliminate the intermittent undefined variable problem.

- Can now add or delete records even if the cursor is in a field that has no name.

- In data sheet, Panorama X no longer allows a field to be edited if the field name is blank (before, it would allow it to be edited, but then throw away whatever you typed in).

- Fixed problem that caused intermittent crashes when customizing toolbar.

- No longer displays an error message if a handler procedure tries to perform a user interface action (like displaying a variable), it just ignores the request.

- The info(“procedurestack”) and info(“errorstack”) functions now return the ending position of each error, and the source code for each level of the stack (line breaks are converted into vertical tabs). (These new capabilities are used by the new Error Wizard.

- The SetDictionaryValue statement now works correctly when mutiple key/value pairs are provided (previously, all but the last pair was ignored).

- Change to Import Database dialog – the field matching pop-up menu now says Match Fields by Order/Match Field by Name instead of Append Field, which made no sense.

- The Custom Text Export dialog (see Text Export Wizard) now defaults to exporting to the same folder as the database containing the data, instead of defaulting to the Wizards folder

- Corrected unreported bug in ImportText statement (fixed possible spurious error messages if REARRANGE option is used).

- Fixed bug that could cause a missing text preference to crash Panorama (objective-C runtime error). Now it properly uses the default value.

- Fixed the `radixstr:` method so that it doesn’t crash if specified output length is smaller than the value being output.

- In the past, if a file with no extension was dropped into the Wizards folder, Panorama would fail on startup. Now it ignores this and builds the rest of the Wizard menu without problems.

- Elininated hang that occurred if database record somehow wound up with zero length. Not sure how a record could wind up with zero length, but a user submitted a database where this happened.

- When making a purchase, the Site License wizard now warns you if you have entered a coupon but haven’t applied it yet (see Managing Your Panorama X Account).

- Miscellaneous documentation corrections by David Thompson, Gary Yonaites, Michael Kellock, William Conable and Laurence Veinott. Thank you!

Brand new features implemented in this release:

- arraycommonprefix( -- The arraycommonprefix( function finds the common prefix (if any) of all items in an array.
- Error Wizard -- Advanced dialog for displaying program errors.

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.003 (released September 10th, 2017) -- Summary of Version 0.9.003 (released 9/10/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.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 October 7th, 2021) -- Summary of Version 10.2 (released 10/7/2021)