By Trent L. Taylor - 10/6/2008
- New Popup class allows any control to appear as a drop down
A new class called Popup is now available which allows any control to appear as a drop down in association with an owner control. For example, a button can be turned into a drop down style control in a single line of code! Simply create a Popup class and pass over the control that will be shown within the drop down. Then simply call the Show method and supply the appropriate parameters. It is that simple! DDT Import Wizard may skip certain stored procedures and UDFs
To improve performance, the DDT would exit when enumerating stored procedures and UDFs when the first system object was found as system objects to not need to be imported. However, under certain, very rare circumstances, legitimate sprocs or UDFs may appear within the collection AFTER the system objects. This is highly unusual, but so as not to have this issue creep up again in the future and since the import is a process in which a developer does not live (as this is generally only done once per database) the lengthier process will be implemented. SyntaxEditor now supports Ctrl+Z undo
With the release of the 1.6.6 SyntaxEditor, the Undo logic of the underlying RTF control was no longer functioning. A custom Undo implementation has been implemented to overwrite this functionality. PackageIt registry updates changed to look at HKEY_CURRENT_USER instead of HKEY_LOCAL_MACHINE
To ensure that there are no permission issues on saving dialog locations, etc. the PackageIt application has been updated to use the HKEY_CURRENT_USER. Some changes have been made to the install to attempt to prevent VFP and core C++ DLL conflicts
Under certain OS environments and depending upon Visual FoxPro installations, certain files were attempting to be written to disk and overwritten in other cases. The installation has been changed in an attempt to prevent this from happening. Specifically the VFPOLEDB and VFP8 DLLs as well as the MSCVR70.DLL required by VFP8. IPControl no long supported.
The IPControl has been removed from the control collection as this was a very lightly used (if ever) control which did not follow our standards any longer. Use a MaskedTextBox instead when this need arises. SF Textbox would render prefix characters (i.e. ampersand) incorrectly when enabled
The SF Textbox performs custom rendering when disabled which uses the TextRenderer class. However, a format flag of Noprefix was not specified which would render the character after an ampersand, for example, like a label with an underscore. This issue has been resolved and teh NoPrefix tag has been added to the format flags to properly render the text. ThemedDetailWindow item now has a ValueMaxWidth property
The ThemedDetailWindow items now have a ValueMaxWidth property which is taken into account when aligning the value right. This allows the width of the column to be specified so that the ThemedDetailWindow can be wider than the value text will need to render. This is especially helpful when showing items such as currency. The ListView BeforeChildFormExecuted event now supports a cancellation action
The ListView BeforeChildFormExecuted event now has a CancelAction parm on the event argument which allows several options. None, which would continue as normal, cancel the ChildFormDialog execution only, or cancel the dialog execution and undo any data changes related to the currently executed action (i.e. if adding a new record the new record would not be added). This gives the best of all worlds in regards to the potential needs to cancelling an automated ChildFormDialog execution. Changed the binding on BusinessLayer to the BoundControls to determine if the specific binding exists for the bound property rather than testing on Count > 0.
A control can now properly be bound to more than 1 property. 1 property through StrataFrame BusinessLayer binding and additional bindings through native .NET binding. If a right-click was executed within the BO Mapper without a TreeView object being selected, an error would occur
If a right-click was executed within the BO Mapper on the TreeView list, an error (NullReferenceException) would occur if an object was not selected. This issue has been resolved. DDT Import Wizard now allows a unique index with an entity column to be imported as a unique index instead of a primary
Under certain conditions, an index was being brought in through the import wizard as primary when it should have just been imported as Unique. An import option was added to treat unique indexes with entity columns as primary. This can be unchecked to prevent this from occuring resolving the issue in most cases.
|
By Trent L. Taylor - 10/17/2008
- ThemedStatusStrip now supports border sides on labels
When the BorderSides were set on a ThemedStatusStrip, they were previously ignored and not rendered. They are now respected and will render. Additionally, the BorderStyle can be set to Flat or render as a 3D style if set to something other than Flat. ThemedToolstrip buttons now render better for a checked state button
When a checked state button existed on a ThemedToolstrip, context strip, etc. it was difficult to see the text when an item was checked and hovered at the same time. This issue has now been resolved. ListView now automatically updates new record PKs after a Save if a BusinessObject is supplied.
Previously, if a new record was added through a ListView, then saved, the ListView would still have a negative primary key value but the bound BO would now have a real primary key in its place. This could be resolved by just performing a requery; however, the ListView now looks for a BO save and when this happens, it automatically updates any list items primary keys without the need for a requery, this reducing the need to a Requery after a new record is saved. BusinessLayer may throw exceptions when initializing a new row and bound via a Business Binding Source
This is a bit difficult to explain, but if you have ever run into an issue where a DbNull value is popping up on a new record, then there is a good chance that this will resolve your problem when being bound through a Business Binding Source. The issue is that the ListChanged event was being fired prior to the row actually being initialized, which if not propelry handled, would could cause some strange behavior when bound. One symptom that may appear is a BO becoming dirty immediately after being loaded (not a new record at this point, but a Fill). Other symptoms may include a DbNull exception when adding a new record. This is a very remote bug and had to be within the perfect scenario to fail. But in any case, this issue is now resolved. RichTextToolstrip now has Bold, Underline, and Italic properties that can be overwritten when inherited
There are 3 new properties on a RichTextToolstrip that can be overwritten when inherited allowing custom localization to be set without being overwritten. These are the UnderlineTooltipText, ItalicTooltipText, and BoldTooltipText properties.
|
By Trent L. Taylor - 1/6/2009
Important Notice if loading this build!!!If you are loading this build, you MUST rebuild all of your business object partial classes. The business objects have been changed to improve performance and reduce memory overhead and requires that all business object partial classes be rebuilt. This is not a complicated or difficult process, but you will see errors if you omit this step after loading this release. To update your business objects, simply open the BO Mapper and click the Rebuild All button for each project that you have StrataFrame business objects. Recompile your solution and then you should be good to go. - Changed the BOMapper to generate only 1 descriptor class for each business object rather than 1 descriptor class for each business object field.
The BOMapper now creates a single FieldDescriptor for a business object class and uses the FieldNames enumeration of the business object to determine the field for the descriptor. This improves performance by: 1) reducing the number of classes in the business object's assembly 2) improves compile time of the assembly 3) requiring fewer runtime classes & less application memory overhead 4) improving BOMapper generation performance. NOTE: All business objects must be rebuilt through the BOMapper or the application will not compile. MaskedTextBox did not retain mask when disabled
When allowing StrataFrame to render the disabled masked text box, there were times where the mask was not retained and would appear with the raw entry values only. This issue has been resolved. Role-Based Security dialogs have received a face-lift with new icons and full theme support.
The Role-Based Security dialogs have received an updated look and now follow the StrataFrame application themes (when used). Role-Based Security user now has a "Display As" option
Like Windows, the StrataFrame RBS now has a "Display As" option available for the user name. If one is not specified and the us_Displayname is referenced through the SFSUsersBO, the full name will be returned as previously shown. This allows a user to have a more customized appearance throughout an application and make it easier to identify users through nicknames, etc. Role Based Security now allows a custom replacement character for each permission
There are times that a unique replacement character needs to be supplied for a particular permission versus using the default global replacement character. Now a replacement character can be specified in the "Message or Key" field of a permission when set to a "Replacement Character" action. An example of where this can be very useful is when a column may be attached to a masked text box and only support numeric entry. In this case, a replacement character of "0" would be better than the default "x." This new functionality allows this to be accomplished. BusinessLayer now supports a ManageSecurityReadOnlyState property
A property has been added to the BusinessLayer (Business Object) which allows the ManageUIReadonlyState to be set to False while still updating the bound control if a security permission is denied. For example, if the ManageUIReadonlyState on the BO or the IgnoreManageReadonlyState is set on a control, the field level security would not update the state of the bound control (including the message or mask). In this same scenario, if the ManageSecurityReadOnlyState is set to True (which it is by default) the bound control and column with the permission will be refreshed properly by restricting the end-users access or view of the column (as determined by the security permission).
So now the best of both worlds can be accomplished at the same time. Role Based Security now properly uses the message or key specified on the permission even when not selected for a user
Previously, if a permission was not selected (to either grant or deny the permission) the default message or key would be shown versus what was defined on the permission. So to properly reflect the defined permission, each user would have to select all permissions and then either grant or deny. Now, even if the permission is not selected for a user, the appropriate message and key will be used versus using the application default. BO Mapper Customization Wizard would not created exceptions for security keys only
When assigning a security key through the customziation wizard, the exception would not be created unless another exception within that same cycle was also created. This issue has been resolved. The StrataFrame Combobox, ListBox, and CheckedListBox now have a ValueMemberDataType property
The SF combobox, listbox, and checkedlistbox all support the ValueMemberDataType property added to the IListControl interface. This allows the ValueMember data type to be specified when allowing a list to be automatically populated using a business object. Previously, Object was assumed. However, in certain scenarios, an exact data type is required. An example of this is when field level security is implemented. If a combobox, for example, is bound to a column that has been denied and that combo was populated via a BO automatically, an error could occur because the security doesn't translate an object into a specific value but rather a NULL. A value will be returned for other data types such as integer (a zero) or a string (empty) when security prevent access to a bound column. RichTextToolstrip would "set" the Show properties to False under certain designer conditions
Under certain conditions, the RichTextToolstrip would always set the Show properties to False, hiding all of the RTT buttons. This issue has been resolved. Messaging icons updated
The icons that appear within the InfoBox and MessageForm dialogs have been updated to more modern icons. BusinessBindingSource not fully releasing all internal references
Under certain conditions, the BusinessBindingSource would not release all internal event handler references which would result in a memory leak. This issue has been resolved. Property AllowReclickOnSelectedItems added to the ThemedLinkMenu
A new property called AllowReclickOnSelectedItems has been added to the ThemedLinkMenu which allows a selected item to be clicked again when the LinkItemBehavior is set to ClickAndStick. This is good for situations when the ThemedLinkMenu is being used to show a context menu and the end-user closes the context-menu but the TLM item remains selected. Previously, the end-user would have to click off of the selected item and then back on before the context menu would be shown again since that logic would be plumbed into the ItemClicked event. New Localization and Messaging Editor
The Localization and Messaging editor has been updated to reflect themes as well as a much easier and more intuitive user interface. Keys are now avaialble within the tree list and available for editing immediately upon selection. Keys can also now be more easily copied to another language within the project. Keep an eye out for many new features to be released within this tool over the coming updates! Messaging editor now supports categories for messages as well as text values
The messages now support categories within the Localization and Messaging Editor making it easier to organize your localization projects. Rename function has been added to the Localization and Messaging editor
A rename function has been added to the Localization and Messaging editor which allows a key to be renamed from within the TreeView and then all languages with the same key name will be automatically updated. A category can also be renamed from this same mecahnism. Open output folder action added to Localization and Messsaing Editor
A new toolstrip button has been added that allows the output folder to be opened directly from within the Localizaton and Messaging Editor. This saves a lot of time when exporting to XML and prevents the need to manually open the Explorer and navigating. The GetAge method in the Tools.Common class did not always accurately return the age.
Under a very slim number of conditions the GetAge or GetAgeNumber methods would return an inaccurate age. For example, if the date of birth were 12/18/1990 and actual date was 12/15/2008, the age came back as 18 when the individual would not be 18 for 3 more days. This issue has been resolved. BusinessBindingSource may move the CurrentRowIndex back to 0 under certain conditions when adding a new record.
Due to the IBindingList.CurrentChanged implementation, there was an issue when adding a new row under certain conditions where the CurrentRowIndex would be moved back to the 0 position when updating the currency manager position. This issue has been resolved.
|
By Trent L. Taylor - 1/12/2009
- Businesslayer RefreshControls modified to respect the ManageUIReadonlyState under new conditions
The BusinessLayer has received several new properties including one called ManageSecurityReadOnlyState which allows field level security permissions to trump the field and BO level editing states. However, if the control was ever manually turned disabled or enabled programmatically (outside of binding and security) the control would re-enable itself under certain conditions if the IgnoreManageUIReadOnly was set to false (the default value). In this same line of logic, the ManageUIReadonlyState of the BO also needed to be added to this test to prevent the accidentl re-enabling of controls that had been otherwise disabled. BrowseDialog may position self at 0,0 initially prior to any form dimension saving.
The user settings that are used to retain the browse dialog position, size, and bar locations introduced an issue under certain conditions where the initial display of any browse dialog would appear at the 0,0 position instead of the center of the screen. This issue has been resolved.
|
By Trent L. Taylor - 1/21/2009
Here is an updated version of the StrataFlix sample that will work with the new BO logic. Sorry for the delay!
|
By Trent L. Taylor - 2/17/2009
- The Change Password dialog of the Role Based Security was not respecting localization.
The Role-Based Security change password dialog title was always appearing in English. The appropriate key has been applied and this issue has been resolved. Security password change dialog did not show all broken rules simulating a form that would not close
The most common broken rule that was not being displayed when changing a password was password complexity. When a user was forced to change their password and did not meet all of the requirements of the password, the form would not always show the broken rules for the password field when OK was clicked. This issue has been resolved. Security password dialog no longer allows access to Cancel button when being forced to change
If an end-user logged in and was forced to change their password the "Change Password" dialog would show a cancel button. However, when the cancel button was clicked the form would close and immediately reopen. The cancel button is no longer accessible when the end-user is being forced to change their password preventing any confusion. SQL Server 2008 is now fully supported
SQL Server 2008 is now fully supported from the design-time environment all the way through to the DDT deployment. Connection Manager now supports 2008 authentication.
When using the connection manager authentication would fail when trying to connect to a 2008 SQL Server. This was due to SMO 9.0 attempting to talk to 2008 which requires SMO 10.0. To prevent this type of thing from happening in the future and to prevent any SQL assemblies being added to projects when an SF UI control is dropped into a non-SF application. Inherited business objects that use the same base business object and share the same property descriptor dictionary can now have properties of the same name.
In previous versions, a base business object A that defines the property descriptor dictionary (in the .designer.* file) would not allow more than one descriptor to be added for a given name. Subclass B and subclass C, both inheriting from A could not define a property with the same name or at runtime, the first instance of B or C instantiated in the system would define the property descriptor for only its class. The property descriptor dictionary now allows more than 1 field descriptor per field name and uses the ComponentType to determine the inheritence branch of the property descriptors in order to return the correct descriptor when the property name is supplied. Role Based Security - Error within the user editor if old permissions deleted
In the cycle of development , it is possible that some keys may be deleted or removed altogether. If the permissions are removed and a link record still exists between a user and a permission that doesn't exist, an error would occur when going into the user editor. This issue has been resolved.
ES Notice: For those developers using the Enterprise Server, attached here is the ES site contents that contains all files necessary to update your ES server sites. This is an easier mechanism to update than using ther ES install, especially if you already have the site up and running. Just replace your site contents with these files and the restart IIS and you will be good to go.
|
By Trent L. Taylor - 3/12/2009
- Changed enterprise server to account for UTC time when passing parameters to commands.
This is a breaking change. The server and client must both be upgraded or this change will break communication between the ES and the clients.
Before this change, the ES would not consider UTC time when passing parameters on commands, but would use UTC to return the results of a query back to the client (through .NET's serialization of the data table). Now, UTC is taken into account when passing parameters.
If the CustomDataSerializer is used, UTC is not considered when passing parameters or when returning results back to the client. ListView column sorting would not work when swapping between dates and strings
When a ListView contained columns that were dates and strings, the ListViewColumnSorter would not sort the columns properly for each type. If the first column (default sort column) was a date, then the sorter tried to sort all columns as dates. If the default sort column was a string, then all columns attempted to sort as a string. This issue has been resolved. New Database Deployment Toolkit deployment package merge type added
A fourth merge type has been added to the data deployment package which will skip any data deployment for that item if the destination table already contains records. Database Deployment Toolkit IDE has been tweaked for better UI interaction
The DDT UI now shows the stored procedures sub-categories within the treeview making it easier to locate and work with sprocs in a particular category. Additionally, at times, when a new table was added or a sproc was saved, for example, the item would not be properly selected within the list or treeview. These types of issues have been resolved. Database Deployment Toolkit now supports search and find functionality within the IDE
The Database Deployment Toolkit now supports the ability to search through all elements of the profile and includes searching within T-SQL body content, names, and descriptions. Making it extremely easy to locate code and sprocs within large profiles. Also, once within the search results list, the item can be modified directy from within that list.
|
By Trent L. Taylor - 3/30/2009
- Business object enumerator had a memory leak under certain conditions.
The BusinessLayer enumerator had a memory leak under certain conditions. This was noticed predominately in the web business binding source. This issue has been resolved. MicroFour StrataFrame Inherited UI (DevExpress) has been updated to 8.2.8
The templates as well as the MicroFour StrataFrame Inherited UI (DevExpress) has been updated to 8.2.8. Other minor bug fixes to be detailed at a later date.
* Log in to the My Account area to gain access to the updates.
|
By Trent L. Taylor - 4/17/2009
- BrowseDialog now supports the ability to override the underlying query table (or view)
Two new properties have been added to the BrowseDialog that add a phenominal amount of flexibility. You can now set the OverrideSearchTableName and OverrideSearchTableSchema. This allows a view to be used in place of an underlying table associated with a BO making it possible to search across multiple tables. The BrowseDialog has always been limited to searching on a single table. With this feature, a view can be supplied as an override and fields that do not belong to the table in which the BO represents can be searched. See the update on the overridable field data type on the search fields also. BrowseDialog search fields now allow the field data type to be overwritten.
There is now an additional tab when modifying a search field on a Browse Dialog. The Data Type tab allows the field data type to be overwritten instead of being pulled from the business object. This is especially helpful and necessary when using a view as an overridable search table on the browse dialog and the field being added will be part of the view but is not part of the mapped BO. This allows any field to be specified and the field data type provided so that it can be searched on just as if it existed within the BO mapping of the business object. All security dialogs now save any settings in HKEY_CURRENT_USER instead of HKEY_LOCAL_MACHINE
The RBS security dialogs now only reference HKEY_CURRENT_USER in the registry versus HKEY_LOCAL_MACHINE which will prevent any types of errors from occuring for restricted users. Danish Keys Updated
The pre-localized Danish keys have been updated. Other minor changes and bug fixes to be noted at a later date.
* Log in to the My Account area to gain access to the updates.
|
By Trent L. Taylor - 5/11/2009
- The unique index type for CONSTRAINT versus INDEX was not being respected
This would not be an issue in most situations. However, if there were two tables with the same index name and both indexes were set as unique and the index was not the primary index, this error would crop up. The issue is that when SQL Server uses the CREATE INDEX versus the ADD CONSTRAINT command, multiple unique indexes with the same name (while not being the primary key) can be created. This issue has been resolved. Business object now has a IsCheckingRules property
An IsCheckingRules property has been added to the BO that is True only when the rules are being checked for the BO. This is useful in scenarios where logic may be added to the Navigating event, for exmaple, and you do not want to execute that code when checking rules. Database deployment toolkit not properly updating the date and time of an object history item
This would not cause an issue with deployment or a package. However, when a new object history item was created the object history date and time was not being properly updated. This issue has been resolved. The TabOrderController would not advance when AutoComplete mode is turned on and the EnterAdvances was not set
This actually happens to be an issue with how .NET raises events. The OnKeyDown was not called on controls that support AutoComplete when the AutoCompleteMode was set to a value other than None. This issue has been resolved. SqlTransaction connection to reader being closed when not using SPROCS
An error could occur when using transactions and CRUD settings or SPROCS were not being used for inserts and updates. This issue was accidentally introduced in a recent build when making a change to improve performance and resolving another issue in regards to a memory leak. This issue has been resolved. Collation can now be added to a database within the DDT
The collation can now be set for a database within the DDT. This is a plain text field that can be copied from SQL Server and then pasted into this location. If the specified collation cannot be found, the default collation for the database will be used.
* Log in to the My Account area to gain access to the updates.
|
|