Panorama X 10.1 Build 2790 Release Notes

Panorama X 0 10.1 (Build 2790) is now available. You can download this new version from the web site, or you can simply launch your current version of Panorama X and let it automatically update. If Panorama X is already running, choose Check for Updates in the Panorama menu.

Panorama X 10.1 is a major release with a long list of changes. Here is a quick list of the major new features.

  • Summary tables
  • Crosstabs
  • Charts
  • AppleScript support (scriptable from other applications)
  • Construction dialog for custom reports
  • Variable height printing
  • Multiple page printing
  • Full documentation for printing
  • Dynamically customizable tab order
  • Data sheet fields can now be configured as clickable buttons

For more information about these major features, as well as many more minor new features, performance enhancements and bug fixes, consult the list below. These release notes are also in the Panorama Help, where they have links to each section of the new documentation.

  • The Summary Workshop wizard is a dynamic tool for quickly summarizing, analyzing and charting large amounts of data. The workshop can rapidly categorize the information in a database and calculate totals, averages, counts, minimum/maximums and standard deviation. Summaries can be displayed in tabular or chart formats.


  • Summary tables can be reconfigured on-the-fly, independently of the main database. For many applications, summary tables are much faster and easier to use than summary records.


  • In addition to tabular display, the Summary Workshop can also display various kinds of charts. Simply choose the type of chart you want to see from the Display popup menu.


  • The Crosstab Workshop wizard is a tool for two dimensional summarizing, analyzing and charting large amounts of data. The workshop displays a two dimensional grid summarizing the information in a database by multiple categories, for example spending by vendor vs. quarter, as shown here:


  • Like summary tables, crosstabs can be reconfigured on-the-fly, without making any changes to the main database.


  • Both the Summary Workshop and Crosstab Workshop allow you to set up favorite configurations. To instantly pull up a previously saved favorite, just click on the star and select it from the pop-up menu.


  • Both the Summary Workshop and Crosstab Workshop allow you to easily reveal the underlying raw data behind any summary value. Simply right click on any summary or crosstab cell and choose Select Original Data.


  • Like the Summary Workshop, the Crosstab Workshop can also display various kinds of charts. Simply choose the type of chart you want to see from the Display popup menu.


  • All charts are interactive – when you hover over them a label appears showing the data value.


  • Charts can optionally display spike lines to make it easier to see where each value falls on the axes.


  • Charts can zoom in and out, pan, and reset the zoom.


  • In addition to using the Summary Workshop and Crosstab Workshop, you can also embed summary tables, crosstabs and charts into Panorama forms. You can also put multiple tables on a single form, multiple charts, any combinations you want. All of these elements remain fully interactive when used in a form. Here is an example with both a crosstab table and a chart combined onto a single form.


  • Data sheet fields can now be configured as clickable buttons. For example, clicking on a field can cause a value to toggle on or off, or a pop-up menu can appear immediately when clicking. See Automatic Field Code to learn how to set this up.


  • Panorama now allows the tab order to be customized dynamically on the fly in both the data sheet and in forms (see Custom Tab Order). When the tab key is pressed, your code can direct Panorama to automatically skip to different fields based on what data has been entered. Here is an example that skips from the City field to the Country field if a zip code is typed into the City field (after looking up the city and state from the zip code). If a city name is typed in, the Tab key skips to the State field, as normal.


  • Panorama X is now controllable from AppleScript with the run code verb command. See Scripting Panorama X with AppleScript for details. Here is an example of an AppleScript that displays a list of the fields in the current database.


  • Panorama X documentation now includes full documentation for custom reports, including headers & footers, margins, multiple columns & multiple pages, and printing summaries.


  • Added new dialog in the Construct Menu to assist with building custom reports with tiles. See Automatic Report Construction for details on this new dialog.


  • Printed reports with expandable (or expand/shrink) text objects (text editor/text display) now correctly print variable height records. Only plain text is supported, not rich text. Here is an example of a form with both expandable text and images side by side.


  • Fixed problem that could occur when printing forms with extra data tiles (Data[2], Data[3], etc). See Printing Multiple Page Records.


  • Implemented the extrapages( function, which allows multiple data tiles to be printed selectively. See Printing Multiple Page Records.

  • The BackDrop and Overlay tiles now print correctly (see Custom Report Headers and Footers).

  • Printing reports now works correctly even when objects on the form are grouped (including tiles).

  • Panorama 6 had two report tiles called Table Header and Table Footer. In Panorama X 10.0, these were renamed to Column Header and Column Footer, but this wasn’t transitioned properly from Panorama 6. In Panorama X 10.1, these are now renamed again to Data Header and Data Footer (see Printing Multiple Column Reports). When a Panorama 6 database is imported, any old Table Header and Table Footer tiles will be converted. However, any Panorama X 10.0 databases containing these tiles, or Column Header/Column Footer tiles, must be manually updated to use Data Header/Data Footer.


  • The Panorama Video Training wizard has a new pop-up menu that allows selection of videos by their recording year. This facilitates finding new videos you haven’t seen before. (By the way, Panorama 10.1 includes four new videos, covering data analytics with the Summary and Crosstab workshops.)


  • Multiple text editor/display objects on a form now all update simultaneously when data changes, for example when advancing to the next record. You will no longer see a “ripple” as different objects update, it’s all instantaneous now. Problem was caused by an Apple bug, tracked down with assistance from an anonymous (by request) Apple engineer at the WWDC 2018 labs.

  • When entering data, importing text, or converting text to numbers, strip non-numeric characters before converting text into numbers, so that currency symbols, etc. are ignored. In other words, you can now import numbers like $3,456.12 without a problem.

  • Clicking on a database name in the Memory Usage window triggers a popup menu that allows you to bring any window in that database to the front. If the database doesn’t have any open windows (it’s “secret”), the popup menu will contain Open Data Sheet, which will allow you to open the data sheet for that database.


  • Fixed a problem that could occasionally cause Panorama X to lose permanent variable values. This could also cause Panorama to lose favorite settings, since they are stored using permanent variables.

  • Image Display objects now layer properly in Z-order. This means that now you can place other objects on top of images, for example buttons or text. This problem was caused by an Apple bug, tracked down with assistance from an anonymous (by request) Apple engineer at the WWDC 2018 labs.


  • When a form event occurs, Panorama now jumps directly to a predefined label in your event handling code (see Implicitly Triggered Procedures). (Form events include opening the form, bringing the form to the front, and resizing the form.) This is much faster than the older method, and incurs no performance penalty at all for events that you don’t want to handle. Panorama now allows the event handling code to be moved to a separate named subroutine, for easier editing and debugging. Also, up to now the techniques for writing event handling code were undocumented, now they are included in the help system. Here is what form event code looks like in the Form Properties panel.


  • Implicitly Triggered Procedures like .Initialize, .ModifyRecord, etc. are now documented in the Panorama X help system, so you no longer need to refer back to the Panorama 6 documentation for information about these procedures.

  • The Text Editor Object now allows you to set up multiple event actions simultaneously by inserting labels into your event handling code. For example, you can have code that handles both starting and finishing editing, before you could do one or the other but not both. Here is an example that uses this new feature to time how long the user spends editing a field (like a stopwatch).


  • Added new CloseDatabase statement, which makes it easy to close any database (not just the current database). This is especially handy for closing secret databases.

  • OpenFile "+database" now works even if the specified database isn’t already open.

  • If a secret window is active, the info(“windowname”) function now returns the secret window instead of the name of the currently visible topmost window. This now works the same as it did in Panorama 6.

  • New scopes( function returns a list of scopes that a variable exists in (local, fileglobal, global, etc.)

  • New scopevalue( function allows a formula to access a variable at any scope, even if it would normally be “hidden” by other variables with the same name. There were already functions to do this localvalue(, etc.) but the scopevalue( function allows the scope to be determined at runtime without needing an execute statement.

  • New function htmlcolorarray(, generates a text array of HTML colors that gradually transition from one color to another.

  • Fixed problem of dialog sheet jumping to wrong window when using Print, Page Setup, and Save As commands.

  • The monthmath( function now works properly with negative delta values.

  • Fixed the time( function so that it will correctly handle times from 12:00 to 12:59 (with no am/pm, so should be in 24 hour format).

  • The Morph Field Dialog now works correctly when the «Current Field» option is used.

  • The constructlistmatrix statement now works even if the template contains a line of spaces (it simply ignores such a line, just like a completely blank line).

  • The View Organizer context menu (right click) now includes a Move to Trash option. Also, the background is a darker gray, so the trash can is more visible.

  • A Web Browser Object can be configured for literal mode or formula mode. In literal mode, fields and formulas can be substituted into the text. In this mode, Panorama thinks any text inside { and } characters is a Panorama formula. However, this is a problem if you have inline CSS, which also uses { and }, or embedded JavaScript, which also uses curly braces. These features were not working because Panorama was trying to merge in the formulas. The best solution is really to switch to formula mode. However, Panorama now checks for errors in merged formulas, and if it finds any, it disables all field and formula merging. In other words, if you have inline CSS or JavaScript that uses curly braces, merging will not work. (In previous versions it was the opposite – merging would work but the CSS or JavaScript would not work.) If you need to merge in data AND use inline CSS or JavaScript, use formula mode.

  • Web Browser Object has a new option, RecalcAfterResize. This can only be enabled/examined using the object blueprint. When enabled, the object’s formula will be recalculated when the object changes size. This can be useful if the formula uses the objectinfo("rectangle","«»") to make adjustments based on the size of the object. Also, this option is usually enabled when displaying charts, the chart( function will automatically adjust the size of the chart if this is enabled.

  • The objectinfo( function can now easily access information about the object that is currently being displayed. Use the name «» to refer to this object. This allows this formula to automatically adjust depending on the object properties, for example the width or height. Note: This new option works with Text Display, Image Display, Web Browser, Segmented Button and Tab Panel objects.

  • The Text Editor Object prompt text feature is now automatically disabled when the horizontal scroll bar is enabled. (Perhaps some will debate whether this is actually a “fix”, but this is a non-standard feature, I’ve never seen another application with prompt text and a horizontal scroll bar, so I don’t think actually making this work, which will require extensive coding, is worthwhile.)

  • The DefineHotKeys statement has been fixed so that it works with global variables.

  • The ImportDictProcedures statement was completely broken, it was attempting to create a Panorama 6 style dictionary. Now updated for Panorama X and works as documented.

  • The SetFileVariable statement was incorrectly setting itself up as a synonym for SetFileGlobal. Because of this, the documented behavior of SetFileGlobal allowing the first parameter to be omitted did not work. Note: This fix won’t actually take effect until any code that uses this statement is recompiled with Panorama X 10.1 or later.

  • The SetFileGlobal and SetWindowGlobal now properly handle the last parameter (the value parameter).

  • The FormObjectBlueprint statement now allows you to omit the first two parameters, database and form. This is useful if you want to access the blueprint for a (possibly modified) object in the current window if the current window is a clone window. Before, you could not get this blueprint, only the unmodified blueprint in the underlying form.

  • Live menu definitions now accept carriage returns and linefeeds interchangeably (they used to accept only carriage returns).

  • Fixed error message that would come up when clicking on an empty row in the View Organizer wizard.

  • Some statements would not work properly if given a formula that consisted of a single variable name, especially some set, assign and define statements. These now work when used with a “bare” variable.

  • Panorama 6 allowed reloopif as an alternate spelling of repeatloopif, and now Panorama X allows this also.

  • The Find/Select Dialog now strips defaulttext( out of numeric and date search formulas, for example Debit > val(defaulttext("0","0") now becomes simply Debit > 0. The defaulttext( function was used to prevent errors if a search item was left empty. Now this function is replaced in advance with the actual value, or the default value if an item is left empty. As a user you won’t usually see this change, but performing this replacement in advance makes the search run faster, and if the recorder is turned on, the recorded code is a lot easier to understand (you can see the difference in recorded code). This code can also appear in chart(, crosstab( and summarytable( functions, which also benefit from the cleaner code.

  • When opening a View-As-List form, Panorama X will no longer crash (actually, ObjC runtime error) if the Data tile has negative height.

  • The DropImagesFromFinder statement now works correctly when the currentrecord option is set to yes.

  • The DropImagesFromFinder statement now ignores clicks on the drag receiver object, instead of stopping with an error.

  • Now correctly determines local system date format even if system date format is set to use four digit year format.

  • The ActiveGrid statement now checks to see if the active form is set for fileglobal or windowglobal variables. Any variables it creates will match the type used by the form (previously it would always create fileglobal variables, so it couldn’t be used with clone windows).

  • In the Site License wizard, added Continue Free Trial button to the New Account panel. Hopefully this will discourage users from starting a new account when they really want to continue using the free trial. Also clarified help language about not needing to create an account until after the trial is finished.

  • Fixed confusing typo in the Form Object Blueprint dialog.

  • In the Numbers documentation page, see also links for eulersconstant(, pi(, nth( and scientificnotation( now work correctly.

  • Panorama X will now run correctly on a case-sensitive file system.

  • Updated documentation with user submitted corrections since Dec 2017, including Michael Kellock, David Thompson, Gary Yonaites, Craig McPherson, Thomas Cooper, Eric Werner, Kurt Meyer, and Bruce de Benedictis.

I tried to upgrade. Went through normal dialogs of downloading, install, etc. PanX crashed. When I reopened, it was still build 2311, but the doc I was using won’t open. Crashes immediately, so I can’t restore from previous versions, either. Had a backup from last night, thankfully. I may try again with nothing open. (?)

Strange. GetInfo still shows PanoramaX (2311), but version says 10.1. About PanX also says v10.1, with correct build (2970). When I had initially restarted, after the upgrade failed, the computer hung up, so I had to do a force quit. After that PanX twice told me I was up to date with v.10.0.1 when I clicked ‘Check for Updates’. Now it says as above. Thinking I should get a fresh copy. (?) Tried to open lost file with previous Pan version, no luck. :-/

Make that Build 2790. :wink:

This is beyond awesome and much more than I hoped for! Jim, you’re amazing. FWIW, I downloaded this and ran it with no problems whatever.

1 Like

I am observing that the Summary Workshop and the summarytable( function appear not to work with field names containing spaces or some non-alpha characters (eg, underscore ok, but minus sign won’t work). This is true even when the field name is correctly quoted. [Mac OS 10.13.6, PanX 2790]

This was reported on another thread. I have fixed the problem with the Summary and Crosstab workshops, the fix will be in the next release.

The summarytable( function works fine – however, you are quoting a formula, not a field name. So that means you have to put chevrons around the field name (but inside the quotes). Note that the summarytable( function can use formulas for groups, or totals, etc., you are not limited to individual fields. The same is true of crosstabs. So for example you could group by

City+", "+State

if you wanted to (of course the whole thing would have to be quoted).

1 Like