StrataFrame 1.6.6 Beta Installation


Author
Message
Trent Taylor
Trent Taylor
StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)
Group: StrataFrame Developers
Posts: 6.6K, Visits: 6.9K
This is the first installment of the 1.6.6 beta update.  You will notice that the version will display as 1.6.5.1 when looking in the StrataFrame->Version window.  This will make it easier for us to determine if you are running a beta version or a fully released version.

There are quite a few changes in this build and there will be many more to come before the release.  However, there have bee some requests out there that are in this build which include the business object field orders to the specifications of the ConnectionDataFolder (ability to specify the folder location for the Appkeys.dat and the Connections.dat files).

There are also many new enhancements to the DDT which includes pre and post script executions, field struction default prefixes (makes it easier when creating new columns), and more.

Here is a list of what is in this update:

  1. AddPreSaveBusinessObject and RemovePreSaveBusinessObject methods added to BusinessLayer

    In the instance that the need arises where the order of the business objects save needs to be set, the AddPreSaveBusinessObject method can be used.  This allows business objects to be dependent upon other business objects and rely on the primary/foreign key relationhships that are established.

  2. ListView now supports UI data interaction including related business objects, child form dialog, and
    related command or toolstrip buttons.

    The ListView has been dramatically expanded to have native logic for tasks that are common recoded.  There are now many new properties (detailed below) and events that allow a more dynamic child display interaction with much less code.  By simply setting the UI interaction properties of the ListView, the ListView will dynamically manage the toolstrip buttons (or any other type of control) for the Add, Edit, and Delete as well as any security keys that may also be associated with those objects.  Additionally, a ChildFormDialog can be attached to the ListView which will then by dynamically shown to the end-user on an Add or Edit dynamically with no additional code.  Finally, the ListView will now allow the instance of the business object of which it represents to be attached and the current index (or row position) of the business object to be dynamically updated.

     New Properties: 

    AddObject
    AddObjectSecurityKey
    EditObject
    EditObjectSecurityKey
    DeleteObject
    DeleteObjectSecurityKey
    DeleteMessageKey
    AutoNavigateToSelectedRecord
    HandleAddAction
    HandleDeleteAction
    HandleEditAction 

    New Events: 

    ChildFormResults

  3. Wizard control default colors modified when using a Windows based color theme on Vista

    Some of the colors pulled from the OS when using a Windows based theme looked a little dark when running on a Vista OS.  This issue has been corrected.

  4. BusinessLayer now has an UndoByFilter method

    In the circumstance that you are dealing with a grandchild many-to-many environment and you need to undo the changes for the grandchild without effecting the other records that have been modified on that same grandchild business object, you can use the UndoByFilter method.  This allows a business object to undo only those records that meet the criteria of the filter.  If a filter is already applied on the business object it will be ignored and left intact once the Undo operation has been completed.

  5. BrokenRule constructors made public

    The BrokenRule constructors have been made public instead of internal (friend) allowing a new broken rule to be created through an external assembly.

  6. Embedded localization languages file not always located.

    A change has been made within the framework regarding how the Message_Languages.xml file is located in an embedded environment.  This file was previously not always located unless stored externally.

  7. RenderAsSolidBackground property added to a WizardPage

    A wizard page now supports the RenderAsSolidBackground property like the other themed container controls.

  8. New SyntaxEditor control now replaces the ColorizedTextbox

    A new control has been created that allows a legitimate syntax editing environment exist.  This control replaces the ColorizedTextbox which was never really designed for editing but viewing and had many limitations as it relates to text size and performance.  The SyntaxEditor is designed to allow for much larger text environments while maintaining the keyword colorizations dynamically. (Note: There will be a number of additional features added to this control prior to the 1.6.6 release).

  9. New SyntaxEditorLineNumbers control which shows line numbers for a SyntaxEditor control.

    This control can be used in conjunction with the SyntaxEditor control and displays the line numbers currently visible within the SyntaxEditor.

  10. Database Deployment Toolkit SQL editors revamped to use the new SyntaxEditor controls

    When dealing with the SQL code for a stored procedure, view, or user-defined function, it was difficult to actually use the text area as an editor, especially on larger queries and commands.  The DDT has been updated to use the new SyntaxEditor controls so that it is much easier to work with this data within the editors.

  11. DDT code windows now remember their previous sizes and positions

    The code windows within the DDT (stored procedures, views, and user-defined functions) now remember their positions and sizes from the previous entry.

  12. CustomPattern added to the Regex options for a Keyword within the SyntaxEditor

    The SyntaxEditor already had 3 pattern types that included MatchBetween, MatchTextToEOL, and MatchExact that came across from the ColorizedTextbox control.  However, a new option has been added called CustomPattern which allows literally any Regex expression to be supplied allowing the syntax coloring to support any complicated or intricate colorizations.

  13. AccessDataSourceItem would not automatically return the primary key value

    When inserting a new record and the PrimarykeyIsAutoIncrementing property was set to True on the BO, the saved primary key value would not be returned for an AccessDataSourceItem.  This issue has now been resolved.

  14. GetTypeFromReferencedAssemblies method changed to ignore loader exceptions

    Under certain conditions when the referenced assemblies were being reflected, an assembly reference that was not needed in one environment may be hit, though it is not used, and throw an exception since that assembly could not be found in the GAC or on the machine.  This change will prevent that error.

  15. Database Deployment Toolkit now supports category for stored procedures

    When dealing with a large database and many stored procedures, it can become difficult to locate a single sproc in the list.  A category can now be assigned to a sproc so that like sprocs can be grouped together making it easier to locate a specific sproc.

  16. BrowseDialog now has a ReturnSelectedRecordOnly property

    When the ReturnSelectedRecordOnly property is set to True, the selected record within the browse results will be the only record copied into the BusinessObjectToPopulate when returned from the BrowseDialog.

  17. BuildDataTableFromEnum improperly created a top most value for the value type

    When using a combo box or manually calling teh BuildDataTableFromEnum method in the MicroFour.StrataFrame.Tools.Common shared class and a top most value was supplied, the value type that was set as the top most value was, at times, coming in as a string or invalid type.  This would result in an ArgumentException (though it may be snuffed) which in turn could result in a very slow UI response to any other other that is bound to the same data source.  To resolve this issue, the TopMostValue is attempted to be parsed as an integer.  If so, it is then added to the value as an enum type of that value, even if the enum in question doesn't actually have that value.  This results in much faster performance and resolves the ArgumentExceptions.

  18. Database Deployment Toolkit now has a default prefix option for each table

    A default prefix can now be supplied for each table which will auto-populate any new field created with this value making it easier to create new structures.  For example, if a prefix of "pre_" were supplied then a new field, when created, would automatically appear as "pre_" with the caret position after the "_" ready for the rest of the field name to be supplied.

  19. Pre and Post deployment scripts now available within the Database Deployment Toolkit

    A new feature has been added to the Database Deployment Toolkit which allows scripts to be created and executed before and after a profile is deployed to a server.  This allows any strange or out of the ordinary deployment actions to be taken.  For example, if the need existed to convert DateTime fields to a BigInt on a pre-existing database, and still maintain the data within the fields, a Pre-Deployment script could be created to convert the DateTime fields to BigInt (ticks would be stored) fields prior to the database updating the structures which would circumvent data loss and/or an error.

  20. ConnectionManager now allows the data folder that stores the connection files to be specified

    A new property has been added to the ConnectionManager class called ConnectionDataFolder.  By setting the ConnectionDataFolder prior to calling the SetConnections() method, the folder location to which the AppKeys.dat and Connections.dat will be stored can be specified.  This allows environments with extremely tight security restrictions to supply the folder when the common application data folder has been restricted from general use.

  21. New Solution Preference added to determine if field names will appear in alphabetical or natural order.

    With the release of 1.6.5 a change was made to the display of bindable business object fields to appear in alphabetical order.  However, there were some developers who preferred to view their field names in a natural order.  A new preference was added to the Solution Preferences so that this can be specified on a per solution basis and developers of both preference types can view the fields in their desired order.

Note: For those developers who have a license, you can get the source code for this build in the My Account are of the website.

Trent Taylor
Trent Taylor
StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)
Group: StrataFrame Developers
Posts: 6.6K, Visits: 6.9K
The next installment.  Here is a list of some of the changes made between the last beta post and this one.  All of the previous post details plus:
  1. PrimaryKeyIsAutoIncremented and PrimaryKeyIsUpdatable properties have been updated with the Overridable tag

    The PrimaryKeyIsUpdatable and PrimaryKeyIsAutoIncremented properties can now be overwriiten through inheritance as the Overridable tag has been assigned to the properties making it easier to class this type of logic.

  2. Action added to the event arguments in the ChildFormResults event for a ListView

    An action property has been added to the ListViewChildFormResultsEventArgs for the ChildFormResults event of a ListView so that it can be determine which action invoked the ChildFormDilaog to appear in the first place.

  3. Issue with the transactional key being saved off in Save and SaveByForm

    When saving on a transaction a key is generated that combines the data source key and the key of the transaction so that the transaction can be retrieved during the save.  However, the transaction key was not being used as the key part but rather a transactional boolean.  This caused some strange side-effects in regards to the BO thinking that a save had already occurred and not accurately depicting the dirty state of the BO.  This issue has now been resolved.

  4. Under certain conditions, the CurrentRowIndex could fall outside of the legal indexes

    There were certain conditions and even sequences that could cause the CurrentRowIndex of a business object to fall outside of legal indexes within the business object.  This generally had to do with an Undo of a new child or grandchild record or certain filter and sort conditions when the editing state was being changed in the mix as well.  To circumvent this error from happening, the CurrentRowIndex now takes the following logic in these scenarios:

    • CurrentRowIndex > BO Count: CurrentRowIndex get set to the last visible record in the BO.

    • CurrentRowIndex < 0 when there are records in the BO: The CurrentRowIndex gets set to the first visible record in the BO.

    • CurrentRowIndex >= 0 when there are no visible records in the BO: The CurrentRowIndex gets set to a -1 which indicates empty or no records.

  5. SecurityDialog produced an error at run-time when a permission was double-clicked

    If a permission was double-clicked at run-time an error would appear indicating that the permission editor could not be created.  This issue has been resolved.

  6. QueryNotifications improperly passing over Connection String on SqlDependency

    When registering a BO to receive query notifications the connection string of the command was not assigned prior to the query notification being assigned to the dependency, thus the SqlDependency was never started.  This issue has been resolved.

  7. DateTimePicker caret creation error on certain Windows environments

    Within certain Windows environments, the DateTimePicker would produce an error when showing a "cleared" state and had focus.  This was most commonly noticed when pressing teh Delete key while within the control to clear out the value.  The caret creation has been changed to be compatible with these environments.

  8. ListView automanaged Add object now checks to see if a ParentBusinessObject has records

    The Add button now checks to see if the ParentBusinessObject property of the BusinessObject has been set.  If so, it then checks to see if there are any records.  If not, then the Add button will be disabled.

  9. When deploying to a pre-existing database, default contraints may be created incorrectly

    In a scenario where the DDT is deploying to a database that existing before the DDT was used for deployment, an issue could occur where the default contraints are not properly created and try to use the name of the column name.  A workaround has been implemented within the DDT that will prevent this from happening.

More to come BigGrin

Trent Taylor
Trent Taylor
StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)
Group: StrataFrame Developers
Posts: 6.6K, Visits: 6.9K
  1. SyntaxEditor keyword collections can now be exported and imported

    The SyntaxEditor now supports the ability to export and import the keywords collections at design-time making it much easier to re-use and update a custom syntax.

  2. SyntaxEditor rendering performance improvements

    There have been some changes made to improve rendering performance to prevent jumping and slow colorization on certain machines and processors.  Under certain conditions, the colorization would be very jumpy and slow while typing.  This was generally due to the processor or OS environment.

  3. SyntaxEditor text paste changed to strip pre-formatted text

    When pasting text into the Syntax Editor, any pre-formatted RTF formatting is now stripped and then properly colorized according keyword rules.

  4. New Application Theme Editor now available!

    A new tool has been introduced that allows custom application themes to be created visually instead of through code.  Once the desired view has been setup for the theme, the source will then be automatically generated for VB.NET or C#.  This custom theme can then be loaded into an application.  This tool also makes it possible to have a graphics department to create the theme and colors without having any programming knowledge.  Simply change the property and see how it affects the overall appearance in the Theme Viewer window real-time.

  5. Syntax Editor now has an AllowTab property that determines if tabs can be entered within the control

    The SyntaxEditor now has an AllowTab property that determines if tabs are accepted within the control.  By default this property is True.  Through this same change, the AcceptTabs property of the control has been made obselete and ReadOnly.  So if this property is serialized within a designer file, an error could occur.  To remove the error, simply remove the line of code in the designer file that sets the AcceptTabs property.

  6. SyntaxEditor now has a CharsPerTab property

    The SyntaxEditor now has a CharsPerTab property that determines how many characters, on average, would consume the width of a single tab.  This property defaults to 4.

  7. SyntaxEditor now has a PadFromPreviousLine property

    The SyntaxEditor now has a pad from previous line property that pads a new line with any tabs or white space from the previous line.  Setting this value back to false will always sends the character position back to the beginning of the line.  This property defaults to True.

  8. SyntaxEditor now has a SyntaxLanguage property that allows a pre-defined language to be used

    The SyntaxEditor now has 3 pre-defined languages that can be used by simply setting the SyntaxLanguage property.  The pre-defined languages are SQL Server, VB.NET, and C#.  Obviously custom languages can still be defined by using the Custom SyntaxLanguage option on this property (default).

  9. BO Mapper has been changed to use the SyntaxEditor control

    The BO mapper has been changed to use the SyntaxEditor control for a more fluid and useful syntax editing environment.  Additionally, the custom syntax has been placed on a separate page tab so there is more room to work when dealing with the custom syntax.

  10. Added functionality to ThemedDetailWindow to make all items within the window be exposed as bindable properties

    The ThemedDetailWindow now emits propertys by the key name for each item created within the collection.  This allows the value of the collection to be bound using a BBS or standard .NET data binding versus manually setting each item in code.

  11. Changed the exception thrown by a business object when accessing the CurrentRow property when the business object is empty to indicate the name of the table that is throwing the exception

    The exception message now shows the [schema].[table] of the business object that is throwing the exception.

  12. DeleteMarkOnly property added to the ListView

    A property called DeleteMarkOnly has been added to the ListView so that the developer can determine whether the delete (when handled by the ListView) will just mark the record as deleted and still require another save to update the database, or to immediately delete the record from the BO as well as the database.

  13. A new class called Win32Window is now available that provides a IWin32Window implementation wrapper

    There are times that a dialog needs to be shown and the owner of that child dialog or windows needs to be forced.  There is an overload for ShowDialog that allows an IWin32Window to be passed defining the owner of the dialog.  Using this class as a wrapper, this can be easily done:

    Dim f as New Form()

    f.ShowDialog(New MicroFour.StrataFrame.Tools.Win32Window(MyParent.Handle))

  14. Added property to ThemedDetailWindow to allow the LineColor to be set independently of the PrimaryGradientColor

    The ThemeDetailWindow now has a separate LineColor property that allows the line color to be independently set.

  15. Added property to the DetailWindowItem class to allow the description shadow to be toggled (DescriptionShadow)

    At times the shadow for a description may need to be omitted.  A property has been added that allows the description of the ThemedDetailWindow to be specified on a per line item basis.

  16. DDT now remembers the last state of the "Show Auto-Generated Stored Procedures"

    The "Show Auto-Generated Stored Procedures" state is now remembered between sessions so that it doesn't always have to be turned off to see only the custom sprocs.

  17. DDT Stored Procedures now sorts by category, by priority, by name

    The default sorting of the stored procedures has been changed to sort by category, by priorty, by name making it easier to find a specific sproc when there are a lot of them.

  18. DDT gets a face-lift

    Over the next several updates there will continue to be a number of UI changes to the DDT that will better accomodate some future enhancements that are coming down the pike.  So there have been some considerable aesthetic changes made that will continue to change over the next several builds.

  19. ListView now supports automated column sorting

    Four new properties have been added to the ListView that allows the list to be automatically sorted by column.  When sorting is turned on, the default direction, column, and whether or not automatic column sort inversion will take place can be defined through the property sheet.  The four new properties are:

    AutoColumnSort
    AutoInvertSortOrder
    DefaultSortDirection
    DefaultSortColumn

    Note: For the sort direction to be automatically inverted, the HeaderStyle must be set to Clickable.

  20. ListView now has a Sort overload to forcibly sort the list

    A Sort method overload has been added to the ListView that allows a list to be sorted by column and direction without the need to create a custom ListSorter.   This method can be used regardless of the AutoColumnSort state.

  21. PauseSorting and RestoreSorting methods added to the ListView

    Two new methods have been added to the ListView called PauseSorting and RestoreSorting.  These methods allow the sorting to be forcibly stopped while the developer manually manipulates a ListView (i.e. move index positions, etc) and then restore the sorting once the process has been completed.

  22. PanelManagerPage designer changed to prevent accidental dragging

    A common issue with the PanelManager was when attempting to draw or resize the manager.  The designer of the pages within the panel manager also allowed the dragging of the page, which could sometimes cause the page to be dragged outside of the panel manager page which caused a number of other issues.  Additionally, when the panel page was selected, it show the sizing elements which actually did no good since it was docked within the panel manager.  This too has been addressed with this fix.

  23. The ThemedDetailWindow has a new AutoAdjustContolHeight property

    The ThemedDetailWindow now has a property called AutoAdjustContolHeight that will automatically adjust the height of the control if any item within the control auto-sizes itself to accomodate a multi-line value.  For example, it an item has a value that contains carriage returns, that row is automatically sized.  The ThemedDetailWindow will now automatically adjust the height of the control as well if the AutoAdjustContolHeight property is set to True.

  24. ThemedDetailWindow now supports a UseAlternateThemeColors option

    The ThemedDetailWindow now has a UseAlternateThemeColors property that renders the control with a different appearance than the default rendering appearance.  The alternate appearance renders without a gradient within the description area and produces a more "flat" appearance.

  25. ThemedDetailWindow now supports a watermark image

    A ThemedDetailWindow now supports the ability to have a watermark image render on the control.  There are three new properties WatermarkImage, WatermarkLocation, and WatermarkOpacity.

  26. The Navigate() method on the BusinessLayer would potentially return a True value if the Navigating event was cancelled

    The Navigate() method on the BusinessLayer will now always return a False if the Navigating event was cancelled.

  27. A BrowseDialog search field populating with a Enum Value did not always respect an Initial Value

    The BrowseDialog has been changed to store the value within a combo box differently to respect enums.  This will only affect enum population.  Additionally, the initial value now properly pulls the enum value when set.  Previously this was hit and miss depending on the enum value and some other environmental circumstances.

  28. The Database Deployment Toolkit would not allow a table with the same name but different schema to be saved

    The unique table criteria has been changed when verifying a unique table name by now include both the name and schema.  Previously the table name was the only validation check which prevented a table of the same name but different schema from being created.

  29. DDT now supports the ability to modify a table structure without updating the object history

    The ability to modify a table structure without creating object history items is now available.  Since this feature should be used VERY sparingly, it is only available through a key + mouse combination on the right list panel only (not the Treeview on the left).  The reason that this may be necessary is when copying a table and renaming or removing a lot of fields for a table that has never been deployed.  In this case, you may not want the object history to be updated since the structure has never been deployed. 

    To modify a table structure with updating the object history, press the Ctrl button and then right-click the table within the right list.  The Modify Structure will then appear with a "(No Object History)" at the end.  When the table structure form appears, this will also be shown in the header of the dialog.

    NOTE:  This should never be done for structures that have already been deployed in the field and will need to be updated!

  30. The Font of a ListView can now be set through the RowPopulatingEventArgs (RowPopulating event)

    The RowPopulatingEventArgs now has a Font property that allows the Font to be set for an individual list item through the RowPopulating event (i.e. e.Font = New Font(...)).

  31. BrowseDialog search fields now have an IgnoreInitialValueIfNotVisible property

    To create the most flexbile of environments, an additional flag has been added to a BrowseDialog search fields that provides the ability to ignore a search field's initial value if it is not visible.  Previously, if there were a value specified, it would be included within the search regardless of the search field's visiblity within the browse.  By adding this flag, it allows an initial search value to be specified and used, yet ignored if it is not visible (not being used within the search criteria).

  32. New application theme - Cool Breeze

    A new application theme has been added to the framework called Cool Breeze.  This is a spin-off of the BlueSkies theme, however, the Cool Breeze theme is softer and follows a more consistent color palette.  Toolstrips, mouse-overs, etc. are much softer (especially when using an alternate theme properties style of rendering).

  33. ThemedContainer rendering modified to improve performance and on-screen interaction

    There were a number of issues with the ThemedContainer while rendering.  At certain times, the Title would render improperly or possible not at all depending on a number of circumstances.  This issue has been resolved.  Additionally, the overall rendering of the ThemedContainer has been refactored to improve performance and reduce the footprint which also improved the scrolling effects if this option was being implemented.  The refactoring of the rendering addressed a number of other rendering issues as well.


Trent Taylor
Trent Taylor
StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)
Group: StrataFrame Developers
Posts: 6.6K, Visits: 6.9K
There are only a few changes here.  They apply most to the Enterprise Server.  There were two bugs that have been resolved (FillMultipleDataTables and checking in with the MicroFour activation server).  If you need the ES server files, I have attached the ES server files as well (they will need to be updated as if you are going to load this build and are using an ES server).

This build also includes:

  • Czech language support
  • Version has been changed to 1.6.5.2

Attachments
EnterpriseServerSiteContents.zip (376 views, 724.00 KB)
Trent Taylor
Trent Taylor
StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)
Group: StrataFrame Developers
Posts: 6.6K, Visits: 6.9K
Here is the next set of changes and updates for the 1.6.6 build.
  1. EnterpriseDataSourceItem would not fully support the FillMultipleDataTables method

    The EnterpriseDataSourceItem has been changed to fully support the new FillMultipleDataTables method from the
    BusinessLayer.

  2. Enterprise Server may fail if the MicroFour activation server was not available

    Under certain conditions, and if the MicroFour activation server were down or inaccessible due to an internet connection on the server side, an error would occur causing the server to throw an exception.  This issue has been resolved to no longer fail if the MicroFour activation server is not available or accessible.

  3. New localization language added - Czech

    A new pre-plumbed localization language has been added to the framework (Czech).

  4. DataLayer did not properly respect schema name when using the auto-generated stored procedures

    If the stored procedure names were not supplied and expected to be in the standard format, the table schema was not used as part of the INSERT, UPDATE, or DELETE and would throw an exception indicating the sproc could not be found.  This has been resolved and now properly supplies the schema name.

  5. BusinessLayer now has the ability to take a snapshot of current contents and restore it at a later time

    The BusinessLayer now has two new methods: SaveCurrentDataTableToSnapshot and RestoreCurrentDataTableSnapshot.  When saving a snapshot, the BO saves the current contents of the CurrentDataTable, including column and row states.  The BO can then be changed or modified, but if the scenario arises where the BO should be restore back to the snapshot and ignore any changes since that point, then the RestoreCurrentDataTableSnapshot can be called. 

    This is a good way to deal with child tables and ChildFormDialogs when cancelling out as the Undo will not always give you exactly what you may need (i.e. remove a record with an Added row state, etc.).

  6. ListView now has an AutoSnapshotBusinessObject property that saves the contents of the BusinessObject before an Add or Edit

    By default, the ListView now has the new AutoSnapshotBusinessObject property set to True, which when handling the Add or Edit actions, will automatically take a snapshot of the business object assigned to the BusinessObject property.  This allows the RestoreCurrentDataTableSnapshot if necessary in the ChildFormResults event versus using an Undo.  This could be done manually as well, this just saves a few steps in this process.

  7. ListView now has a PerformEditActionOnDoubleClick property

    If the HandleEditAction property is set to True which indicates that the ListView will manage the edit action and the PerformEditActionOnDoubleClick property is set to True as well, then when a list item is double-clicked, the Edit action will be automatically performed.

  8. BusinessLayer SaveCurrentDataTableToSnapshot now supports a key for an unlimited number of
    snapshots.

    The SaveCurrentDataTableToSnapshot now allows as many snapshots as necessary to be created by supplying a key.  This allows many different states of the same business object to be saved.

  9. ListView now has an AutoSnapshotKey property that allows a key to be specified if using the AutoSnapshotBusinessObject feature

    The ListView now supports the new BusinessLayer SaveCurrentDataTableToSnapshot key parameter with the AutoSnapshotKey property.  The value supplied here will be passed over to the SaveCurrentDataTableToSnapshot method.

  10. Database Deployment Toolkit now supports Triggers

    The DDT now has the ability to create and deploy triggers.  The triggers can be defined on a per table basis.  The DDT packages will need to be rebuilt once the update is loaded with this new feature (1.6.6 beta) as the DatabaseMigrator class now expects the triggers to exists.  If this step is omitted, an error will occur (which would be a friendly reminder to rebuild the package file :-) ).

  11. Database Deployment Toolkit now shows the schema name along with the table name for relationships

    When defining a relationship, the foreign key table drop down now shows the schema name along with the table name so that when two tables of the same name but different schemas exists within a database, they can be easily identified.

  12. ListView now has a BeforeChildFormExecuted event

    The ListView now has a BeforeChildFormExecuted event that gets raised immediately before the child form dialog is show via an Add or Edit.  In the case of an Add, the new record has already been created.  In the case of an Edit and the BO is being autonativated via the ListView, the record will be correctly positioned.  This event is a good place to load additional business objects with data or perform some type of other logic before the dialog is shown.

  13. ListView now has a VerifyRulesBeforeAutoNavigate property

    The ListView now has a VerifyRulesBeforeAutoNavigate property that will prevent the selected list view item from changing if there are broken rules on the current row.  This works around the edges of the ListView so the SelectedIndexChanged event will fire more than once, but ultimately will land back on the item in question.  Additionally, the AutoNavigateToSelectedRecord property must be set to True and the BusinessObject property must have a valid BO instance.

  14. SecurityBasics now has the ability to force registry settings to HKEY_CURRENT_USER

    Some of the Security dialogs use the standard SF properties to save off the form positions, locations, etc.  However, this gets uses at run-time as well and in highly-restricted environments the HKEY_LOCAL_MACHINE key cannot be accessed.  To get around this, the SecurityBasics class now has a ForceCurrentUserOnRegistrySettings property which redirects the registry settings to the HKEY_CURRENT_USER key for these security dialogs.


Trent Taylor
Trent Taylor
StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)
Group: StrataFrame Developers
Posts: 6.6K, Visits: 6.9K
Getting closer, but there are some big ticket items on this update.  Examples will follow within the next few days, but multiple foreign key relationship management is now supported...as well as a surprise item which is a custom Business Binding Source which will wrap a specific BO without the need to manually drop on a BBS.  Additionally, there is a new Custom BBS template that can be used to create this custom BBS class as well as a reporting business object that inherits from a particular BO type for adding report specific properties, etc.  To try out this new template, click Add a new item and select the SF Customer Business Binding Source template.
  1. Package file import did not properly import table with same name but different schemas

    In the event that a package has two table names of the same name but different schemas, the import would not include both tables and would not properly import all of the profile information.  This issue has been resolved.

  2. Dictionary key not present error may occur when manually adding a DateTime field to the CurrentDataTable and adding a new row

    There was an issue when a date time column that was not expected within the CurrentDataTable existed and a new record was added.  A 'key was not present in the given dictionary' exception would be thrown.  This has been changed to accept a default value so if the key is not found an exception will not be thrown.

  3. New localization language added - Dutch

    A new pre-plumbed localization language has been added to the framework (Dutch).

  4. Added the RegisterForeignKey and UnregisterForeignKey methods to the BusinessLayer class to allow a business object to have multiple "parents" through foreign key management

    StrataFrame has always provided the ability to have a single parent relationship which would then manage the child BO foreign keys automatically.  However, for BOs that had more than a single foreign key that needed to be automatically managed, this had to be done manually.  A BO can now register a child BO and foreign key which will then automatically manage that foreign key when a new child is added and a parent PK is assigned (i.e. if the parent was a new record).  Also, like the standard relationship management, the save order is properly enforced in the event a child is saved before a parent and the parent is a new record.  The only difference is that this declaration must happen within code versus a design-time editor, which makes sense because the instances of the objects must be defined versus the types. 

    MyParentBo.RegisterForeignKey(MyChildBO,"MyChildForiegnKeyField")

  5. Added test to the DataRow.AcceptChanges() call within the DataLayer.UpdateDataTableThread() method to prevent rows that are inadvertantly Detached from causing the save process to crash

    Very, very rare...practically impossible to reproduce, but fixed nonetheless.

  6. New Generic BusinessBindingSource class allows easy creation of BBS wrapper for reports or standard .NET data binding use

    Due to the nature of binding to standard .NET reporting tools such as grids and reporting environments, a very easy to implement class has been created which extends a business binding source for a specific business object type.  A generic implementation allows the BusinessBindingSource to be inherited and a specific BO type to be assigned to that BBS class.  The BBS class will then dynamically create the BO and manage the exposed properties.  This creates a very easy way to create data sources that wrap business objects for any type of .NET data binding including reports, grids, 3rd party controls, etc. without having to manually create and attach a business binding source component.

    Public Class CustomersBBS
       Inherits MicroFour.StrataFrame.Business.BusinessBindingSource(Of CustomersBO)

    End Class

  7. New Template Created that supports the new Custom Business Binding Source Class

    A new template has been added that allows a custom business binding source for a specific business object to be created.  Additionally, this same template has support for reporting and allows a reporting BO to be created which inherits from a source business object.  This is generally a good idea for reports so that custom and aggregate properties are added to the report specific BO instead of the original BO.  Additionally, a namespace can be assigned to the BO and/or the custom BBS that gets created through this template so each report BO and BBS can appear in a unique namespace.  Each of these segments is an option so a BO doesn't have to be created or a namespace assigned if the need doesn't exist.  If a custom BBS is the only item that needs to be created then that alone can be selected and added to the project.

    Within this template dialog, a combo will allow the desired business object to be selected for which the custom BBS and/or reporting BO will represent.  In conjunction with the new generic BBS, this feature takes a process that could have taken hours before and turns it into a minute or less implementation.


Trent Taylor
Trent Taylor
StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)
Group: StrataFrame Developers
Posts: 6.6K, Visits: 6.9K
Here is another installment of the 1.6.6 beta:
  1. Cool Breeze added as a template theme in the ApplicationThemeEditor

    When creating a new Application Theme, the Cool Breeze theme can now be selected as a template theme.

  2. DatabaseMigrator class now has a 1 hour timeout when moving a table from one file group to another

    When a table is being moved from one file group to another a timeout may occur if the table is very large.  Since the default timeout of a command is 30 seconds, if a large table were being moved, the timeout could execute causing an error.  This has been extended to 1 hours to ensure that there is plenty of time to migrate a table from one file group to another if in fact a table is ever moved in this manner.

  3. If the fields of a view could not be evaluated by the DDT, a view index could not be added for a field.

    If a view query could not be evaluated by the DDT to determine the fields that will be included in the view, then a view index could not be added for those fields.  The field can now be typed into the combobox versus being forced to select from the drop-down.

  4. AddBusinessObject and RemoveBusinessObject on the BaseForm are now Overridable

    The AddBusinessObject and RemoveBusinessObject methods are now overridable on the BaseForm class.  This allows additional add and remove logic to be implemented through inheritance.

There were also some other minor changes to the installation and the embedded localization logic.

Trent Taylor
Trent Taylor
StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)
Group: StrataFrame Developers
Posts: 6.6K, Visits: 6.9K
And yet another BigGrin
  1. Changed WBBS to properly support 3rd party web grids that support proprietary paging.

    The 3rd party grids store off a collection of items rather than rendering the grid as the collection is enumerated.  The base business object enumerator returns the same business object reference instead of a separate business object reference per record.  I added an overload to the GetEnumerable() method (EditorBrowsable(Never)) that will use a BBS as the enumerable object returned, which returns a separate instance of the business object type with each record pointed to a different record.


Dustin Taylor
Dustin Taylor
StrataFrame Team Member (372 reputation)
Group: StrataFrame Users
Posts: 364, Visits: 771
The latest:
  1. ExtensibilityBasics GetPageType threw NullReference if there was not an active page

    When opening a project, a null reference exception would sometimes be thrown if no page was active when the project was first opened (this was found on a web project.) This has been resolved.


Trent Taylor
Trent Taylor
StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)StrataFrame Developer (7.1K reputation)
Group: StrataFrame Developers
Posts: 6.6K, Visits: 6.9K
  1. DDT Database Import was failing to bring in selected tables

    A bug was accidentally introduced on the import within the 1.6.6 build fixing another bug in regards to schemas.  A check was not taking the schema into account which would prevent any selected tables from being imported.  This issue has been resolved.

  2. Localization export may throw expection during export under certain conditions

    Under certain conditions, the Localization Export to XML may fail due to a filter being set.  This issue has been resolved.


GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Similar Topics

Reading This Topic

Login

Explore
Messages
Mentions
Search