Version 0.1.003 (released December 2nd, 2012)
This version introduces database features for the first time, including the data sheet. To open a database, press the Open Database button in the RagelUnicode window. In the data sheet you can scroll to view data, insert and delete records and edit data. The Select button opens a dialog that allows you to enter a selection formula.

Let me emphasize that most of the user interface is currently primitive scaffolding that is incomplete and in many cases will eventually be replaced altogether. Obviously the current tool bar is primitive and nonstandard. The cell editor doesn’t have any of Panorama’s special editing tricks and will eventually be completely replaced (tabbing also doesn’t scroll correctly). Other than the Window menu, the menus are incomplete and don’t work anyway. There’s currently no indicator that shows what column is currently selected – I’m not sure how that is going to work but I’ll have to come up with something.

In addition to the minimal user interface, you can also type formulas or procedures into the RagelUnicode window. For example there is currently no user interface for sorting, but you can sort a mailing list database by last name by typing in the following procedure and pressing the Run button:

    field Last
    sortup

If you open up a really large database, you may see a delay before it opens. For example, I have an 80,000 record database that takes 3 seconds to open. When I first saw this delay I was disappointed, but then I realized that Panorama is actually importing this file, not opening a native file. At the moment there is no save command and no way to create a native file for this new version. It currently opens only Panorama 6 files, and automatically imports them and converts them to the new format, which is the cause for the delay.

In general I have not yet done any benchmarking for speed with this new version. It’s possible that the new version may be slower than Panorama 6 at some operations – it’s doing a lot more internally in terms of handling unicode characters, etc. On the other hand, the current version is not fully optimized for speed yet, so it should get faster, and it does seem like it is probably fast enough already.

In addition to the new user interface, there are also 45 additional statements and functions implemented in this new version. These are described below.

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

- choosefiledialog -- The choosefiledialog statement displays a modal dialog allowing selection of files or folders.
- gettextokcancel -- The gettextokcancel statement displays a modal dialog that asks the user to enter an item of text.

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

- arraybuild( -- The arraybuild( function builds an array by scanning a database and creating an array element for every record (including invisible records) in the database (see Text Arrays).
- arrayselectedbuild( -- The arrayselectedbuild( function builds an array by scanning a database and creating an array element for every visible (selected) record in the database (see Text Arrays).
- dbinfo( -- The dbinfo( function gets information about a database: what forms it contains, what fields, what flash art pictures, etc.
- deleterecord -- The deleterecord statement deletes the currently selected record.
- field -- The field statement tells Panorama to move to the specified field for the current record.
- formulafill -- The formulafill statement fills every visible cell in the active field with the result of the specified formula.
- info("serverrecordid") -- The info("serverrecordid") function returns the unique ID number for the current record.
- intersectionrectangle( -- The intersectionrectangle( function creates a rectangle by combining two rectangles. The new rectangle is the area where the two rectangles overlap (if any).
- rbottom( -- The rbottom( function extracts the position of the bottom edge of a rectangle (see rectangle(, Graphic Coordinates).
- rectangle( -- The rectangle( function defines a rectangle from four dimensions.
- rectanglesize( -- The rectanglesize( function defines a rectangle from its upper left hand corner and its height and width.
- rheight( -- The rheight( function extracts the height of a rectangle (see rectangle(, Graphic Coordinates).
- rleft( -- The rleft( function extracts the position of the left edge of a rectangle (see rectangle(, Graphic Coordinates).
- rright( -- The rright( function extracts the position of the right edge of a rectangle (see rectangle(, Graphic Coordinates).
- rtop( -- The rtop( function extracts the position of the top edge of a rectangle (see rectangle(, Graphic Coordinates).
- rwidth( -- The rwidth( function extracts the width of a rectangle (see rectangle(, Graphic Coordinates).
- select -- The select statement makes visible only those records for the active database for which the specified condition is true.
- unionrectangle( -- The unionrectangle( function creates a rectangle by combining two rectangles. The new rectangle is large enough to exactly cover both of the input rectangles.

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

- addrecord -- The addrecord statement adds a new record at the end of the current database.
- downrecord -- The downrecord statement moves the cursor down one visible record.
- exportline( -- The exportline( function generates a tab delimited line of data containing all the fields in the current record.
- firstrecord -- The firstrecord statement makes the first visible (selected) record in the database the active record.
- info("availablescreenrectangle") -- The info("availablescreenrectangle") function returns a rectangle defining the edges of the main screen, after deducting for the space of the menu bar and dock (if visible).
- info("bof") -- The info("bof") function returns true if the active record is currently on the first visible (selected) record.
- info("databasename") -- The info("databasename") function returns the name of the current database excluding any filename extension (if any).
- info("eof") -- The info("eof") function returns true if the active record is currently the last visible (selected) record.
- info("fieldname") -- The info("fieldname") function returns the name of the current field.
- info("files") -- The info("files") function returns a list of all open database files.
- info("records") -- The info("records") function returns the total number of records in the current database.
- info("screenrectangle") -- The info("screenrectangle") function returns a rectangle defining the edges of the main screen.
- info("selected") -- The info("selected") function returns the number of selected records in the current database.
- info("stopped") -- The info("stopped") function returns true or false depending on the whether the last uprecord, downrecord, left or right statement succeeded or failed.
- info("visible") -- The info("visible") function returns true if the current record is visible and false if it is invisible.
- insertrecord -- The insertrecord statement inserts a new record above the current record.
- lastrecord -- The lastrecord statement makes the last visible (selected) record in the database the active record.
- opensheet -- The opensheet statement opens the data sheet window for the current database in a new window.
- removeunselected -- The removeunselected statement deletes all unselected records from the database.
- selectall -- The selectall statement makes every record in the database visible.
- sortup -- The sortup statement sorts the database by the current field. The database is sorted in ascending order (low to high).
- unlockrecord -- The unlockrecord statement unlocks the currently active record.
- uprecord -- The uprecord statement moves the cursor up one visible record.
- zeroblank( -- The zeroblank( function tells Panorama to treat zeroes as empty space.

ALL features that were added or changed in this release:

- addrecord -- The addrecord statement adds a new record at the end of the current database.
- downrecord -- The downrecord statement moves the cursor down one visible record.
- exportline( -- The exportline( function generates a tab delimited line of data containing all the fields in the current record.
- firstrecord -- The firstrecord statement makes the first visible (selected) record in the database the active record.
- info("availablescreenrectangle") -- The info("availablescreenrectangle") function returns a rectangle defining the edges of the main screen, after deducting for the space of the menu bar and dock (if visible).
- info("bof") -- The info("bof") function returns true if the active record is currently on the first visible (selected) record.
- info("databasename") -- The info("databasename") function returns the name of the current database excluding any filename extension (if any).
- info("eof") -- The info("eof") function returns true if the active record is currently the last visible (selected) record.
- info("fieldname") -- The info("fieldname") function returns the name of the current field.
- info("files") -- The info("files") function returns a list of all open database files.
- info("records") -- The info("records") function returns the total number of records in the current database.
- info("selected") -- The info("selected") function returns the number of selected records in the current database.
- info("stopped") -- The info("stopped") function returns true or false depending on the whether the last uprecord, downrecord, left or right statement succeeded or failed.
- insertrecord -- The insertrecord statement inserts a new record above the current record.
- lastrecord -- The lastrecord statement makes the last visible (selected) record in the database the active record.
- opensheet -- The opensheet statement opens the data sheet window for the current database in a new window.
- Release Notes -- detailed list of what's new in every Panorama X version.
- selectall -- The selectall statement makes every record in the database visible.
- unlockrecord -- The unlockrecord statement unlocks the currently active record.
- zeroblank( -- The zeroblank( function tells Panorama to treat zeroes as empty space.

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.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.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)