Release Note 023: New Features released on December 27th, 2011

Important note


This deployment does contain a version of the file _idestartup.p. This file is launched by OpenEdge Architect whenever a project AVM or the Shared AVM is started. If you already have a version of the file _idestartup.p in place you may need to merge those two files into one.  

It is recommended to remove the R-Code of the Consultingwerk.Util.ClassHelper class file (Consultingwerk\Util\ClassHelper.r) before starting OpenEdge Architect the first time after applying the new version of the SmartComponent Library. Otherwise it's more than likely that the static property  


that is being set by the _idestartup.p code isn't yet available and starting the project AVM will fail. This would cause further issues when trying to recompile the new version of the SmartComponent Library or your application.  

As always it's the recommended approach the remove all R-Code (of the SmartComponent Library and your application) before starting the initial recompilation after applying this update.  


Versions of Consultingwerk .NET Assemblies contained in this release



Assembly name













List of new features / functionality


Below is a list of the key features released today:  

  • Change 19672: SmartDataBrowser:ScrollOffHome now scrolls the active scroll region, not always the first one.  

  • Change 19668: SmartDatasetAdapter to use DatasetHelper for SetTrackingChanges  

  • Change 19667: DataAccess:SaveBuffer to handle deletion of BEFORE-BUFFER query for read-only temp-tables (no before-table).  

  • Change 19664: SmartDataBrowser: Lock the redrawing of the UltraGrid while performing the batching  

  • Change 19663: SmartDataBrowser: Fixed ability to scroll up when using backwards batching by using the AfterRowReqionScroll event  

  • Change 19660: ClassHelper: When using an external runtime to search business entities, the result is now saved to a temporary XML document rather than streamed via StdOut.  

  • Change 19649: SmartViewerControl: Ability to pass multiple Controls at once (up to 5) to SetControlEnabled  

  • Change 19646: ImageHelper:FromBLOB, fast method to turn a Progress BLOB (temp-table buffer field) into a System.Drawing.Bitmap  

  • Change 19645: Consultingwerk.Assert.BufferAssert:IsAvailable  

  • Change 19640: gen-xsd for Consultingwerk\Util\TempTables  

  • Change 19638: Usability: After Clearing the Table-Filter in the Business Entity Designer the Focus is put into the Filter  
  • Change 19636: Ability to sort by Column name in the Field selector of the SmartBindingSource Add fields wizard  

  • Change 19627: SmartDynamicViewer: Set hDataset variable to ? after deleting if, to avoid errors with subsequent call  

  • Change 19618: BindingSourceHelper:UseFullFieldNames  

  • Change 19613: Customization (translation) of the Column Chooser Form  
  • Change 19607: Business Entity Generator: Fixed missing RETURN Statement in SourceDetaultQuery CASE block for tables with a custom query  

  • Change 19587: Bug 2749: Application crashes when Saving an updated row in a SmartUpdatableBrowser  

  • Change 19586: ClassHelper to pass full pathname to -p parameter for Consultingwerk/Util/Support/getclassnames.p  

  • Change 19584: Business Entity Designer: Fix of the Table Filter Clear Button and LRU from the Ribbon Tools  
  • Change 19582: Usage of DynamicsRepositoryService optional though UseSimpleDynamicsRepositoryService in Consultingwerk/products.i  

  • Change 19511: ObjectAssert:IsValid with a second paramter for the object description  

  • Change 19510: New class Consultingwerk.Assertion.ObjectAssert  

  • Change 19508: SmartBusinessEntityLookupSerializer class and interface moved to Consultingwerk.SmartComponents.Framework  

  • Change 19506: DefaultDialogResult property on !IMessageForm  

  • Change 19463: Control the Focus in the Lookup Dialog: Search Field Focussed by Default, Cursor-Down in Search Field focusses the browser  
  • Change 19460: Bug 2715: Delete key on read-only browse does no longer delete the Row.  
  • Change 19459: foreach.i, allows optional 5th paramter for the include file as "nodefine" that will control that the VARIABLE's won't be defined. This makes it possible, to use the same loop variable twice in the same method.  
  • Change 19458: Bug 2580: After deleting the last record in a SmartViewerControl when SaveMode = TRUE the fields will be deleted.  

  • Change 19377: Deleted Consultingwerk/from_assembly.i - as FROM PROPATH can be used for the Progress.Lang.* package reference  
  • Change 19361: Support for BaseForm:DependentForms  

  • Change 19346: A class to format field validation errors on the back end: FieldValidationError  

  • Change 19328: StyleLibraryHelper: Ensure that Progress COLOR-TABLE has enough entries prepared before dynamically setting color entries  

  • Change 19327: Fixed issue, that after a validation error message from a Business Entity - but still remaining in Update mode - a linked SmartDataAdapter (DataTarget) would not have any record available. This was caused, because the CATCH block in SubmitRow did Reposition to the previous (updated) record - but not use GET NEXT to actually make the record avaialble.  

  • Change 19309: Fix Link... properties not shown for new Viewers added through the "Insert UserControl" Designer Verb of the SmartWindowForm: The problem was, that the ABL does not always (by default) expose properties defined on ABL inherited Controls to the .NET side. We ensure the exposition of those properties to the .NET side by an .NET Interface implemented by the SmartViewerControl.  

  • Change 19296: [Bug 2736] Compiler crashes while trying to compile SmartUpdatableBrowser  

  • Change 19289: Business Entity Generator: Handle ** "CustomerBusinessEntity.cls" was not found.  

  • Change 19287: Clearer error message when creating a binding query for a SmartBusinessEntityAdapter and tables do not contain active DATA-RELATIONS.  

  • Change 19286: SmartViewerControl: Calendar Controls will now start the update mode of the Viewer  

  • Change 19285: SmartDataBrowser: StoreVisibleGridColumns Designer Verb will now dirty the Form Design (require Save)  

  • Change 19284: Table Picker Dialog with Description for left and right half of the dialog  
  • Change 19283: Business Entity Designer: Fix for b_eTable record not on file error when dragging a Temp-Table Field in "Relation" mode  
  • Change 19280: USING FROM PROPATH instead of FROM ASSEMBLIES for Progress.Lang.*  
  • Change 19244: Replacement of Navigation Button Icons in the Lookup Dialog  
  • Change 19197: Don't make Forms child of the Mdi Container in the Demo software  
  • Change 19188: ServiceLoader class: A way to load into the ServiceContainer at application start 

    • Allows to create configuration files for replaceable service classes  
  • Change 19175: Disable Buttons in Toolbar during the Update in the Viewers of the Business Entity Designer  
  • Change 19174: Validate Business Entity Package before code generation.  
  • Change 19161: Use of BUFFER-VALUE instead of STRING-VALUE in ValueListHelper  

  • Change 19157: Fixed order of USING and ROUTINE-LEVEL in Data Access Template  
  • Change 19155: New method: WidgetHelper:MinSize that returns the internal bounds of a frame (useful for resizing) 

    • Added resizing to orderwin_embedded_plus2.w  
  • Change 19148: Business Entity Designer: Top level Form does not need to be deleted when closed  
  • Change 19110: Experimental: ClassHelper:GetClassNames to launch an external process to limit risk of crashes from Progress.Lang.Class:GetClass ()  

  • Change 19106: FrameworkSettings:AllowDesignFeatures now sets SmartComponet:DesignTime to false to allow property functionality of SmartBusinessEntityDesigner etc. during custom Visual Designer implementation.  

  • Change 19105: Lookup Dialogs: Fix SUPER Call from OnPaintBackground  

  • Change 19093: BaseForm: Check for valid ISettingsService before loading and saving window settings  

  • Change 19092: Double-Click on a row in the Business Entity Picker Dialog selects the current row.  
  • Change 19088: DesignerHelper, RefreshProperyGrid will now check for a valid Component Site to avoid errors, when the Component is not running inside the Visual Designer environment.  

  • Change 19087: DesignerHelper, RaiseComponentChanged will now check for a valid Component Site to avoid errors, when the Component is not running inside the Visual Designer environment.  

  • Change 19086: ClassHelper: Exclude SmartComponent Library from the class browser. We have observed crashes from the Progress.Lang.Class:GetClass call with some of the SmartComponents.Implementation classes.  

  • Change 19085: Full reference to Progress.Lang.Class:GetClass - abbreviated reference did cause compile errors with ICFDB connected.  

  • Change 19065: ValueListHelper:FromList  

  • Change 19054: Business Entity Designer: Rename of "Source Code" Ribbon Group to "Build"  
  • Change 19050: BusinessEntityGenerator: Limit length of identifier (for Query of DataSource) to 32 characters  

  • Change 19040: Fixed NullReferenceException in EmbeddedWindowForm.OnActivate  

    • System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt. 

      • bei Progress.ClrBridge.BrgClrToPro.InvokeMethod(Int32 , Int32 , String , Int32 , Object[] , Int32[] , Type[] , Object )  bei Consultingwerk.WindowIntegrationKit.Forms.EmbeddedWindowForm.OnActivated(EventArgs ) in AblProxy.cs:Zeile 53.  bei System.Windows.Forms.Form.set_Active(Boolean value)  bei System.Windows.Forms.Form.ActivateMdiChildInternal(Form form)  

  • Change 19024: Avoid errors from CancelUpdate when there is no DataSource or no BindingSource.  

  • Change 19018: ServiceInterface with Activate and Deactivate events  

  • Change 19014: Context Dataset and Context Wrapper with LONG-CHAR and INT64 properties  
  • Change 19005: Service interface procedures: Do not reset the reference to the ContextDataset unless it was set by that instance of the SI.p 

    • Will avoid issues with nested calls  
  • Change 19004: SmartTempTableAdapter: Fix CloseQuery method.  

  • Change 19001: SmartBusinessEntityAdapter: Moved EndUpdate() call to FINALLY Block  

  • Change 18999: Support for custom shortcut keys (ATL- combinations) in UltraToolbarsHelper  

  • Change 18996: check-dialogresult-ok.i: Optional second parameter with the return-value.  
  • Change 18992: LoginScreen with ability to store last User and company name in the Registry (or another similar service)  

  • Change 18991: Factory for the Context Dataset  
  • Change 18986: DataTypeHelper: Additional routines to convert from LOGICAL values  

  • Change 18967: Optimization on LogManager:WriteMessage  

  • Change 18965: LoggingLevelEnum for SetLoggingLevel in Consultingwerk.Util.LogManager  

  • Change 18963: Optimization in OnFormClosed of EmbeddedWindowBaseForm  

  • Change 18959: Helper class to merge two UltraStatusBars (useful for MDI merging of UltraStatusBars).  

  • Change 18949: New class in Consultingwerk.Support assembly: Consultingwerk.Support.KeyState for evaluation of DragEventArgs:KeyState  

  • Change 18948: SmartViewerControl:OnEnterDuring: While closing of a Form the FindForm() method may raise a System.NullReferenceException. When trown, there is no need to Activate the event handler as the Form is about to be closed.  

  • Change 18942: MessageFormHelper:ShowMessageBox (for support when -IOEverywhere 1 is not set) now defaults to Cancel, not NO  

  • Change 18940: Check for a valid Form in ActivateEventHandler before subscribing events from the Form  

  • Change 18939: Templates used by the Business Entity Designer do now contain a USING statement for the containing package.  
  • Change 18938: New method BufferHelper:BufferFieldSubstitute  

  • Change 18936: Basic container controls (UltraTabControl, SplitContainer, Panel, UltraPanel, UltraGroupBox, UltraExpandableGroupBox will now always be enabled in a SmartViewerControl by default.  

  • Change 18914: Focus handling during ToolClickHandler only when old focus was inside ther Form  

  • Change 18913: Optimization of Activate Event for EmbeddedWindowForm  

  • Change 18903: DataAccess: Ability to override SAVE-ROW-CHANGES (in CommitChanges) by moving that to a new method SaveRowChanges  

  • Change 18864: UltraToolbarsManager: Allow to run BuildToolbarFromFrame frame more than once for a single frame.  

  • Change 18862: ISubmenuCustomizer Service class to customize the rendering of sub-menu's