
v3.0 [Sep 29, 2010]
Keywords used to classify changes:
- [New] – a totally new feature;
- [Change] – a change in a member functionality or interactive behavior;
- [Improved] – something is implemented better than in previous versions;
- [Renaming] – a name of the member was changed so it is enough to rename it in your code;
- [Fixed] – a fixed bug or solved problem.
iGrid.NET Control Changes
1.This build of iGrid fully supports .NET Framework 4.0 client profiles in Visual Studio 2010. The iGrid.NET control is implemented in two DLLs now, TenTec.Windows.iGridLib.iGrid.dll and TenTec.Windows.iGridLib.iGrid.Design.dll. The former is the core functionality which should be redistributed with your end-user applications. The latter is the implementation of the design-time features and is used only while you are developing your apps inside Visual Studio.
2.Two new events, CurCellChangeRequest and CurRowChangeRequest, were implemented. They are raised when the user is about to change the current cell or row using the keyboard or mouse and deny this if required dynamically.
In contrast to the CurCellChange and CurRowChange events which are raised after the current cell or row has been changed, the new events are raised before the change and allow you to deny the forthcoming change with the Boolean DoDefault parameter passed by reference. The other parameters of the new events are RowIndex and ColIndex (only for CurCellChangeRequest) which can be used to know the indices of the new row and column the user is going to make current.
The CurCellChangeRequest and CurRowChangeRequest events are useful if you wish to protect some cells from selection dynamically in contrast to the iGCell.Selectable property, or when you need to perform some actions before the current cell or row is changed and abandon the change if something in your actions went wrong (for instance, you update the database when the user jumps from one row to another, and you need to stay in the current row is the update failed).
Note that these events aren't triggered as a result of current cell or row change from your code using such methods as SetCurCell or PerformAction.
3. iGrid implements two new events, RowsAdded and RowsRemoved. The first event is raised when a new row or a bunch of rows is added (or inserted) to the grid. The second event is raised when one row or a range of rows is removed. Both events has the RowIndex and RowCount parameters which are used to retrieve the index of the first inserted/removed row and their count (if one row is added/removed, RowCount equals 1).
4. The Header object property has a new method called Reset. It removes all existing header rows except the first one and splits all merged column headers as if you had the header when you had just started to work with iGrid after defining some columns. All other parameters of column headers (width, text, color settings, etc) remain unchanged. This method can be useful in the situations when you need to change the set of header rows and/or column header parameters without changing the current cell set and such column properties as width and their order.
5. The iGrid cell object (the iGCell class) has 3 new properties which return the effective cell type, cell type flags and the check box state for check box cells. These are the EffectiveType, EffectiveTypeFlags and EffectiveCheckState properties of the iGCellType, iGCellTypeFlags and System.Windows.Forms.CheckState types respectively.
6. A new static (shared in VB) iGInternalInfrastructure class was implemented. This class is designated to store the public members of iGrid.NET which are used only to implement internal functionality for interaction between the iGrid parts (such as its design-time features DLL or PrintManager add-on). The methods and types of this class are practically useless for the developer, and they are marked with the EditorBrowsable attribute with the EditorBrowsableState.Never setting so you'll never see them in the code editor in the IntelliSense member list. The FillTreeBranchData method of the iGrid class used by PrintManager was also moved into the iGInternalInfrastructure class in this version.
7. A new CustomDrawComboButton event you can use to draw your own combo buttons was implemented.
If you wish to redraw the combo button in a particular cell with the RowIndex and ColIndex indices, set the DoDefault parameter to False to prevent the default drawing and draw your own button in the Bounds rectangle taking into account the button state passed in the State field in this event. Note that the pressed combo button is always drawn as hot regardless whether the mouse pointer is inside its area or not, and the State filed reports the iGControlState.HotPressed in all these cases (iGControlState.Pressed is never used for combo buttons).
8. The default value of the RowSelectionInCellMode property was changed from 'MultipleRows' to 'None' which corresponds to the expectation of the users in the most cases.