IntraWeb controls use less memory and perform better than previous versions. Major refactoring of base classes and controls, using improved data structures which use less memory and have better performance when compared to standard Delphi data structures (mainly TStringList).
New: class TBufferedHandleStream which drastically improves stream write and read performance. TempFileStream now descends from TBufferedHandleStream. New class TIWFileStream, descends from TBufferedHandleStream
New: TIWExceptionCallback allows 3rd party exception tracers/loggers (e.g. EurekaLog) to integrate with IntraWeb using a pre-defined, dedicated interface.
New: TIWControl and TIWRegion now render margins when AlignWithMargins = True
New: IWComboBox now allows grouping of related options in the list, using OPTGROUP tag. Each group in the list must start with the plus sign char (+), e.g. “+Group 1”..
New: New basic data structures (list and dictionary classes) are used instead of TStringLists, in several internal classes. Less memory usage and more performance.
New: ServerController.OnRewriteURL event lets you specify Reverse proxy or RewriteURL parameter using events
New: IWModalWindow: Button close action can be skipped using “|NoClose”
New: TIWLayoutMgrForm, TIWLayoutMgrHTML and TIWTemplateProcessorHTML have a new published property StyleAttributesToRemove (TStringList). Each style attribute in the StyleAttriutesToRemove list will be removed when rendering controls in a form using templates
New method CenterInParent() available in TIWCustomControl and TIWBaseContainer (TIWRegion and descendants). Centers a control within its parent’s client area
New property CustomLockerAnimationFile (an animated gif file name), which allows you to customize the IWLocker image. A new (slightly bigger) locker is default. Many free sample lockers can be found inside \Images\LoadingGif subfolder
TIWBaseForm.IsPostBack and TIWApplication.IsPostBack
Bug fix: Frame name validation wrongly raises an exception when 2 existing frames descend from the same parent frame (check the new “Frame Inheritance” demo project in our demo repository)
Bug fix: Aligned invisible controls (e.g. IWRegion with Visible=True, Align=alBottom) would still be considered when aligning other controls. This caused other controls to be wrongly aligned, as the invisible control was actually visible.
Bug fix: TIWDBLookupComboBox and TIWDBLookupListBox could show NonSelectionText property instead of actual selected item text after sync event
Bug fix: possible issue with multiple threads uploading files (FFileList)
Bug fix: WebApplication methods SwitchToSecure/SwitchToNonSecure (HTTPS <-> HTTP) could fail
Bug fix: Under very rare circumstances, some temporary files could remain until application termination
Bug fix: TIWDBGrid rendering issues when a control is assigned to a cell. Refreshing the Grid in Edit mode should not raise excepion
Modified: IWLists.pas has been renamed to IW.Common.Lists.pas
Modified: Faster SA Server with an Indy intercept class customization
Modified: IW Version check form is non modal, so IDE continues loading while the form is visible
Modified: TIWCompressionOptions.MinSize is now 512 bytes (instead of 1024)
Modified: “attr” tag is used instead of “attribute” in XML node (async response). This reduces the size of XML response, in average, 100+ bytes per object modified in an AJAX request.
Modified: TIWResyncInfo record (used when detecting sync issues/BackButton events) has 2 new members: FormOutOfSync and TrackIdOutOfSync.
IWBundledRemovalTool is now part of IntraWeb installation. It can be found inside folder \Tools\BundledRemoval