Version 10.2.0 b21 (released September 20, 2021)

Changes in this beta release include:

- Mouse clicks and keyboard events are now locked out while any procedure is running. Note that if you click on a window that is in the back while a procedure is running, the window will come forward, but it will not become active, and the procedure will continue to run with the previous window as the active window (even if it is invisible behind the newly frontmost (but not active) window).
- Procedure loops can now be aborted by pressing SHIFT-COMMAND-ESCAPE (see Preventing Endless Loops). Aborting of loops can be disallowed by using the disableabort statement, or by checking the Prevent early abort of procedures in this database. option in the Database>Options>General panel (both of these methods also disallow aborting a loop by exceeding the maximum timeout). Loop aborts are disabled in all Panorama library code.
- It’s now possible to enable/disable the close box of the current window on-the-fly, by using the setwindowoptions statement (can also be disabled with openform). The windowinfo( function can be used to find out if closing is enabled. In addition, window closing is automatically disabled when a procedure is running (though of course the window will close if the closewindow statement is used).
- While a procedure is running, any keystrokes that are pressed are temporarily ignored (so that they won’t interfere with the code that is running), but the keystrokes are saved and then processed when the procedure is finished (or when it pauses). If you don’t want that to happen, use the new ClearTypeAhead statement, which causes all saved keystrokes to be tossed out.
- Panorama now disables all menu items when a procedure is running. Most menu items will display as dim, but we couldn’t get some to do that (About Panorama, Open File, New Form, New Procedure, Panorama Help). For those menu items that aren’t dim, they will simply beep if chosen. When the procedure finishes, menu appearance and operation return to normal.
- Panorama dialogs now reliably support typeahead. For example, you can press Command-C/Command-F/Command-V to copy the current cell, open the Find/Select dialog, then paste in the cell contents to search for it. This will now work no matter how fast you type the keys.
- In a form, pasteboard operations (cut/copy/paste/delete) are no longer allowed unless the form contains at least one data cell. (Incidentally, this will fix the problem of pressing Command-V too soon after Command-F causing the contains operator to disappear from the Find/Select dialog.)
- Implemented the delay statement (this previously existed in Panorama 6).
- New info(“eventtype”) function allows code to find out whether the most recent event was a mouse click, key press, or something else. Especially useful when used with a Text List, where multiple event types can trigger the code.
- Fixed random crashes in sort, group, join, assignment, and automatic calculations.
- Fixed crash that could happen when a text list displays fields that are also edited on the same form. The crash could happen if no text list row is currently selected.
- Fixed crash that could occur when clicking on a Text List or Matrix with database navigation enabled.
- Ensure that procedure error alerts are always displayed on the main thread, even if the procedure code is running on a background thread. (In previous versions, this situation would cause a crash instead of displaying the alert.)
- Eliminated intermittent crash in functions: callingdatabase(, callingprocedure(, callwithindatabase(, info(“procedurestack”) and error handling code.
- Prevent endless recusive loop inf OnError code itself contains an error.
- The Error Wizard now ignores subsequent errors if the Error Wizard is already open.
- The standardinstrumentation( function no longer chokes if there is no window open (for example when quitting). Also you now get a proper error message if you attempt to enable instrumentation coverage on a non-procedure window (i.e. data sheet or form). Note: I believe this bug was sometimes triggered when Panorama quits.
- No longer goes into an endless recursive loop if an error occurs in formula code. Also no longer tries to update the menu bar when Panorama is in the process of quitting.
- Fixed crash that would occur if an error happened in dialog code and the PXErrorHandling preference had never been set.
- Fixed crash that could occur if you attempt to print a Drag Receiver object.
- Panorama Software Update download no longer gets confused if user clicks on another window during the download, or even closes the updater window (in that case it will ask to re-open the window when the download is complete).
- When constructing a Text List, the header option now defaults to NO if only one column is displayed in the list. If two or more columns are displayed, it defaults to YES.
- Fixed the SuperChoiceDialog and SuperGetPassword options captionfont=, captionsize= and captioncolor= options. Corrected the help code examples for using caption options with these two statements.
- The Site License panel now allows you to create custom plans, making it easy to purchase more than 60 months at a time.
- The Site License History panel now reports all kinds of purchases, not just additional license extensions. (For example, it supports purchases of video training courses.)
- New shopping cart in Video Training wizard enables purchasing video courses from within Panorama.
- New general purchase form, allows ad-hoc payments to ProVUE Development. There is no menu or button to open the purchase form, you must be sent a special link from ProVUE Development to access this feature.