Version 10.2.0 b22 (released October 6, 2021)

Changes in this beta release include:

- New Object Value dialog (Graphics Mode) displays the raw text result of formulas embedded in the selected object. This makes it much easier to diagnose formula problems in a graphic object, especially graphic objects that don’t normally display the formula result (Image Display, Web Browser, Popup Menu, etc.) See Diagnosing a Formula embedded in a Form Object.
- When you open a database, Panorama normally opens up the same windows that were open the last time the database was used, so you can get right back to work where you left off. However, you might want to set up a database so that it always opens to certain specific windows, no matter what windows you were using before. You can now use the Database Options “Initial Windows” list to explicitly specify which windows should be opened when the database is opened. You can also now specify “Initial Dimensions” for each form, if specified, the form will open to these dimensions instead of to its previous location. See Newly Opened Database Window Arrangement to learn how to set up the exact arrangement and positions of windows that appear when a database is opened and when a form is opened.
- New instrumentation options to record all procedure triggers (both explicit and implicit) and to record control flow statements (call, farcall, execute, return, etc.). If some code is malfunctioning but you’re not sure where, this helps you to quickly track down what section of code is causing the problem. See Recording Code Triggers in Debug Instrumentation.
- New diagnostic mode allows you to open a database but temporarily disable all implicitly triggered code (.Initialize, .CurrentRecord, .ModifyRecord, etc.). This allows you to work on the database even if your implicit code has an error or problem that would normally interfere with using the database. See Opening a Database in Diagnostic Mode.
- The define statement will now work with global variables.
- New implicit form actions: formGRAPHICSMODE: and formDATAMODE: allow custom code to run when switching in and out of graphics mode. Please keep your code short and don’t make it do something weird!
- It is now impossible to set a procedure name to multiple lines of text (it used to be possible to do this by pasting). Now, if you paste in a multiple line value only the first line will be used. Note that the extra lines are not stripped out until you press Enter or click outside the procedure name editing area.
- The Relation dialog now correctly reports an error if you test the relation but the relation is not set up properly (for example it is missing a key).
- Relational operations no longer crash if the key field hasn’t been specified (instead they now generate a proper error message).
- Added key icon to table headers in the Relations dialog
- Added instrumentation to the CustomStatement class. This can log all custom statements, however, if the first line of code in a custom statement procedure is the classified statement or the hush statement, the custom statement will not be logged.
- Added instrumentation to various control flow statements – Call, Callwithin, Farcall, FarCallWithin, Goto, Execute, Return, Shortcall, Stop. Note that if a subroutine is called that the user isn’t authorized to see, the instrumentation log will show REDACTED instead of the actual procedure name (applies to various call statements).
- The Form Event code in the Help window now uses a label (formOPEN:) instead of the old trigger system. So it won’t run any code for activation or resizing. Side effect - the Help window no longer uses any CPU time when it is not the frontmost window.