Version 0.1.030 (released February 12th, 2017)
This version includes massive amounts of new documentation (and an improved user interface for accessing help), significant performance and stability improvements, new features to simplify creation of new databases and new fields, as well as dozens of minor enhancements and corrections.

- Hundreds of new pages of documentation, which now includes updated versions of almost all of the material that was in 14 chapters of the Panorama Handbook: 1–3, 5–9, 13–18, plus some materials from chapters 12, 21 and the Formulas & Programming book. There are over 1,200 images and animations. Here is just a sampling of the new topics.

- Performance improvements to contains, beginswith, and endswith operations, which resulted in nearly a 2x speed improvement for the most commonly performed searches.

- Fixed crash/hang that could occur during background search operations, indluding the Find/Select dialog. Also additional performance enhancements for searching (beyond the contains/begins/ends improvements listed above).

- Now correctly handles clicks in a data sheet in a background window.

- Added “realms” to the Panorama Help Wizard. Each realm contains a limited number of related topics. The current realm can be changed with a pop-up menu. Hopefully this will make it a lot easier to get into the help information, instead of just throwing almost two thousand topics at the user (the wizard also now lists the number of currently visible topics).

- New Common Fields pop-up menu in the Field Properties panel. Allows user to quickly set up common fields by clicking on the star. Right click to add new fields, or Shift-Right click to insert new fields.

- Added new options to File>New for quickly creating common databases, including mailing lists, invoices, checkbooks, price lists and inventory.

- Implemented new Construct Multiple Fields dialog, allows multiple fields to be added or inserted at once, using a simple text based template (this dialog is also used with the New Database from Template option described above, but in that case the template is pre-filled in). Panorama will intelligently set up common fields, and you can also customize field specifications with tags and easily make line item fields.

- When creating a new database from a text file, Panorama now assumes that the first line of the text file contains field names. There is also a second option that does not make this assumption, it simply names the fields A, B, C, etc.

- Implemented the Find & Replace Dialog, which now includes options for Regular Expressions and for modifying all fields.

- Added new ifselect statement, which combines if, select, and info(“empty”) into a single, easy to use, statement.

- Added Automatic Choice List button to Field Properties panel. Also added new automaticfieldchoices statement that updates the Choices property with a list of choices of data actually in the field.

- Editing of floating point fields now happens at full precision of number (up to 15 digits). Also, the str( function now outputs in full precision.

- Added option to set the next record ID number to Database Options dialog.

- Added Show All Fields and Hide All Fields to favorites pop-up menu in the Hide/Show Fields dialog.

- Added Recalculate Field in Fields>Morph menu and column header context menu. This recalculates the field based on the formula for the field (selected records only). You can use this if you change the formula. Menu item will be disabled if there is no formula for the field.

- Changed Text Editor color from white to black in Split Field dialog and Merge Fields dialog.

- The View Organizer’s Libraries>Register Functions and Libraries command now works for ordinary users who are not ProVUE employees.

- Added support for the emptyfield statement. Note: This statement now generates an error if there is no empty field available.

- The GetText statement now works properly even if variable being edited hasn’t been defined yet (this also worked in Panorama 6).

- Made numerous fixes to how empty selections are handled in a procedure. Also, the info(“empty”) status for all databases is now reset to false when a procedure stops running.

- Added new setfieldnames statement that makes it easy to change all field names at once.

- The fieldvalue( function now allows the field to be specified by number (1, 2, 3) or by name.

- The databaseexportcsv and databaseexporttsv now output a list of field names on the first line of the exported file.

- All white space, including non-breaking spaces, is now ignored when ingesting numbers into a field. This fixes date problems in countries where the group (thousands) separator is a space (in France, for example). (Fun fact – Apple uses non-breaking spaces for the group (thousands) separator when space is specified.)

- Column fill operations now update the data sheet properly even when there are one or more hidden fields to the left of the active field.

- Fixed several sort functions to be case sensitive, including arraysort(, arraydeduplicate(, views( and Text List/Matrix sort up options.

- The showother statement has a new option, 94, that updates the field properties panel. It is designed to be used after the setfieldproperties statement.

- Added “dummy” resynchronize statement, just so user procedures won’t have an error.

- Tab Panel no longer attempts to switch panel if it is not in the current form – which would corrupt any form in the topmost window.

- Eliminated Objective-C runtime error when clicking from a data sheet with a few columns to data sheet with more columns.

- Panorama no longer allows you to change a form or procedure name to "", which would make the item inaccessible (and impossible to delete).

- The RegisterCustomFunctions statement now checks to make sure that the function name is legal before registering the function.

- Fixed the Select Sounds Like data sheet context menu item.

- Corrected layout problems in the Split Fields dialog and the Morph Field dialog.

- Text Editor BorderRightMargin property was not correct in objectinfo( and in blueprints (it was using the left margin instead of the right margin).

- Added a preference option to completely disable background searching.

- Hundreds of user submitted documentation corrections, mostly from Michael Kellock.

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

- automaticfieldchoices -- The automaticfieldchoices statement updates the current field's Choice list with actual data in the database.
- columnstatsdialog -- The columnstatsdialog statement opens the standard Column Stats dialog.
- commonfieldspopup -- The commonfieldspopup statement pops up a list of common fields, and changes the current field specifications when a field is chosen from this menu.
- Construct Multiple Fields -- using a template to quickly add multiple fields to a database.
- constructfields -- The constructfields statement creates one or more new fields based on a template.
- constructfieldssheet -- The constructfieldssheet statement opens a sheet to add/insert multiple new fields into the database.
- Creating a New Database -- creating a new database.
- Database Blueprints -- exporting a database into a blueprint.
- Field Blueprint Dialog -- examining and modifying the raw specification of a field.
- Field Properties Panel -- examining and modifying field attributes.
- Find & Open -- searching for a database on the hard drive and opening it.
- HTML Export -- custom exports into an HTML file.
- ifselect -- The ifselect statement combines the select and if info("empty") operations into a single statement.
- Import Database -- importing another database into the current database.
- info("disablebackgroundsearch") -- The info("disablebackgroundsearch") function returns true if all background searches have been disabled.
- insertnewproceduremark -- The insertnewproceduremark statement inserts a new mark into the current procedure.
- loadcustomfunctions -- The loadcustomfunctions statement reloads all ProVUE defined custom functions.
- matrixclickedobjectid -- The matrixclickedobjectid statement helps implement buttons in a matrix object.
- matrixredrawclickedcell -- The matrixredrawclickedcell statement redraws the matrix cell that was just clicked.
- newdatabasewithtemplate -- The newdatabasewithtemplate statement creates a new database with a template.
- newdatabasewithtextfieldnames -- The newdatabasewithtextfieldnames statement creates a new database from a text file. The text file must contain the field names in the first line.
- Open Favorites -- quickly open commonly used databases.
- Open Recent -- quickly re-open recently used databases.
- Open View -- using the Open View window to quickly access any form, procedure or data sheet.
- Programming -- basics of programming with Panorama X.
- recalculatefield -- The recalculatefield statement recalculates all values in current field based on field's formula (selected records only).
- runfieldcode -- The runfieldcode statement runs the automatic code associated with the specified field.
- setfieldnames -- The setfieldnames statement changes the names of all database fields at once.
- Text Export Wizard -- custom exports into a text or HTML file.
- Text Export -- exporting a database into a text or HTML file.
- Text Import -- importing text into an existing database.
- Toolbars -- using and customizing window toolbars.
- View Organizer -- rearranging, copying and deleting views.

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

- Adding New Fields -- adding one or more fields to a database.
- Automatic Field Calculations -- performing formulas automatically when data is entered into a field.
- Automatic Field Code -- running a short program when data is entered into a field.
- Choices -- fixed list of choices.
- Code -- basics of programming code.
- Data Types -- different types of data that can be stored in Panorama, including text, numbers and dates.
- emptyfield -- The emptyfield statement tells Panorama to move to the next available (empty) field in a series of line item fields.
- Favorite Searches -- saving and recalling favorite searches.
- Field Properties -- available field attributes.
- Find & Replace Dialog -- finding and replacing a word or phrase (with an option to use a regular expression).
- Find/Select Dialog -- using a dialog to search for specific data.
- findreplacedialog -- The findreplacedialog statement opens the Find & Replace dialog.
- Formula Workshop -- formula workshop wizard for testing and experimenting with formulas.
- Memory Usage -- memory usage.
- Numeric Data -- numeric data (fixed and floating point).
- Procedure Editor -- editing named procedures.
- Procedures -- basics of procedures for automation.
- Rearranging Field Order -- rearranging the order of fields in the data sheet.
- Reveal in Finder -- reveal the location of a database in the Finder.
- Sorting Data -- sorting data into a specific order.
- Text Search Options -- searching text within a database.
- Undo -- using the Undo command to reverse one or more recent actions.
- View Menu -- accessing and creating the data sheet, forms and procedures.
- View-As-List Forms -- displaying a custom data layout as a continuous sheet.

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

- Date Search Options -- searching dates within a database.
- Deleting Fields -- deleting fields from the database.
- Field Width -- adjusting the width of a field in the data sheet.
- Fields -- introduction to database fields.
- Formula Search -- searching with a formula.
- Hiding and Showing Fields -- temporarily hiding fields in the data sheet.
- Merging Adjacent Fields -- merging two fields into one.
- Numeric Search Options -- searching numbers within a database.
- Record Search Options -- searching via record attributes.
- Refining a Selection -- selecting a subset or superset of a previous selection."
- resynchronize -- The resynchronize statement synchronizes the local database with Panorama Server. This is the same as choosing Synchronize from the File menu.
- Searching -- searching a database to find or select information.
- Selecting with the Context Menu -- searching for information related to the current cell.
- Smart Dates -- keyboard entry of dates.
- Splitting a Field -- splitting a field into two fields.

ALL features that were added or changed in this release:

- * -- The * operator multiplies the numeric value on the left by the numeric value on the right.
- Adding New Fields -- adding one or more fields to a database.
- appenddataarrays( -- The appenddataarrays( function appends two or more data arrays to each other (see Data Arrays).
- Automatic Field Calculations -- performing formulas automatically when data is entered into a field.
- Automatic Field Code -- running a short program when data is entered into a field.
- automaticfieldchoices -- The automaticfieldchoices statement updates the current field's Choice list with actual data in the database.
- checkemptyselection -- The checkemptyselection statement notifies the user if a selection failed, and reverts to the previous selection.
- Choices -- fixed list of choices.
- columnstatsdialog -- The columnstatsdialog statement opens the standard Column Stats dialog.
- commonfieldspopup -- The commonfieldspopup statement pops up a list of common fields, and changes the current field specifications when a field is chosen from this menu.
- Construct Multiple Fields -- using a template to quickly add multiple fields to a database.
- constructfields -- The constructfields statement creates one or more new fields based on a template.
- constructfieldssheet -- The constructfieldssheet statement opens a sheet to add/insert multiple new fields into the database.
- Creating a New Database -- creating a new database.
- Data Arrays -- A numbered collection of data values.
- Data Types -- different types of data that can be stored in Panorama, including text, numbers and dates.
- Database Blueprints -- exporting a database into a blueprint.
- datavalue( -- The datavalue( function returns the value of a field or variable: text, number, etc.
- Date Search Options -- searching dates within a database.
- Deleting Fields -- deleting fields from the database.
- emptyfield -- The emptyfield statement tells Panorama to move to the next available (empty) field in a series of line item fields.
- Favorite Searches -- saving and recalling favorite searches.
- Field Blueprint Dialog -- examining and modifying the raw specification of a field.
- Field Properties Panel -- examining and modifying field attributes.
- Field Width -- adjusting the width of a field in the data sheet.
- fieldalignment( -- The fieldalignment( function returns the alignment of a database field.
- fieldformula( -- The fieldformula( function returns the formula associated with a database field.
- fieldnumber( -- The fieldnumber( function returns the number of a database field (starting with 1).
- fieldpattern( -- The fieldpattern( function returns the output pattern associated with a database field.
- Fields -- introduction to database fields.
- fieldvalue( -- The fieldvalue( function grabs the contents of a field in the current record of a database. You can grab data from the current database, or from another database.
- fieldwidth( -- The fieldwidth( function returns the width (in the data sheet) of a database field.
- Find & Open -- searching for a database on the hard drive and opening it.
- Find & Replace Dialog -- finding and replacing a word or phrase (with an option to use a regular expression).
- Find/Select Dialog -- using a dialog to search for specific data.
- findreplacedialog -- The findreplacedialog statement opens the Find & Replace dialog.
- Formula Search -- searching with a formula.
- Formula Workshop -- formula workshop wizard for testing and experimenting with formulas.
- getfieldproperties( -- The getfieldproperties( function returns a dictionary containing all of the properties of the specified field. (See the setfieldproperties statement if you want to change one or more field properties.)
- grabfieldtype( -- The grabfieldtype( function returns the type of a database field in any open database.
- Hiding and Showing Fields -- temporarily hiding fields in the data sheet.
- HTML Export -- custom exports into an HTML file.
- ifselect -- The ifselect statement combines the select and if info("empty") operations into a single statement.
- Image Display Colors and Gradients -- displaying pure colors and gradients
- Image Display Data Buttons -- checkboxes and radio buttons created from custom images.
- Image Display Object -- is used for dynamic images (images that change depending on the data).
- Import Database -- importing another database into the current database.
- info("disablebackgroundsearch") -- The info("disablebackgroundsearch") function returns true if all background searches have been disabled.
- insertnewproceduremark -- The insertnewproceduremark statement inserts a new mark into the current procedure.
- loadcustomfunctions -- The loadcustomfunctions statement reloads all ProVUE defined custom functions.
- Matrix Object Frame -- setting up the arrangement of items within a Matrix Object.
- Matrix Object -- displaying a grid of items with a custom arrangement.
- matrixclickedobjectid -- The matrixclickedobjectid statement helps implement buttons in a matrix object.
- matrixredrawclickedcell -- The matrixredrawclickedcell statement redraws the matrix cell that was just clicked.
- Memory Usage -- memory usage.
- Merging Adjacent Fields -- merging two fields into one.
- newdatabasewithtemplate -- The newdatabasewithtemplate statement creates a new database with a template.
- newdatabasewithtextfieldnames -- The newdatabasewithtextfieldnames statement creates a new database from a text file. The text file must contain the field names in the first line.
- Numeric Data -- numeric data (fixed and floating point).
- Numeric Patterns -- control how a number is displayed or converted to text.
- Numeric Search Options -- searching numbers within a database.
- Open Favorites -- quickly open commonly used databases.
- Open Recent -- quickly re-open recently used databases.
- Open View -- using the Open View window to quickly access any form, procedure or data sheet.
- pattern( -- The pattern( function converts a number into text using a pattern.
- Procedure Editor -- editing named procedures.
- Procedures -- basics of procedures for automation.
- Programming -- basics of programming with Panorama X.
- Rearranging Field Order -- rearranging the order of fields in the data sheet.
- recalculatefield -- The recalculatefield statement recalculates all values in current field based on field's formula (selected records only).
- Record Search Options -- searching via record attributes.
- Refining a Selection -- selecting a subset or superset of a previous selection."
- registercustomfunction -- The registercustomfunction statement defines a new custom function.
- resynchronize -- The resynchronize statement synchronizes the local database with Panorama Server. This is the same as choosing Synchronize from the File menu.
- Reveal in Finder -- reveal the location of a database in the Finder.
- Searching -- searching a database to find or select information.
- Selecting with the Context Menu -- searching for information related to the current cell.
- setfieldnames -- The setfieldnames statement changes the names of all database fields at once.
- Smart Dates -- keyboard entry of dates.
- Sorting Data -- sorting data into a specific order.
- speakletters -- The speakletters statement buffers up one or more characters to be spoken later by the speaknow statement. Letters will be spoken individually, as upper or lower case. Numbers will be spoken as individual digits.
- Splitting a Field -- splitting a field into two fields.
- Text Export Wizard -- custom exports into a text or HTML file.
- Text Export -- exporting a database into a text or HTML file.
- Text List Appearance -- customizing the appearance of a Text List Object.
- Text Search Options -- searching text within a database.
- Toolbars -- using and customizing window toolbars.
- Undo -- using the Undo command to reverse one or more recent actions.
- View Menu -- accessing and creating the data sheet, forms and procedures.
- View Organizer -- rearranging, copying and deleting views.
- View-As-List Forms -- displaying a custom data layout as a continuous sheet.

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