We are pleased to announce that Elevate Web Builder 2.06 is now available for download. If you're an existing customer, then you should be receiving an email shortly with download instructions.
Elevate Web Builder 2.06 includes the following breaking changes and enhancements:
2.06 Breaking ChangesThe following are breaking changes in 2.06:
The auto-sizing functionality in the foundational UI layer has been extended so that it can also handle auto-sizing of parent elements based upon the bounds of child elements. This has also resulted in many modifications to how the existing control interfaces were designed. In 2.05 and prior releases, many controls executed code to perform the auto-sizing of various UI elements in response to size changes, whereas these controls now use a control interface that provides auto-sizing declaratively within the control interface itself. If you have created customized control interfaces, then you will need to merge these changes into your customized control interfaces using a compare/merge tool such as Beyond Compare from Scooter Software:
The layout functionality has changed slightly so that BeginUpdate..EndUpdate blocks suspend layout and measurement locally within a given control/UI element. In contrast, in 2.05 and earlier, BeginUpdate..EndUpdate blocks would only suspend DOM and designer updates until the local update count, and any parent update counts, reached zero. Layout and measurement would be triggered on each update to the state of the control/UI element. This was extremely inefficient and caused way too much code execution for little-to-no benefit. With the new changes, layout and measurement are only triggered once the local update count for a given control/UI element reaches zero. DOM and designer updates are still only triggered once the local update count, and any parent update counts, reach zero. However, this could cause some existing code to break, especially if the code relies on updated control/UI element bounds within the context of a BeginUpdate..EndUpdate block. Fortunately, there are new methods that will allow the code to force a layout/measurement update, even within a BeginUpdate..EndUpdate block:
The default control interfaces have been moved to the "default" subdirectory under the "interfaces" subdirectory. This was done to accomodate the fact that the product now ships with a new set of desktop control interfaces (see new features section below).
Google has changed the requirements for using the Google Maps API:
and the TMap control now includes two new properties to accomodate the new API key requirements: APIKeyRequired and APIKey. If you were using the Google Maps API successfully with your application prior to the new requirements, then your IP address will be grandfathered in and you can set the APIKeyRequired property to False and leave the APIKey property blank.
The AutoSize property has been changed from a Boolean property to a TAutoSize class property with independent Width and Height properties.
Any existing forms can be used without issue going forward, but if you modify any forms and/or control interfaces using 2.06, then these forms and/or control interfaces will not be able to properly load the new AutoSize property with 2.05 and prior versions of Elevate Web Builder.
All Icon properties have been consolidated under a new TIconProperties class.
Any existing forms can be used without issue going forward, but if you modify any forms using 2.06, then these forms will not be able to properly load the new Icon property with 2.05 and prior versions of Elevate Web Builder. Also, the new TIconProperties class contains additional icon Height and Width properties that may need to be adjusted after a form is first used with 2.06 or higher.
The TMessageDialogClient control interface has been combined with the TDialog control interface to create a new TMessageDialog control interface for the TMessageDialog control. The MessageDialogClient control interface is no longer used.
The TGridColumnOnHeaderClick event is now a function that returns a Boolean to allow the developer to control whether header clicks are allowed/disallowed.
The clElevateFillGray color has been changed so that it is slightly darker.
The TGrid control does not automatically add a grid column to the current sort when the grid column's header is clicked. You now need to use a shift-click in order to do so, and the default behavior is to clear the current sort whenever a grid column's header is clicked without the shift key being pressed.
2.06 ImprovementsThe following are new features and enhancements in 2.06:
As mentioned above, the auto-sizing functionality has been improved so that parent UI elements can automatically change their size based upon the bounds of their child elements. This allowed for the elimination of a lot of code in the component library that was dedicated to this type of functionality. Also, as part of this enhancement, the TBasicPanel and TPanel controls now contain an AutoSize property.
The drawing performance of the designers in the IDE has been greatly improved.
The loading performance of applications at run-time has been improved, largely due to the layout performance improvements noted above in the breaking changes section.
The IDE now includes a Find Declaration option on the context menu for the code editor. When the cursor is positioned on an identifier in the code editor, this context menu option will find the identifier's declaration (if possible). In addition, you can hold down the Ctrl key, move the mouse over an identifier in the code editor, and click to initiate the find declaration option. If there are compilation errors in the source code, using this feature may result in an error message appearing in the Messages view in the IDE indicating that the find declaration operation failed.
The IDE will now automatically add unit references to the implementation section of the current unit when components residing on different forms/databases are referenced via the Object Inspector.
The event management now supports handling composition events for IME (Input Method Editor) for Chinese, Japanese, Korean, and Indic character input so that data-bound controls behave properly with this type of input.
There is a new set of control interfaces for desktop usage included with the product. These control interfaces can be found in the "interfaces\desktop" subdirectory under the main installation directory.
You can see the new desktop control interfaces in this demo application:
New clElevateHot* colors have been added for the built-in clElevate* Red, Green, Blue, Black, and Orange color variations.
Control icons are now managed using the common TIconProperties class. This allows the developer to have more control over the height and width of the icon and consolidates all icon-related properties, including those for font icons, in one location in the Object Inspector. In addition, you can specify rotation animation properties in order to have the icon rotate to show progress.
There is a new TDataSetController component that allows the developer to attach to a TDataSet component for the purpose of defining event handlers for capturing when the dataset's current state, row, or sort changes. Previously, the developer would have to manually attach event handlers in code.
There is a new THTMLLabel control for displaying arbitray HTML content at run-time.