Version History

From BKeeney Shorts Documentation
Jump to: navigation, search

Version 2.0.9

15 January 2019


  • Align: Justify text! (#3627)
  • Report Designer can now copy and paste! (#3691)
  • Method to tell the DynaPDF renderer where to look for custom fonts
  • Report Designer bands with a Band Script now offer an indication in the designer (#3701)
  • Schema Zapper will remove the DB schema from the JSON for manual template changes (#3632)


  • Running in HiDPI in Windows using Xojo 2018 R3 now shows report preview in proper clarity
  • Report Designer no longer nags about deleting items that can be undone
  • Designer window positioning suggested by container event for better scoping
  • Standardized naming on winReportDesigner
  • DesignCanvas.GetUniqueName is now more smart
  • DBWrapper.DatabaseFile is now DBWrapper.SQLiteDatabaseFile for consistency
  • ReportBKS no longer redundantly loads styles to the global styles dictionary
  • PAF_PrintKit.DictStyles is now protected for clarity in code


  • PreviewCC Mojave / 2018R3 & R4 graphical glitch workaround
  • Reports where the page header is empty no longer have multiple page positioning issues
  • Added Numeric and Decimal datatypes for PostgreSQL, maps to Double
  • Views now show up in the Manual Relations editor (#3731)
  • Designer window will no longer reposition if the report template positioning doesn't fit onscreen (#3651)
  • Fixed localization mismatch in the navigator (#3851)
  • DBWrapper no longer assumes SQLite databases have a database file (#3694)


  • PAFConfirm function, please use the modGlobals.Alert function instead
  • winReportDesigner no longer has a Placard control
  • PAF_DatabaseKit.CreateDatabaseFile function, it served no purpose in the Shorts project

Version 2.0.8

25 October 2018


  • DesignerCC.OpenReport now returns its success as a Boolean


  • Removed FTC and RTF support from Shorts (#3716)
  • winReportDesigner.Visible is now default False
  • Improvements to winReportDesigner toolbar / tool item handling
  • DefaultStyle is now a function returning a consistent default style
  • DesignerCC will no longer override the window title - it now raises an event
  • Can no longer delete bands outside the band editor by defualt
  • PrinterSetup simplifed to fix a UX issue (#3672)
  • HandleExportHTML method rewritten to be sandbox friendly
  • ReportBKS.ScrubSQLArray replaces conditions with RegEx for consistency
  • DBWrapper ensures it's DBInfo child has an instance of the DB (#3679)
  • Designer window now has a File > Close (cmd-w) menu item (#3652)
  • Report Template version number incremented due to a JSON change with styles
  • Localizations updated


  • SetToolbarItem can no longer cause OutOfBoundsException
  • French translation of "Text" is no longer "Send a SMS"
  • Navigator selection is not lost in rare cases (#3670)
  • Changing paper setup no longer creates too many undo levels
  • Can no longer enter negative page numbers in the report viewer (#3673)
  • Contextual clicking outside of a single selection no longer causes NOE (#3676)
  • Reports can no longer be run with no Database Fields to request data, preventing SQL errors
  • Fixed image resolving issue (#3687)
  • Fixed constant editor window title
  • HandleExportHTML no longer causes uncaught exception when cancelling (#3698)
  • Filter conditions no longer cause SQL errors with unescaped characters
  • Backward compatible styles loading now more robust
  • Corrected an issue with server constants and plugins
  • Fixed a couple of Mojave drawing glitches.

Version 2.0.7

29 May 2018


  • Mouse offset handling fixed
  • Lines can be nudged up with arrow keys
  • Layer change contextual menu items now enabled / disabled as appropriate
  • Layer changes no longer occasionally cause OutOfBoundsException
  • Designer will offer to fix some malformed report templates
  • Report Templates now contain the full Shorts version
  • Workspace bounds no longer incorrect toward the bottom of the report

Version 2.0.6

21 May 2018


  • Report Designer items can now be locked in place
  • Selecting an object in the designer will now select it in the "navigator"
  • Can now check if the user has set any manual foriegn keys


  • BKS_Shorts.ImageItem now handles being given an ImageSet instead of a Picture
  • Report Designer: Filter Conditions window workflow now more straightforward
  • Dynamic Parameters request window now sizes properly, and can have a maximum height
  • Dynamic Parameters setup maintains selection when updating (Issue #3631)
  • Refactored to simplify a lot of PAF code
  • Removed redundancies and unnecessary copypasta code
  • Moved BuildSchemaMenuCompact to PAF_DatabaseKit.DBWrapper


  • pfDispatcher has been removed. It's functionality has been implemented as Events


  • Tabbing through the property list works!
  • Designer can get data from case sensitive MySQL and PostgreSQL databases
  • Designer no longer completely fails to connect to PostgreSQL with the above fix
  • PostgreSQL no longer chokes on reports with filters (#3584)
  • Static images that can't be resolved are no longer rendered in PDF (Issue #3589)
  • DynaPDF renderer now respects transparent images (Issue #3585)
  • Report Footer no longer loaded as a header (Issue #3595)
  • QueryCondition strings now handle Boolean field types
  • Dynamic Filter Edit button now properly draws if the row is selected on the Filter Conditions editor
  • Dynamic date filters now work properly by date and not datetime
  • Fixed issue with SQL generator that resulted in an extra "("
  • Updating dynamic filter conditions no longer loses optional setting
  • Data filter conditions will no longer ungroup themselves at random
  • ORDER BY clauses are less likely to destroy a column name with the string of characters: "desc"
  • Setting a non-date value as a default for a dynamic parameter that's a date will no longer cause an exception
  • Selecting a SQLite favorite no longer leaves server connection details open
  • Fixed an issue that would cause the schema to be slimmed to only report tables after running in the designer
  • Database Connection window no longer allows connection to an unsupported database type by selecting a favorite
  • Where conditions are no longer destroyed by running the report while designing
  • Can adjust properties on multiple items again (#3582)
  • Alternating rows no longer have color bleed (#3635)
  • Can now properly generate SQL with MS SQL Server through ODBC

Version 2.0.5

02 October 2017


  • PreviewCC now has a ReportFinished event
  • Report Designer Help menu item that goes to the documentation
  • BandType constants in PAF_PrintBand
  • Datestamps in the header and footer can now be formatted individually (#3572)


  • Ease of installation improvements
  • Code demo window order of operations, design, and reports improved
  • BKS_Shorts.ImageItem constructor copies over aspect ratio boolean
  • Moved the PAF_PrintKit.StylesLoad call from App.Open event to winReportDesigner.Open event
  • Moved Designer Constant "Page Placeholders" (Timestamp, PageNumber, PageCount) into constants of ReportBKS
  • Property list uses shared disclosure triangle drawing method now
  • Property list draws backgrounds for disclosure triangle and ellipsis to fix overlap issues
  • Removed workaround for 64 bit text splitting as the issue has been marked as fixed in 2017r2 (#3567)
  • Removed "ReportRun" notification sent through pfDispatcher, replaced with ReportFinished event on the ContainerControl
  • Removed global setting for date formatting for header and footer, fields can now be individually formatted
  • winReportDesigner.HandlePrint will now properly show the printer dialog for each print, as a user expects.
  • winDBConnection Password no longer a required field to attempt a connection
  • Added constant to recognize, or ignore, MS SQL Server (for future release).


  • DynaPDF Renderer now draws images properly in high resolution
  • Enum properties in the property list no longer have empty first value (causing KeyNotFoundException when selected)
  • Report Designer no longer leaves on an extra "g" when finding the app name automatically (only affects Debug environments)
  • Email PDF example protected against bad SSL settings
  • Constants no longer get drawn several times in the designer (#3578)
  • Error properly reported if no rows are returned from a SQL error
  • winDBConnection will no longer show an empty MsgBox when connecting to some database types
  • Image scaling no longer refuses to scale up, this improves how low resolution images are handled
  • SC_GetCount works again
  • Aggregates with body rows of repeating data (i.e. 2nd row data the same as the first and so on) works properly now

Version 2.0.4

19 July 2017


  • Super Simple Example project demonstrates the basics of using the core classes
  • Checkbox field type for boolean data


  • Various improvements to the Property List for ease of use
  • Updated PrintField SerializeJSON to use UInteger in preparation for 64bit
  • BKS_Shorts.Settings.kUseBarcodePlugin now defaults as False
  • OrderBy is now a menu to prevent malformed data (#3519)


  • Checkboxes in the property list are now much easier to click on Windows (#3535)
  • Property list text fields no longer float when the property list scrolls
  • AlternatingList now draws properly on Linux, and code was simplified
  • Removed Special/Any filter on select file dialogs, this fixes selection on Linux
  • Removed AutoAlias from AddField method, this was creating invalid Aliases as we changed the way we use Alias in Shorts 2.0
  • Multiple fields in ORDER BY handled properly in the schema identification process (#3537)
  • Report Header with PageBreak no longer adds extra headers on the second page (#3538)

Version 2.0.3

07 June 2017


  • Designer: Wrap lines without allowing the item to grow (#3419)
  • Designer: Text fields can now have borders (#3486 #3437)


  • Database Type detection moved in to SQLGeneratorBKS.Generator
  • Removed global PAF_DatabaseKit.bIsPostgres
  • GroupItemPF.HasItems no longer counts empty text items
  • Report template now only stores the database fields used (#3281)
  • Designer is no longer tied to App object with constants and methods (#3487)
  • Designer can now discern the app name by itself
  • Designer propery list now scrolls when it's too long


  • Body Band Limit works (#3505)
  • Line wrap drawing code in the designer now wraps properly
  • SQL Generator no longer chokes on more than 2 data filters (#3501)
  • Suppress duplicates no longer suppressing fields it shouldn't
  • Previewing a report in the Designer no longer briefly shows the last report run
  • Connection window no longer shows the same error message twice when SQLite fails to connect

Version 2.0.2

18 May 2017


  • Added an email PDF example.


  • Duplicate suppressing is now handled through BKS_Shorts.TextItem.FieldName instead of the Tag
  • Changes made to DynaPDF renderer to allow it to email a PDF.


  • Band scripts work again
  • Port field visible when available
  • PostgreSQL databases work again

Version 2.0.1

02 May 2017


  • CSVRenderer now part of the project again
  • "Create Multiple Fields on Right" works again
  • Text items (and fields) now draw in the designer if there is no Data (they will use their UID instead)
  • Text items that are supposed to be invisible are now invisible on alternating backgrounds
  • Fixed rare issue with multiple selected items and the property list saying "No Selection"
  • Fixed issue with multiple-level deep break bands starting over prematurely
  • Fixed issue with SC_GetCount

Version 2.0

26 April 2017


  • Added Report Header
  • Added Report Footer
  • Now allows database fields in Report and Page Headers and Footers
  • Completely rewritten SQL engine that makes reports with a lot of groups faster
  • Field aggregates (sum, min, max, average, count) are now handled by the report rather than queried.
  • Barcode Fields (requires BarcodeGeneratorMBS from Monkeybread Software)
  • Project comes with a converter for On-Target Reports
  • Numerous bug fixes and tweaks


  • Aggregates in the report are calculated internally rather than via database queries
  • Designer Fields no longer offer IsFunction - Use a Database View instead.
  • Designer Fields now offer different types of handling for data (Barcode, Picture, etc.)
  • Images can now optionally retain their aspect ratio


  • SQL generation is now more efficient as it no longer generates SQL for each band
  • Auto Text Height calculation improved on Mac OS 64-bit
  • Line widths in PDF output now handle hairlines and other non-integer values
  • Fixed endless Undo Margins
  • Fixed random line showing up on HTML output
  • Fixed a crash that would occur after editing a text property the second time the designer window was opened

Version 1.8.1

11 January 2016


  • French localizations


  • When rendering the report, you can now pass in a dictionary of your own to override constants found in Report File. If no dictionary, then it uses the constants from the report.

Bug Fixes:

  • Can now resize bottom bands in reports with several breaks.
  • Grand Summary Bands work again.
  • Mouse drag select now works properly over several bands again.
  • Dragging items in multiple bands now works better.

Version 1.8.0

27 December 2016


  • Added Informix to the list of databases
  • Uses the SQL Plugin from MonkeyBread Software. Requires additional license purchase from MBS.
  • Added Constants to the tool. Essentially a Dictionary that allows a user to add constants to a report without having to put it in a database table.
  • Constants show up in the Tool List
  • Constants Editor is invoked under the Report menu in the Demo
  • Constants are saved in the JSON string and can be changed at runtime before rendering
  • Constants are by report. Please let us know if you want global constants.
  • Added the ability to have nested conditional statements in the filter data option of Report Designer.
  • Added two integer properties (Leading and Trailing) to PAF_DatabaseKit.QueryCondition
  • Required to include these in SerializeJSON, Constructor, and Clone methods
  • Updates to winDBFilter adding a mousedown event and UpdateList method. Also modified Display method to accomodate the nested conditions
  • Update to winDBFilter added pushbuttons to add, remove and clear groupings.
  • update to winDBFilter added headerpressed event to prevent sorting of clumns in listbox so logic is not changed


  • Added graphics to the primitive elements (line, rect, oval, image, text) you can drag to the design canvas
  • Removed the metadata shortcuts.
  • Turned off sorting filters by column in winDBFilter to prevent changes in filter logic
  • Changed location of Sakila (example database) download location.
  • Resize item behavior changed a bit from previous version. WANT FEEDBACK.

Bug Fixes:

  • When rendering directly from JSON string the DB schema isn't rescanned unless necessary.
  • Exporting to CSV not brings back all rows.
  • When changing a text format to an already existing style, the stylename was not being updated, thus in some cases causing the style to revert to the default.
  • This was a particular problem when saving a report and then printing directly to a PDF.
  • Positioning of the items in the bands is now relative to the band rather than the page.
  • So setting an item to (0,0) will put it to the top/left of the band it's assigned rather than moving it to top/left of the page.
  • Fixed issue with Encoding of special characters. (Thanks to Valdemar De Sousa)
  • May have found the issue causing occasional hard crash. Had to do with updating the Property List after it had already been dismissed.

Version 1.7.3

08 September 2016


  • Added Page Setup: Page Orientation to Toolbar
  • Added Page Setup: Page Size to Toolbar
  • Added Page Setup: Margins to Toolbar
  • Added "Drill Down" Report using Chinook database.
  • Dragging an image folderitem onto the Designer automatically imports the image and adds it to the report.


  • Removed LeftRight Margin and replaced with Left and Right Margins
  • Removed TopBottom Margin and replaced with Top and Bottom Margins
  • Reworked the Margin system in the designer
  • Reworked the Margin system in the renderer
  • Blank report now respects new default margins
  • Added ObjectSelected event in the PreviewCC to mirror the event brought back in ctlViewer
  • Added some comments in code to help direct users when they don't have the DynaPDF plugin installed

Bug Fixes:

  • Now using Realbasic.Point rather than Point from Einhugur plugin.
  • Changing the size of the band also changes the End point Y of the line. Before it only changed Start Point Y.
  • Changing the UID of an object now updates it in the Object List.
  • Vertical Scrollbar in the Designer now works as expected.
  • Can no longer drag a db field from a body/break band to Header or Footer band.
  • Can now drag the footer band all the way to the bottom margin
  • Web Only - ?? now works again in header/footer

Version 1.7.2

30 August 2016


  • Added MetaData dictionary that you can pass into ReportPF. Anything Text field with % at start and end of string will be replaced with values from the meta dictionary.
  • Example: dictMetaDictionary.value("Name") = "Bob" is passed into ReportPF.
  • If I create a text item with the text %Name% it will be replaced with Bob.
  • If there is no match from the dictionary the resulting string is blank.
    • Note: the dictionary tag is case sensitive so "Name" and "name" are not equal. It must be an exact match.
  • Added mouse coordinates into designer window.
  • Added Don't Sort Column Names preference. When set, field names are no longer sorted.
  • Added FieldAddCheck event to allow developers to hide database columns from the field list.


  • Warning message given if user attempts to add db field to report header or footer.

Bug Fixes:

  • Added better mouse tracking on Line elements
  • If a DefaultStyle can't be found one is now created. Prevents an exception when saving.
  • Changed the Priority of the ReportThread. This allows MySQL reports to run again in Xojo 2016 R2.x releases.
  • Double clicking a Table/View Field in the object list will add it to the report body

Version 1.7.1

18 July 2016


  • Removed HierarchalListSelector from project as it was no longer being used.
  • Rows that have a field with CanGrow set to true no longer affect positioning of other items in row.

Bug Fixes:

  • Fixed a bug in grouping when using PostgreSQL.
  • Fixed bug getting field types from ODBC Databases.
  • Fixed issue with Web Dynamic Date Picker
  • Moving items with keyboard now updates the property list
  • Items in the report object list can now be deleted when using the delete/backspace key
  • Fixed issue with not being to select the 2nd half of a line after generating a report
  • Fixed issue with Line formatting in generated reports
  • Fixed issue with reloading manually entered table relationships
  • Fixed an issue with row items stacked vertically with a Text item set to CanGrow
  • Fixed issue that Text Items set to grow didn't have its background expand accordingly

Version 1.7.0

01 July 2016

New Features:

  • Added SupressField property to Fields. This will keep rows with identical text to the row above it from displaying. Resets on each page.
  • Added ?? shortcut to Header/Footer bands to be able to put report parameters into the report. Feedback appreciated.
  • Added check upon opening reports in the designer to see if all fields in the report are still valid.
  • Now provide an error message to user if there were any errors while generating report.
  • Added a Version field to the report to make it easier for future file format changes. New file format is 1. Added a conversion routine to convert to version 1.
  • The Property List now has a dedicated popup menu for Date fields.
  • The Query List Dynamic queries can now be made optional to ‘select all’ for that field.


  • Now provide feedback to the user during report generation. This will give rough estimates of numbers of rows created.
  • When switching back to Design view we now make sure the thread generating the report is killed if still running.
  • Major rewrite to the DBWrapper class to make it much more effecient.
  • PAF_QueryCondition made part of the PAF_DatabaseKit and renamed to PAF_DatabaseKit.QueryCondition
  • Reports will save the DefaultStyle from the StylesList.
  • Added some Localization strings into the object list.
  • Removed the Contextual Menu from the Property List format item. Only used for Dates and it now has dedicated Date Popup.
  • Added a WaterMark to two of the Coded reports.

Bug Fixes:

  • Fixed issue where Grand Summary bands weren’t working.
  • Views are now properly vetted through the TableViewAddCheck.
  • Rescanning the schema will refresh the object list properly now.
  • Can no longer drag a report objects (from the Report section of the Object List) into the designer. Now you can only drag fields and report primitives.
  • Repeat Each Page and Page Break are now only valid and displayed for group headers.
  • Adding/Removing items from the Designer now updates the Report Objects section of the object list.
  • Fixed wording in the Band Editor.
  • Background Text Color now saved properly in Style editor.
  • Pressing Enter/Return while in the Properties List will update the object in the Editor.
  • Fixed issue with report time in Report Footer if user had never set format in preferences.
  • Fixed issue with line objects not calculating their top/right property properly.
  • Fixed a date conversion issue when formatting the dates to other than default.
  • Fixed mouse handling and drawing issues when the canvas width was smaller than the page width.
  • Fixed Report window Title not showing on initial save of report in designer.
  • Fixed odd random Nil Object Exceptions when updating from the property list.
  • Fixed the WindowMenu class to work with multiple menu bars used in the project.
  • Fixed issues with the IsFunction property when generating reports.

Version 1.6.0

27 March 2016

  • Dynamic Runtime Query variables. Allows the report designer to ask the user what values they want at runtime. Current paramters types::
  • Boolean value using a Checkbox
  • String value
  • Numeric (integer and double values)
  • User List (popup)
  • Query List (popup)
  • Date, DateTime, or Time
  • Moving items via the mouse will immediately update the save status on the Toolbar
  • Changing Filter Data will update the save status and undo status
  • Undo now works for changing of filter data.
  • Added Filter Data to report designer Toolbar
  • Added an ObjectSelected event on the BKS_ShortsBaseViewer that will pass back the clicked BKS_Shorts.Item and if there is one, the BKS_Shorts.GroupItem. This will allow you to implement a drill down report.
  • Invisible TextItems are rendered in the background color to allow the MouseHit to bring back additional information in the group
  • Added a FieldName property to BKS_Shorts.Item and reports run through the Report Designer will fill that in at generation time. This allows the user to query what the field (if there is one) from the selected item.
  • Added OK/Cancel generic container for all dialogs
  • Bug Fix [Windows Only]: Now respect the number of copies specified for a print. Note that this is not in Shorts classes itself but how the supporting code prints.
  • Bug Fix: Fixed another instance where it was possible to NOT have a Default Style when generating a report.
  • Improved German localizations.
  • Moved About Shorts Designer Menu Item out of winReportDesigner
  • Bands that are marked as invisible no longer get rendered on the report.

Known Limitations:

  • Dynamic Queries do not work with IN clause in where statements.

Version 1.5.4

11 February 2016

  • Major code changes to allow most classes to work in web apps too.
  • Simply copy BKS_Shorts_ReportDesigner folder into your existing web project.
  • Delete PAF_PrintKit.DesignCanvas (desktop ScrollCanvas subclass)
  • Create a new PAF_PrintKit.DesignCanvas that is a WebCanvas subclass
  • Changing text values in the Properties List is now Case Sensitive
  • Added Portugese Localization
  • Added a commented out example of how to connect to MySQL without using the winDBConnection Window/
  • See winRPTViewer.Display
  • Fixed an issue that would cause the SQL statement to not be saved properly in the JSON string
  • Added a Default Style if none is in the local dictionary
  • How reports are saved so they can be viewed without first having to be in the designer
  • Cleaned up some localizations and made some more strings dynamic.
  • Made the Report Designer the default pushbutton in Demo Window
  • New Report opens a new Report Designer Window instead of copying the current connection. (this affected menu handlers in odd ways one wouldn't expect)
  • Created a Web Example

Version 1.5.3

28 Jan 2016

  • Added SC_GetCount in the Band XojoScript editor. This lets you get how many times this band has been shown.
  • Example of use is to have line numbers on your report without having to do it in SQL.
  • Updated German localization
  • Rearranged UI on ccPAF_Filter (Filter Data) to make it a bit more obvious
  • When a Text Item or Field Item is put on a report it will automatically use the "Default Style"
  • Fixed an issue where the Default Style wasn't getting passed to the generated report.
  • The Styles Editor now allows you to delete multiple Styles at a time.
  • Added a new example of how to print directly to printer without having to use the viewer.
  • Reconfigured Demo window to break between Report Designer stuff and older code-only stuff.
  • Added SC_GetCount Demo
  • Fixed some items in the HTML Renderer
  • In PAF_PrintKit.PrintText.constructor if there is no DefaultStyle we create one.
  • ReportPF will now extract Styles from the report definition file.

Version 1.5.2

14 Jan 2016

  • Started localization process and made dynamic strings. Spanish, French, and German are in the project. ***NEED HELP IN LOCALIZING***
  • Fixed issue with Bands Editor when trying to delete Grand Total Band.
  • Designer Canvas will no longer let you delete a Grand Summaries band. Must be done in the Bands editor.
  • If the report has a NULL date it will now create a blank string rather than use the field name. Changed in ReportPF.CreateItem.
  • Selected bands now highlight with background color. Color constant at PAF_PrintKit.PrintBand.kBandSelectedBackgroundColor.
  • Fixed an error in the PropertyList that would sometimes overwrite a Text value with a zero thus causing all sorts of havoc with reports.

Version 1.5.1

08 Jan 2016

  • Added a new demo of how to create a report from just the report definition
  • Comes with MySQL, PostgreSQL, and ODBC enabled. CubeSQL still requires changing the constant
  • Bug fixes

Version 1.5

Jan 2016

  • Introduction of Report Designer
  • Integration of Report Designer into the Demo
  • Added Fit to Width and Fit Document into Report Viewer
  • Fixed quite a few bugs for Text wrapping and Alignment

Version 1.1

06 Feb 2015

  • Text blocks now have an AutoHeightAdjust property that lets them auto wrap their text and change the text height
  • Desktop now has an RTF Block and uses Formatted Text Control to convert into Shorts reports and HTML
  • Demo project for Web and Desktop with viewers you can use in your own projects
  • Multiple demo reports with the various ways to create a report via code

Demo 07

Jan 2014

  • Updated the demo to work without modification in Windows

Version 1.0.1

01 May 2013

  • Removed dependency of MBS plugin for the HTML renderer class
  • Added sample database to demo project

Version 1.0

April 2013

  • First public release