EhLib History

### History of the Library

#### Version 9.2

> + Supports of ARC (Automatic Reference Counting) Delphi compilers

> + Compatibility with the CrossVCL library. Now you can compile your VCL project into a GUI application for OS X and Linux.

> + Technology for saving application settings - SettingsKeeper

> + Animation when moving columns in DBGridEh

#### Version 9.1

> + Storage of the library's language resources with the ability to dynamically load

> + Auto-save PivotGrid layout when reloading data

> + Showing / hiding total rows/columns in PivotGridEh

> + New aggregate functions in PivotGridEh (Product, StDev, StDevp, Var, Varp)

> + Editing Cells in PivotGridEh

> + Dynamic calculation of found cells in SearchPanel

> + Functions for saving / restoring the column state to an INI file and Registry in DBVertGridEh

> + The filter icon in the DBGridEh header

#### Version 9.0

> + New type of DropDown calendar with support for entering date and time

> + Highlight holidays, weekends and current day in TPlannerCalendarPickerEh component

> + Highlight current day and current time in TPlannerControlEh

> + AllowedOperations property in TPlannerControlEh

> + ReadOnly state for TPlannerControlEh and TPlannerDataItemEh

> + Time divider of 5, 6, 10, 15, 30 and 60 minutes in TPlannerDayViewEh and TPlannerWeekViewEh components

> + New properties and events in TPlannerXXXViewEh components (TPlannerDayViewEh, TPlannerWeekViewEh …)

> + CellButtons in columns of DBGridEh and rows DBVertGridEh to create buttons in cells of the grid operating without activation InplaceEditor text editor.

> + Search in a mode of “Begins with” in SearchPanel

> + Selecting of rows in DBGridEh.DataGrouping mode by pressing the group row in the indicator section

#### Version 8.2

> + New features in SearchPanel of TDBGridEh

> + SearchPanel in TDBVertGridEh

> + Fill Right Empty part of TDBGridEh with cells like patterns

> + Event to customize and draw title cells including SupperTitle in MuliTitile mode.

> + Painting editor buttons (EditButtons) with a transparent background.

#### Version 8.1

> + Bookmarks as pointers to records in TMemTableEh

> + Printing of DBVertGridEh, TPivotGridEh, TPlannerControlEh components

> + New event in TPlannerControlEh to customize SpainItem hint.

> + MRUList values can be formed automatically on the basis of a list of unique values in the DataSet

> + New events in the TDBGridEh.SearchPanel class

####

#### Version 8.0

> + New components for planning and visual manage of time events.

> + New components to export DataSet to a text file and import from a text file

> + New property - RefLink in the DBGridEh.TColumnEh and DBVertGridEh.TFieldRowEh classes

> + Data transfer from DBGridEh and DBVertGridEh into clipboard with format compatible with MS Excel

> + Progressbar in the TPivotGridEh that shows a percent for data forming with possibility of interruption the process

> + Component that allow to hide other components on the Form at Design-Time

> + Export the contents of the TDBVertGridEh component into Xlsx file

#### Version 7.0

> + Supports LCL Library (Lazarus, Free Pascal).

> + New components:

> > Component TDBMemoEh
> > Component TDBImageEh
> > Component TDBRadioGroupEh
> > Component TDBRichEditEh

> + Export DBGridEh to Xlsx format.

> + New DefaultAction property in the TEditButtonEh class.

> + In DBGridEh:

> > Interactive edit buttons when displaying of graphics data
> > Width and height of scrollbar areas
> > Advanced drop-down list box to filter the data in the grid (STFilter) with possibility to search and filter data.
> > New property - PopupMenuParams and customizing of the global drop-down menu for all the Grids of a project using TDBGridEhCenter class.

> + Global class - TDBAxisGridEhCenter to implement a single point of modification the behavior of DBGridEh and DBVertGridEh components.

> + ControlLabel – inline associated label for EhLib edit controls.

> + New components for the cross-tabulation data analysis: TPivotGridEh, TPivotDataSourceEh, TPivotGridToolBoxEh.

#### Version 6.3

> + A new property SelectionDrawParams: TGridSelectionDrawParamsEh

> SelectionDrawParams property is added in DBGridEh and DBVertGridEh component, which allows you to customize the style of the currently selected cell.

> The property has the following sub-properties:

> > SelectionStyle: TGridSelectionDrawStyleEh - paint style of the currently selected cell

> > DrawFocusFrame: Boolean - Specifies whether to draw a dotted border around the currently selected cell.

> > TGridSelectionStyleEh type contains the following values:

> > > gsdsDefaultEh - The default style is determined depending on the version of the OS and included Windows schemas and Delphi schemas.If Windows schemes is on the gssListViewThemedEh is used. If the active style of Delphi XE is on the GridThemed style is used.

> > > gsdsClassicEh - Classic style. The cell is painted by uniform clSelected color.

> > > gsdsGridThemedEh - The Delphi XE style is used to draw a celeced cell.

> > > gsdsListViewThemedEh - Windows ListView style is to draw a celeced cell.

> For a global management of style use the properties of the global object GridDrawStyle of TGridDrawStyleEh type.

> Use the procedure GridDefaultDrawStyleEh, SetGridDefaultDrawStyleEh, declared in a module GridsEh.pas to access GridDrawStyle the object.

> TGridDrawStyleEh type has the following properties:

> > SelectionStyle: TGridSelectionStyleEh - style shading display the currently selected cell.

> > DrawFocusFrame: Boolean - Specifies whether to draw a dotted border around the currently selected cell.

> To change the style of lighting in all grids of project, use code like this:

> > unit MyMainForm;

> > uses ... GridsEh;

> > ....

> > initialization

> > > GridDefaultDrawStyleEh.SelectionStyle := gsdsClassicEh;

> > > //Draw selected cell by the classic style.

> > end.

> Setting Lookup relationships directly in the columns of the grid without using of lookup fields.

> + A new property - Column.LookupParams: TDBLookupDataEh in columns of DBGridEh and DBVertGridEh.

> The property allows you to setup lookup relationship in the grid columns.

> The property consists of the following sub-properties:

> > KeyFieldNames: String - Identifies the field or fields in the dataset that must be matched in a lookup dataset when doing a lookup.

> > LookupCache: Boolean - Determines whether the values of a lookup field are cached or looked up dynamically every time the current record in the dataset changes.

> > LookupDataSet: TDataSet - Identifies the dataset used to look up field values.

> > LookupDisplayFieldName: String - Identifies the field from the lookup dataset whose value is displayed in place of KeyFields.

> > LookupKeyFieldNames: String - Identifies the field or fields in the lookup dataset to match when doing a lookup.

> Other features of this version

> + New property - TBaseColumnEh.CaseInsensitiveTextSearch: Boolean default True. Defines CaseInsensitive search in a text editor for the dropdownbox items.
> The property as added in columns of DBGridEh, DBVertGridEh and in TDBComboboxEh TDBLookupcomboboxEh controls.

> + LimitTextToListValues property of Boolean type. Defines to limit of values in the edit box by the list of values in the dropdownbox.
> The property as added in columns of DBGridEh DBVertGridEh and in TDBComboboxEh control.

> + In DBGridEh. At Design-Time it is allowed select DataSet from the list of Favorite DataSets DataSet is created via the Grid Design Panel.

> + In the Filter Drop-down lists of the DBGridEh it is allowed to selected several values quickly by pressing and dragging the pressed mouse.

> + In DBGridEh.
> If gioShowRowselCheckboxesEh value is in the DBGridEh.IndicatorOptions property then it is allowed to selected several records quickly by pressing and dragging the pressed mouse.

> + In DBGridEh.Pas
> A new property ColWidthsOptimizationMaxWaitingTime is added in the global class TDBGridEhCenter.
> This property can be assigned by a maximum time, which will be used to calculate the widths of the columns when the user double click on the line that separates columns.
> If the time of calculation of column widths is exceeded the value that was set in ColWidthsOptimizationMaxWaitingTime then
> grid cancels a calculation of the remaining records.
> The default value is 2000 (2 seconds).

> + New property ShowImageAndText is added in the TColumnTitleEh class.
> If ShowImageAndText = True and the title of the grid is set to display images from TitleParams.Images, then the text of the column header
> will be displayed along with the picture. If ShowImageAndText = False, it will only display the picture without the text.

> + New methods GetColCellParams GetTitleParams RowDetailPanelShow and RowDetailPanelHide are added in the global class TDBGridEhCenter,
> This mathods are virtual methods so you can override them in new derived class TMyDBGridEhCenter
> and control corresponding events for all Grids of the project.

> (DBVertGridsEh.pas)

> + A new property OptionsEh of TDBVHGridOptionsEh type is added in the TDBVertGridEh component.
> TDBVHGridOptionsEh type contains the following values:

> > dgvhHighlightFocusEh - Highlight the current cell when the grid has focus.

> > dgvhClearSelectionEh - Clear a selected area when a user navigates the current cell in the grid.

> > dgvhEnterToNextRowEh - Move the current cell to the next row in a grid when user presses an Enter key.

> > dgvhTabToNextRowEh - Move the current cell to the next row in a grid when user presses an Tab key.

> > dgvhRowsIsTabControlsEh - Rows in the grid are operated as a list of edit controls. ie :

> > > - Does not allow to leave the current record of DataSet with keyboard keys.

> > > - When the current cell in the grid is on the last line, the Tab key on the grid translates the input focus to the next TabStop Control of a Form (dgvhTabToNextRowEh property must be included).

> > > - When the current cell in the grid is on the first line , then by Alt+Tab key in the Grid will put focus to the previous TabStop Control of a Form (dgvhTabToNextRowEh property must be included).

> + TDBVertGridEh allows to select lines and rectangular region of cells with mouse or keyboard and supports ClipBoard operations.

> + A new property - AllowedSelections of TDBVertGridAllowedSelectionsEh. Specifies the permitted types of selections in the grid.

> > vgstRowsEh - Allows to select lines in the grid with the mouse or with the keyboard.

> > vgstRectangleEh - Allows the select square area in the grid with the mouse or with the keyboard.

> > vgstAllEh - Allows to the select all the data in the grid by a Ctrl+A key combination.

> + A new property - EditActions of TGridEditActionsEh type. Defines the permitted operations with the selected area.
> geaCutEh, geaCopyEh, geaPasteEh, geaDeleteEh, geaSelectAllEh.

> + New Property - Selection of TDBVertGridSelectionEh type. The property contains information about the selected area in the Grid.

> + Added TDBVertGridEh.OnRowCategoriesNodeExpanded and TDBVertGridEh.OnRowCategoriesNodeCollapsed events.

> (DataDriverEh.pas)

> * Changes:

> Published parameter - TConnectionProviderEh.OnGetServerSpecOperations: TResolverGetServerSpecOperationsEh was changed.

> Old declaration: TResolverGetServerSpecOperationsEh = function (var Processed: Boolean): TServerSpecOperationsEh of object;

> New declaration: TResolverGetServerSpecOperationsEh = procedure (var Processed: Boolean; var ServerSpecOperations: TServerSpecOperationsEh) of object;

> Announcement via function caused an inexplicable error in compile-time in C++ Builder.

> (DBCtrlsEh.pas)

> + New events (OnCloseDropDownForm OnOpenDropDownForm) are added in TDBEditEh, TDBDateTimeEditEh, TDBComboBoxEh controls.

#### Version 6.2

> + DropDownForms technology - customizing droped down windows.

> Typical DropDown window - is the list that appears in the TComboBox control when you click on the edit button with down arrow in the control.
> New technology of DropDropForms allows you to create forms that appear and work similarly to the drop down list of TComboBox. These forms can be displayed by pressing one of the edit buttons within controls TDBEditEh, TDBNumberEditEh, TInplaceEditor in DBGridEh etc.

> See detailed description of using DropDownForms in the document <About EhLib 6.2 Eng.doc>; Section - DropDownForms

> and See an Example in the:

> > <EhLib Archive>\Demos\DropDownForm\Project1.dpr

> compiled project:

> > <EhLib Archive>\Demos\Bin\DropDownForm.Exe

> New properties to customize the drop-down Form are in the following classes:
> (For DBGridEh)

> > TColumnEh.DropDownFormParam
> > TColumnEh.EditButtons[i].DropDownFormParam

> (For DBVertGridEh)

> > TFieldRowEh.DropDownFormParam
> > TFieldRowEh.EditButtons[i].DropDownFormParam
> > TDBEditEh.EditButton.DropDownFormParam
> > TDBEditEh.EditButtons[i].DropDownFormParam

> In EditButtons for TDBNumberEditEh, TDBDateTimeEditEh, TDBComboBoxEh, TDBLookupComboBoxEh controls.

> (In DBVertGridEh)

> + Added possiblity to group rows into categories. See TDBVertGridEh.RowCategories property.

> Assign category name in the property TFieldRowEh.CategoryName.
> The rows can be grouped by: Category Title, Field Type or presence/absence of values ??in the current record.

> + Added possiblity to sort the rows by the row captions. See property TDBVertGridEh.RowsSortOrder.

> (Â DBGridEh)

> + In DBGridEh at Design-Time it is allowed to create DB components and assign DataSource and DataSource.DataSet properties. Right-click above the Design-Time panel in the lower right corner of the Grid and select the menu to assign or create a required component.

> (Â TIniPropStorageManEh)

> * In the TIniPropStorageManEh.WritePropertiesText method the class that is used to write data to a file is changed. Instead of TIniFile the TMemIniFile is now used. It accelerated the write operation to the file, but changed the location of the file when IniFileName property is not specified a full path. The new version of the file will be saved in the current directory instead of the WINDOWS directory.

#### Version 6.1

> + A new component TDBVertGridEh - DataSet Grid with the Vertical Orientation.

> The component is used to display and edit a single record of DataSet
> in a vertical orientation.

> Basic properties of the TDBVertGridEh:

> > Rows: TDBVerGridRows - A collection of items of TFieldRowEh type to display fields
> > of a record. This is analogous to the Columns collection in TDBGridEh.

> > Options: TDBVHGridOptions - Configure basic properties of the vertical grid.

> > RowsDefValues: TFieldRowDefValuesEh - default values for line Grid row - TFieldRowEh. This is analogous of ColumnDefValues in TDBGridEh.

> > GridLineParams: TDBVertGridLineParamsEh - Color settings of the dividing lines in vertical grid.

> > DataColParams: TDBVertGridDataColParamsEh - The setting of the column with data.

> > LabelColParams: TDBVertGridLabelColParamEh - The setting of the column with row label.

> See an example of using TDBVertGridEh in a project:

> > <EhLib Archive> \ Demos \ DBVertGridEh.SimpleDemo \ Project1.dpr

> compiled project:

> > <EhLib Archive> \ Demos \ Bin \ DBVertGridEh.SimpleDemo.Exe

> * There are changes in the grids inheritance tree:

> New inheritance tree is:

> TCustomControl

> |

> - TCustomGridEh

> |

> - TCustomDBAxisGridEh

> |

> - TCustomDBGridEh

> | |

> | - TDBGridEh

> |

> - TCustomDBVertGridEh

> |

> - TDBVertGridEh

> * Some constants and procedures are moved from the module DBGridEh
> to the DBAxisGridsEh.

> + Added a new global function to display a ObjectInspector-like Form.
> Use the next procedure to display the ObjectInspector-like Form:

> > procedure ShowObjectInspectorForm (
> > Component: TObject; // A component to Inspect
> > FormBounds: TRect; // Form Borders
> > NewForm: Boolean = False // Show as a new Form
> > );

> This is a simple ObjectInspector that can be used to debug
> property setting at run-time.

> See an example that shows how to use ShowObjectInspectorForm here:

> > <EhLib Archive> \ Demos \ ObjectInspectorForm.SimpleDemo \ Project1.dpr

> compiled project:

> > <EhLib Archive> \ Demos \ Bin \ ObjectInspectorForm.SimpleDemo.Exe

> (In DBGridEh)

> + Added an ability to change the size of RowDetailPanel by mouse at RunTime.
> New properties in RowDetailPanel:

> > property VertSizing: Boolean - Show an RowDetailPanel Splitter at the buttom of the RowDetailPanel.

> > property MinHeight: Integer - Minimum height of the RowDetailPanel.

> > property MaxHeight: Integer - Maximum height of the RowDetailPanel.

> > property SizingBarBeveled: Boolean - Splitter area has a 3D border.

> > property SizingBarHeight: Integer - The height of the Splitter.

> + Added an ability to darken gray the grid while the data is loading.

> See StartLoadingStatus and FinishLoadingStatus methods in the TDBGridEh.

> See the example that shows this opportunity in a project:

> > <EhLib Archive> \ Demos \ DBGridEh.LoadingStatus \ Project1.dpr

> compiled project:

> > <EhLib Archive> \ Demos \ Bin \ DBGridEh.LoadingStatus.Exe

#### Version 6.0

> + Added new components to service the access through the technology DataDrivers.

> ConnectionProviders:
> TADOConnectionProviderEh - this component provides interaction between the
> TADODataDriver and TADOConnection in Design-Time and Run-Time. It contains a built-in TADOConnection component. It specifies the type of the SQL server for the correct operation of the extra operations on the server, such as the value of the incremental the table fields after inserting records, etc.

> Similar functions are performed by next components:

> TDBXConnectionProviderEh to services the access through the DBX Engine.

> TIBXConnectionProviderEh to services the access through the IBX Engine.

> TBDEConnectionProviderEh to services the access through the BDE Engine.

> + Dynamic properties of the EhLib components - DynProps.
> A collection of elements that implement the dynamic properties of the components and
> class libraries. Every control of EhLib have DynProps collection.

> In the DBGridEh component:

> + Added new sort marking images and the sort order now depends of the type of the field.

> + Added ability to customize colors of dividing lines and to define presence/absence of
> lines in different areas of the grid.

> + Added opportunity of flexible customizing of drawing the grid headers.

> + Added opportunity of flexible customizing of rendering the footer.

> + Added opportunity of flexible customizing of the drawing area SubtitleFilter.

> + Added the ability to display the image data in the cells from the Bolb fields in the
> various graphic formats.

> + Added the ability to display a graphical background Image.

> + Added ability of the advanced search and filtering of data.

> + Added an extra panel in the horizontal scroll bar.

> + Added opportunity of flexible adjustment of the group title (DataGrouping).

> + Added ability to display summing rows in groups.

> + Added opportunity of flexible adjustment for the HideDuplicates values.

> + Added a new option in display elements of the tree structure.

> + Added the ability to filter data in the drop-down lookup lists when typing text.

> In the component MemTableEh

> + Added an ability to change the internal structure of the array without data loss.

> + Added an ability to save/load data from/to a file (s).

> - Closed support for Delphi and C++ Builder versions lower than 7.

> + Added support of Embarcadero RAD Studio XE3.

#### Version 5.6

> * Fixed handling of the global variable OldStyleFlatBorder.
> In previous versions, if OldStyleFlatBorder = False (default value is False), then if TDBEditEh.Flat = True then
> drawing boundaries of TDBEditEh in Flat style never worked. In this version, if OldStyleFlatBorder = False then drawing boundaries of TDBEditEh in Flat style will work when the Windwos is in the Classic style and drawing Flat border will not work when the Windwos is in Themed environments and
> application use Themes.

> + Added a Images property in the class TEditButtonEh (TDBEditEh.EditButtons[i].Images) of a TEditButtonImagesE type.

> > TEditButtonImagesEh = class(TPersistent)
> > published

> > > property NormalImages: TCustomImageList;
> > > property HotImages: TCustomImageList;
> > > property PressedImages: TCustomImageList;
> > > property DisabledImages: TCustomImageList;

> > > property NormalIndex: Integer;
> > > property HotIndex: Integer;
> > > property PressedIndex: Integer;
> > > property DisabledIndex: Integer;

> > end;

> Now it is allowed to draw Images from ImageList in EditButtons of Edit controls and columns of TDBGridEh. Images are drawn when TEditButtonEh.Style = ebsGlyphEh and TDBEditEh.EditButtons[i]. Images.NormalImages is assigned.

> + Added EmptyDataInfo property in DBGridEh. If this property is enabled and DataSet is Active and it contains no data, then DBGridEh draws <No data> text in the center of the client area. You can specify the inscription for each DBGrid or set a global variable DBGridEhEmptyDataInfoText that is located in the module DBGridEh.

> + Added EmptyDataInfo property in the TDBEditEh, TDBNumberEditEh, TDBComboBoxEh, TDBLookupComboBoxEh. Use TDBEditEh.EmptyDataInfo.Text property to display the text that will be displayed in the Edit control when it contains no data.

> + Added standart property Touch (supported in Delphi 2010 and higher) for DBGridEh, TDBEditEh, TDBNumberEditEh, TDBComboBoxEh, TDBLookupComboBoxEh, TDBDateTimeEditEh.

> + Added the ability in design-time to open the Edit buttons collection editor (EditButtons) in TDBEditEh, TDBNumberEditEh, TDBComboBoxEh, TDBLookupComboBoxEh, TDBDateTimeEditEh controls.A menu item to open the collection is in the context menu of the component that opens on the right mouse button.

> + In TDBCheckBoxEh added the ability to set Empty value ('') for properties ValueChecked, ValueUnchecked. This allows you to set the state of CheckBox for Null value of DB field.

> + In DBGridEh added OnDataGroupGetRowParams event. The event is used to customize information for group records (when Grid works in data grouping mode - Grid.DataGrouping.Active = True). In the event you can specify color, font, text and pictures for the group row.

> + in the module DBGridEhImpExp added a global procedure - ExportDBGridEhToOleExcel. The procedure is designed to export data from DBGridEh to MS Excel. The procedure uses OLE to export data which means the MS Excel must be installed on the computer to allow this procedure work.

> + At design-time a context menu of TDBGridEh component displays information about the version of the library.

> + Added global procedure - DrawProgressBarEh. The procedure allows you to draw a picture in the form of a progress bar (ProgressBar). It can be used to display progress bar in grid cells. See example of use in the DEMOS\DEMO1 project.

#### Version 5.5

> + Added support of Embarcadero RAD Studio XE2.

> + ThemeTitleFillElement property add to the TDBGridEhStyle class.
> property ThemeTitleFillElement: TGridThemeTitleFillElementEh; TGridThemeTitleFillElementEh = (gtfeHeaderItemEh, gtfeSplitButtonEh);
> This property defines Themes element that will be used to fill the background the grid titles when property TDBGridEh.Flat = False.

> * TDBGridEh.Flat property has no effect of filling of then title background under RAD Studio XE2 when TStyleManager.IsCustomStyleActive is True. In this case the grid fills titles using Themes style that is defined by DBGridEhDefaultStyle.ThemeTitleFillElement property.

> * The filling of the grid titles uses thHeaderItem Theme style rather then ttbSplitButton style from version EhLib 5.5. Set global property DBGridEhDefaultStyle.ThemeTitleFillElement to gtfeSplitButtonEh for filling the title in the old style.

#### Version 5.4

> + In DBGridEh. Checkboxes can be shown in the indicator column. Checkboxes is used to select records in the Grid. Also it is needed to customise properties of the Grid to allow selecting records: dgMultiSelect in Options, gstRecordBookmarks in AllowedSelections.

> + In DBGridEh. IndicatorOptions property of TDBGridEhIndicatorOptions was added.
> TDBGridEhIndicatorOptions = set of TDBGridEhIndicatorOption;
> TDBGridEhIndicatorOption = (gioShowRowIndicatorEh, gioShowRecNoEh,
> gioShowRowselCheckboxesEh);
> gioShowRowIndicatorEh - have same meaning as dgIndicator in Options.
> gioShowRecNoEh - have same meaning as dghShowRecNo in OptionsEh.
> gioShowRowselCheckboxesEh - show checkboxes in the indocator column.

> + In MemTableEh. The principle of storing data for Calculated and Lookup fields was changed. Now values of these fields are stored in a special buffer for each record, and they are not recalculated each time when the data in the grid is repainted or scrolled. It allows to increase speed of showing data of Lookup and Calculated fields in the DBGridEh. Calculated and Lookup fields are recalculated only when the MemTableEh is opened or when record is updated.

> * Changes in the MemTableEh. If the MemTableEh is connected to DataDriver and fields are created in Design-Time (as Persistent Field Components), then the MemTableEh creates internal structure of records taking description from Persistent Fields rather than taking structure from the DataDriver. On loading data from DataDriver it is not necessary that types and number of fields in the MemTableEh have the same structure as records which are delivered from the DataDriver.

#### Version 5.3

> + Added support of Embarcadero RAD Studio XE

> + Added Options property in MemTableEh of TMemTableOptionsEh type.
> TMemTableOptionsEh = set of TMemTableOptionEh; TMemTableOptionEh = (mtoTextFieldsCaseInsensitive);
> mtoTextFieldsCaseInsensitive - Defines whether string fields should be compared in a case-sensitive or case-insensitive manner when data is sorting and filtering.
> + Added printing of grouped data in TPrintDBGridEh when Grid.DataGrouping is active. Use TPrintDBGridEh component to print and preview data.

> + Added CommandTimeout property in TADOCommandEh component.

#### Version 5.2

> + Added feature to group data in the DBGridEh.
> It is allowed to make grouping at run-time and design-time.
> Grouping works only when the grid is connected to TMemTableEh dataset.
> Use next subproperties of Grid.DataGrouping property to adjust grouping
> Active: Boolean - Set this propery true to active grouping.
> DefaultStateExpanded: Boolean - defines initial expapnding/collapsing state of new created elements of the grouping tree.
> GroupLevels: TGridDataGroupLevelsEh - Collection of group levels. Use this property to create template of the grouping.
> GroupPanelVisible: Boolean - Set this property to True to show special panel at the top part of the grid. Then the panel is thisible it is allowed to form group levels by mouse. Drag title of the requaried column to the group panel and drop it onto panel.
> Font: TFont - Controls the attributes of the default font of group records in the grid.
> Color: Tcolor - Default background color of the group records.

> See demonstration project of grouping in Demos\DataGrouping directory.

#### Version 5.1

> * The type of RowPanel property was changed. Instead of Boolean type, now it
> is an object property with subproperies:
> Active: Boolean - Defines if it is possible to place cells under each over and if every propetry can have personal hight.

> + NavKeysNavigationType: TGridRowPanelNavKeysNavigationTypeEh - defines the order of navigation over cells in the grid when keys Up, Down, Left, Right are pressed. rpntRowToRowEh - (by default) Keys Up, Down move current cell to next or previouse record of dataset. Keys Left, Rigth works as Tab and Shift-Tab
> rpntCellToCellEh - Keys Up, Down move current cell to under or above last position from the current cell. Keys Left, Rigth move current cell to left or right position from the current cell.

> + TabNavigationType: TGridRowPanelTabNavigationTypeEh - defines an order of going through cells of the grid by Tab key rpntUpToDownPriorityEh - Go, at first, from top to bottom, than from
> left to right. rpntLeftToRightPriorityEh - Go, at first, from left to right, than from top to bottom.

> + A program for automatically installing library in Delphi/C++ Builder IDE is added. The program is located in Installer\EhLibInstaller.exe. In time of installation the program creates folder, copies files, compile required packages and register packages in the IDE.

> + crpRowPanelColPlacementEh value is added in TColumnEhRestoreParam type, grpRowPanelColPlacementEh values is added in TDBGridEhRestoreParam type. Now, procedure RestoreGridLayout can restore cell positions then RowPanel is active.

> + Propery RowDetailPanelControl is added in public section. Use this property to add components on panel of detail information at RunTime.
> Use next code: MyControl.Parent := DBGridEh1.RowDetailPanelControl;

> + Next subproperties were added in propery Grid.STFilter: InstantApply: Boolean - defines if filter will be applied on chanching or clising of droped down list of filtered values (STFilter). Location: TSTFilterLocationEh - defines the location STFilter. Under the title (stflUnderTitleFilterEh) or in the title (stflInTitleFilterEh). When in the title then STFilter doesn't support edit line to enter filter expression.

> + The interface of droped down list of SubTitleFilter was changed. Now it is allowed to select requaried values in the list unsing checkboxes. The Item (Custom...) was added in the list of commands of filter droped
> down list. When selected, the simple filter dialog appeares to enter filter expression.

> + When the list of items for droped down filter list is formed, the current filter takes in account (Only when grid is conneccted to TMemTableEh).

> + Global variable DBGridEhShowInTitleFilterBox was added. It contains keys shortcut to open droped down list of the STFilter when STFilter.Location = stflInTitleFilterEh. By default it contains 'Ctrl-T'.
> + New type of event was defined:
> TDBGridEhFillSTFilterListValuesEvent = procedure(Sender: TCustomDBGridEh; Column: TColumnEh; Items: TStrings; var Processed: Boolean) of object; The event of this type was added in Grid (TDBGridEh.OnFillSTFilterListValues), in the grid column (TColumnEh.OnFillSTFilterListValues) and in the
> TDBGridEhCenter (TDBGridEhCenter.OnFillSTFilterListValues) Write this event to fill list of droped down list of STFilter cell. You can can call default event handler DefaultFillSTFilterListValues. Every item of
> list Items must consist from to elements: String Items[i] and Object Items.Objects[i]. Items of Object type must be inherited from TPopupListboxItemEh type and must be created as a global objects.
> There are already next global variable that are inherited from TPopupListboxItemEh and that you can use them to assign to Items.Objects[i]

> property:
> PopupListboxItemEhSortAsc: TPopupListboxItemEhSort;
> // Item of the list shows sorting item Asc and executes sorting in ascending order.
> PopupListboxItemEhSortDes: TPopupListboxItemEhSort;
> // Item of the list shows sorting item Asc and executes sorting in descending order.
> PopupListboxItemEhLine: TPopupListboxItemEhLine;
> // Item of the list shows horizontal line. On choosing doesn't perform any actions.

> PopupListboxItemEhClearFilter: TPopupListboxItemEhSpec;
> PopupListboxItemEhAll: TPopupListboxItemEhSpec;
> PopupListboxItemEhEmpties: TPopupListboxItemEhSpec;
> PopupListboxItemEhNotEmties: TPopupListboxItemEhSpec;
> PopupListboxItemEhDialog: TPopupListboxItemEhSpec;
> PopupListboxItemEhApplyFilter: TPopupListboxItemEhSpec;

> PopupListboxItemEhData: TPopupListboxItemEhData;

> // Item of the list shows text that defines text of filtering.
> When it is selected, it is checked by checkbox and it is put in the list of items of values that is needed be in the filtered records.

> Procedure DefaultFillSTFilterListValues calls
> DatasetFeatures.FillSTFilterListDataValues to fill list of the unique values of the column. Realization of tha last procedure depends of the type of DataSet. Currently onle TMemTableEh type of DataSet can fill
> unique values of the column. Rewrite TDatasetFeaturesEh.FillSTFilterListDataValues method to fill unique values for other type of DataSets.

> See info about TDatasetFeaturesEh in Ehlib documentation and EhLibMTE.Pas.
> + New properties added to TDBGridEhCenter class:
> STFilterDefaultStringOperator, STFilterDefaultNumberOperator, STFilterDefaultDateTimeOperator, STFilterDefaultBooleanOperator. Use this properties to set default operator that will be used when
> string in the STFilter doesn't containt operator. The operators can be assigend appart for String fields, Numeric fields, DataTime fields and logical fields.

#### Version 5.0

> + At design-time grid can show such components as DataSource, DataSet, DataDriver in its the bottom left part. These components can be selected in object inspector by mouse clicking. It allows to find quickly and
> select components which is connected to the grid.

> + New mode - RowPanel. In this mode grid allows to show out cells of record one under another and change height of every cell separately.

> + Grid can have special panel of detail information for record. It is allowed to put any control from component palette on this panel. At run time, panel is hidden and user can open it by pressing on a '+' sign which is shown at the begining of every row.

> + Grid can scroll data smoothly and by small steps of one pixel size. Grid can scroll data smoothly vertically and horizontally.

> + Hot track. Grid can highlight a cell or a row under mouse cursor.

> + Grid can show vertical line in gradient mode between data rows and bottom part of the grid.
> + In mode Column.AlwaysShowEditButton grid shows EditButtons in shadow mode. It doesn't irritate eyes by big amount of edit buttons in the grid.

> + New property EditButtonsShowOptions is added in the Grid of type TEditButtonsShowOptionsEh.
> TEditButtonsShowOptionsEh = set of (sebShowOnlyForCurCellEh, sebShowOnlyForCurRowEh, sebShowOnlyWhenGridActiveEh, sebShowOnlyWhenDataEditingEh);
> When Column.AlwaysShowEditButton is True, this property allows to customize, in which cases it is need to show EditButtons.

> : See detail information of new features in file AboutEhlib5.txt.

#### Version 4.51

> + Added support of Embarcadero RAD Studio 2010

#### Version 4.5

> + Added TextEditing property in the TColumnEh object. Use this property to ban
> showing text editor in the data column cell.

> + Added OnHintShowPause event in the TColumnEh object and TDBGridEh . Write this
> event to set duration pause before showing hint.

> + In TColumnEh object and TDBGridEh is added OnDataHintShow event. Write this
> event to set text, font, color, position and other parameters of hint
> window for every data cell in the the grid column. This event is call only
> if Grid.ShowHint is True.

> + In TColumnEh object and TDBGridEh added OnAdvDrawDataCell event. Write
> this event to draw data in the data cell of column. This event calls always
> regardless of Grid.DefaultDrawing property. Set Processed to true to define
> that you processed drawing in the event code. Otherwise grid will call
> default method for drawing. You can, if need, change parameters ARect and
> Params and call Grid.DefaultDrawColumnDataCell or you can leave Processed
> in False and don't call Grid.DefaultDrawColumnDataCell. In last case
> OnAdvDrawDataCell will work like OnGetCellParams event.

> + In TColCellParamsEh class added properties:
> BlankCell: Boolean. Set this property to force show cell as a blank
> 3D cell.
> SuppressActiveCellColor: Boolean. Set this property to suppress color
> of the active cell by the color that you set in the Background property.
> TextEditing: Boolean. Set this property to ban showing text editor in the
> data cell.
> TColCellParamsEh class is used in such events as OnGetCellParams and
> OnAdvDrawDataCell.
> TColCellParamsEh class is used as a type of Params parameter in such events as
> OnGetCellParams and OnAdvDrawDataCell.

> * Some bugfixes.

> Version 4.4

> + Added possibility to move the column by in the grid at Design-Time.

> + Added possibility to select the column in the Object Inspector by clicking
> on header of column.

> + Added property DrawGraphicData: Boolean. When property is True, the grid
> draws image from TBlobField with BlobType = ftGraphic in graphic mode.

> + Added OnGetRowHeight event. Write this event to set height of every data row
> in the grid. The Event is caused when data is changed in DataSet.
> The Event is caused only when grid is connected to TMemTableEh and MemTable
> not in TreeView mode.

> + Added dghAutoFitRowHeight in TDBGridEhOption type (OptionsEh). In this mode
> the grid calculate height of lines dynamically using text in data cells for
> a columns that TColumnEh.WordWrap = True. This mode works only when
> grid is connected to TMemTableEh and MemTable not in mode TreeView.
> Grid updates the height of the lines not in all cases. For instance, grid
> does not update the height of the lines when you change Grid.Font property.
> In this case you need to call Grid.UpdateAllDataRowHeights where this is
> necessary.

> + In the mode when dgRowSelect is in Options, scrollbar works in smooth mode.
> (The Step of runner is not limited by the ñolumn width).

> + Added dghColumnMove and dghColumnResize in TDBGridEhOption type (OptionsEh).
> Now you can control of resizing and moving of columns separately.

> + Added dghShowRecNo in TDBGridEhOption type (OptionsEh). Set this value to show
> record number in the indicator column. It works only for DataSet which
> IsSequenced = True.

> + Drawing of 3D title cells in Flat mode is changed. When
> ThemeServices.ThemesEnabled = True, grid draws 3D cells in gradient style.

> * Some bugfixes.

#### Version 4.3

> + Added support of CodeGear RAD Studio 2009

> * Some bugfixes.

#### Version 4.2

> + Added support of Delphi 2007.

> In DBGridEh
> + Added IndicatorTitle property of TDBGridEhIndicatorTitle type:
> The Upper left cell can react as button, draw the badge-triangle,
> and display the dropdown menu on mouse clickling ( with possibility of
> drawing global menu, which adjust using global property -
> DBGridEhCenter.IndicatorTitleMenus and IndicatorTitleMenus.OnBuildIndicatorTitleMenu).

> IndicatorTitle property has a next subprotperty:
> DropdownMenu: TPopupMenu - The Local dropdown menu, appearing when you
> press the upper left cell of the grid.
> ShowDropDownSign: Boolean - Specifies whether to draw the badge-triangle.
> You can set this property to show that the pressing on upper-left cell
> will show the droped down menu.
> TitleButton: Boolean - Specifies whether the upper left cell will act as button.
> Besides the DropdownMenu will be droped down only when TitleButton = True.
> UseGlobalMenu: Boolean - Specifies whether the global
> DBGridEhCenter.IndicatorTitleMenus property will be use when building menu.

> Added OnIndicatorTitleMouseDown event. Occurs when the mouse click on the
> upper left cell of grid. The Cell must be adjusted in state of working as buttons
> (IndicatorTitle.TitleButton = True). You can call DefaultIndicatorTitleMouseDown
> method in this event to pass control to a global object - DBGridEhCenter.

> Added OnBuildIndicatorTitleMenu event. Occurs when need to build list of menus
> before menu is shown. You can call DefaultBuildIndicatorTitleMenu method
> in this event to pass control to a global object - DBGridEhCenter.

> Added OnCellMouseClick event. Occurs when mouse click in any cell of grid.
> Event pass coordinates of the cell and offset of the mouse for upper
> left corner of the cell. You can call DefaultCellMouseClick method
> in this event to pass control to a global object - DBGridEhCenter.

> + In module DBGridEh.Pas appeared the new global object DBGridEhCenter of
> TDBGridEhCenter type. This object is intended to manage a behaviour of all
> objects of TCustomGridEh type or inherited from it. For instance, in
> DBGridEhCenter you can specify the list a menu to be appearing in the
> drop-down menu of the all grids when clicking on top left grid cell.
> Besides, you may write the event of this global object and it will be
> caused at activations of the similar event in any grid of the project.

> Global object - DBGridEhCenter has a following properties and events:
> IndicatorTitleMenus: Is the list of menu, which will be formed when
> clicking on upper left cell of grid is occured. This property of the
> global object will work for all grids, which IndicatorTitle.TitleButton = True.
> (itmVisibleColumnsEh, itmCut, itmCopy, itmPaste, itmDelete, itmSelectAll).
> OnBuildIndicatorTitleMenu: Occurs when need to build list of menus before
> menu is shown.
> OnCellMouseClick: Occurs when mouse click in any cell of grid.
> OnIndicatorTitleMouseDown: Occurs when mouse click upper left cell of grid.

> + Added global variable - DBGridEhCenter. This variable controls the part of
> behaviour of the grids. You can set properties, or events of this variable to
> change the behaviour of all grids.
> Changes in the other objects and procedures.
> * The Corrections in ADODataDriverEh, SelectCommand, UpdateCommand... properties
> now have a TADOCommandEh type.
> * The parameters of OnAssignCommandParameter and OnGetBackUpdatedValues have been
> changed in ADODataDriverEh object.
> * All dfm files stores data in the text type.
> * Fixed drawing lines in the gride when TColumnEh.HideDuplicated = True.
> * Fixed memory leaks in the search box TDBGridEhFindDlg.
> * Fixed error in the search dialogue, when invisible columns is present.
> * Added support ftWideMemo.
> * Fixed error of the recirculation in TPrintDBGridEh component when printing
> the rows with height above of the page height.
> * Fixed error when developer create new TDataDriver component on Form using
> Popup menu 'Create DataDriver...' of TMemTableEh components.
> + In TDBLookupComboboxEh, Added support of the Memo fields.
> * Fixed error of entering values from previous record (using Ctrl+')
> when DBGridEh is connected to TMemTableEh.

#### Version 4.1

> + Added support of Delphi 2006 (Under VCL.Win32 and VCL.NET).

> * Fixed a error of the grid twinkling in the tree mode on opening a node.
> * Fixed a error of filling a list of values in the filter when
> PickList and KeyList properties for the TColumnEh is filled .
> * Some other bugfixes.

#### Version 4.0

> * This version does not support Delphi 4 and C++ Builer 4 anymore.
> + New components:
> TMemTableEh - dataset, which hold all data in memory.
> TDataDriverEh - Delivers records in TMemTableEh and processes changed records.
> TSQLDataDriverEh, TBDEDataDriverEh, TIBXDataDriverEh, TDBXDataDriverEh
> and TADODataDriverEh

> See detail info in AboutEhlib4_0.Txt

> + Added Action property or TBasicAction type in TEditButtonEh. So edit buttons
> of the Edit controls can be associated with action.

#### Version 3.6

> + Added support of Delphi 2005 (Under VCL.Win32 and VCL.NET).

> + Added Tooltips property in TDBEditEh, TDBDateTimeEditEh, TDBNumberEditEh,
> TDBLookupComboboxEh. Allows to show the whole text of the edit control in
> special hint window if text does not fit in visible area. Text is displayed
> when the mouse cursor situated above the edit control.

> In TDBGridEh
> + Added OddRowColor and EvenRowColor property to draw odd and even
> rows with different colors. It works only if sequence numbers are available
> for DataSet(DataSet.IsSequenced = True) and DataSet.RecNo return valid info.

> + Added dghRecordMoving value in TDBGridEhOption type (OptionsEh property).
> Allows to move records in dataset. Record is moved by striking and
> moving mouse over indicator column. By default grid calls
> TDatasetFeaturesEh.MoveRecords, where code save values of record, delete
> record and insert new values in the position specified by RecNo.

> + Added OnMoveRecords event of TGridMoveRecordsEventEh type.
> TGridMoveRecordsEventEh = function(Sender: TObject; BookmarkList: TStrings;
> ToRecNo: Longint; TreeLevel: Integer; CheckOnly: Boolean): Boolean of object;
> BookmarkList is a list of bookmarks which need to move.
> ToRecNo is a destination RecNo.
> TreeLevel is a destination level in tree list, used only when grid connected to
> MemTableEh.
> CheckOnly - determines whether the function have to return result, are there enabling
> to move BookmarkList to ToRecNo, but does not move BookmarkList.

> + Added OnSelectionChanged event. Occurs when multiselected area has been changed.

> * In AdvTech\MemTableEh: Added possibility to filter data in TreeList mode; usage one
> array of records by the several datasets; moving records in TreeList in
> dghRecordMoving mode.

#### Version 3.5

> + Added HighlightRequired property in TDBEditEh, TDBDateTimeEditEh, TDBNumberEditEh,
> TDBLookupComboboxEh and TColumnEh, TColumnDefValuesEh. Determines whether need to
> draw dotted red line under the text editor for empty required field (when
> TField.Required = True and field is empty).

> + Added OnCheckDrawRequiredState event in TDBEditEh, TDBDateTimeEditEh, TDBNumberEditEh,
> TDBLookupComboboxEh and TColumnEh. Write event need to change if need to draw a
> condition RequiredState (dotted red line under the text editor).

> + Added property Layout: TTextLayout in TColumnEh. Specifies the vertical placement of
> the text within the grid cell.

> + Added property HideDuplicates: Boolean in TColumnEh. Determines whether to hide
> duplicated values in the column.

> * Changed image of 3D borders in grid when the Windows XP themes active in application.

> * Procedure ExcecuteDBGridEhFindDialog is renamed to ExecuteDBGridEhFindDialog.

> * In AdvTech\MemTableEh: Added indexes and autogenerating the list of values for
> dropdown box in filter cells.

#### Version 3.4

> + Added support of Delphi 8 (VCL.NET).

> In TDBGridEh
> + Added property ToolTips in Footer and ColumnDefValues.Footer.
> + Added property SumValue: Variant in TColumnFooterEh.

> + Added property ShowImageAndText in TColumnEh. Allows to show Image from ImageList
> and field Text in grid cell simultaneously. Set ImageIndex in OnGetCellParams event.

> In TCustomDBEditEh
> + Added property Images: TCustomImageList. Images from imagelist can appear at the left
> part of TDBEditEh, TDBDateTimeEditEh, TDBNumberEditEh or TDBLookupComboboxEh.
> + Added event OnGetImageIndex: TGetImageIndexEventEh.
> TGetImageIndexEventEh = procedure(Sender: TObject; var ImageIndex: Integer) of object;
> Event is called when Text or Value in TCustomDBEditEh is changed. Set new ImageIndex
> depending on Text or Value.

#### Version 3.3

> For TDBGridEh
> + Added new form 'DBGridEhFindDlgs' - find dialog in DBGridEh. Dialog allows
> to find text in the grid: In specified column or on whole grid;
> From any part of field, Whole field or From beging of the field.
> Set new dghDialogFind value to OptionsEh to allows find dialog in DBGridEh.
> Default shortcut to show find dialog in the grid is 'Ctrl-F'. When dghIncSearch
> also included in the OptionsEh then first pressing 'Ctrl-F' enters the grid in
> the Increment Search mode and holding 'Ctrl' press 'F' again will show the
> find dialog.

> In TDBGridEh
> + Added dghDialogFind value to the TDBGridEhOption type (property OptionsEh).

> In TSTColumnFilterEh
> + Added KeyField, ListField, ListSource properties. Now you can adjust combobox
> in SubTitle Filter cell. If Column.STFilter.ListSource is not empty then grid
> will create combobox for such filter cell. ListSource defines the list of values
> in drop-down list, ListField defines field whose values are displayed in
> drop-down list, KeyField identifies the field in the ListSource dataset whose
> value will takes to build filter expression.
> In TSQLDatasetFeaturesEh
> + Added SupportsLocalLike property. Determines if the dataset supports 'Like'
> keyword in Filter property. Modules from DataService directory of EhLib archive
> rewrited to support this property.

> In TMRUListEh
> + Added AutoAdd property of Boolean type. Determines that the edit control will
> add new Text in MRUList automagically when control loses focus. Default value
> for property is True. You can use it (set to False) to fill MRUList manually,
> for instance from database table.

> * Some bugfixes.

#### Version 3.2

> In TDBGridEh
> + Added ability to fill cell by the value from previous record.
> You can use "Ctrl+'" key to do it.

> + Added dghDblClickOptimizeColWidth value to the TDBGridEhOption type
> (property OptionsEh). Adding this value to OptionsEh property
> allows grid to set optimal column width (to fit text in cells of column).
> on double-click on ColSizing line.

> + Added ability to show special row (under title) where you can enter
> expressions in cells for filtering records in dataset.
> (Expression in the cell can look like: "1", ">=1", ">1 AND <=5", "%TestStr%")
> When cursor reside in the filter cell they can press ENTER to apply filter.

> For automatically filtering data in dataset need to add one of the units
> EhLib... (EhLibADO, EhLibBDE, EhLibCDS) to 'uses' clause of any unit of your
> project. Now EhLib have objects to filter data in the TClientDataSet, TQuery,
> TTable and TADOQuery. You have to write and register your own object to filter
> data in DataSet that not present in this list or you can write
> TDBGridEh.OnApplyFilter event for every grid.

> Added property - STFilter: TSTDBGridEhFilter with subproperties:
> property Local: Boolean - grid does not use it, but object that
> perform filtering can determine whether it will filter locally
> in dataset or on the server (by adding filter expressions in
> SQL 'WHERE' clause).
> property Visible: Boolean - Specifies whether the filter row is visible.

> + Added OnApplyFilter event.

> + Added ApplyFilter function in TDatasetFeaturesEh class.

> In TColumnEh
> + Added new property - STFilter: TSTColumnFilterEh;
> with properties
> DataField: String - Specifies the field name that use to
> filter data if Column.FieldName is not fit for it.
> Visible: Boolean - Specifies whether user can enter expressions
> in filter row for this column.
> ExpressionStr: String - text expression in StFilter cell.
> Expression: TSTFilterExpressionEh - coded expression in StFilter cell.

#### Version 3.1

> * Changes in TRegPropStorageManEh:
> 'Key' property moved from 'published' to 'public' part.
> (C++ Builder does not support HKEY type in published part).

> Added RegistryKey property of TRegistryKeyEh type.

> + Added (in source included version only) preview version of the
> TMemTableEh component. Dataset, which hold all its data in memory,
> furthermore can fetch data from other dataset's, unload changes
> back to dataset and support special interface, that allow to
> view all data without changing active record.

> See detail info in AdvTech\MemTableEh\readme.txt dir.

> + In DBGridEh: Added support of IMemTableEh interface in DataSet
> that allow to view all data, without changing active record.

#### Version 3.0

> In TDBDateTimeEditEh

> + New values in TDateTimeKindEh type (property Kind).
> TDateTimeKindEh = (dtkDateEh, dtkTimeEh, dtkDateTimeEh, dtkCustomEh);
> + Added EditFormat property. Now you can type custom date/time format using
> next format elements: 'YY', 'YYYY', 'MM', 'DD', 'HH', 'NN', 'SS'.

> Library is divided to design-time and run-time packages.
> EhLib[XX] - run-time package and DclEhLib[X] - design-time packages,
> where [XX] is digit number of VCL version:
> [40] for Delphi 4, [50] for Delphi 5, etc;
> And EhLibB[XX] with DclEhLibB[XX] for C++ Builder.

> Upon installation, all components is placed to the separate page in
> components palette with name - 'EhLib'.
> Note that Delphi IDE does not move components to the new default
> place when you install new version of same component(s). So if you
> already has EhLib installed, then installation new (3.0) version
> does not move EhLib components to the 'EhLib' page on components palette.
> To force Delphi IDE to move compontes to the default place on
> components palette do next:
> Open menu: Component->Configure Palette.
> Select '[All]' line in Pages listbox.
> Click 'Default Pages' button.

> New componetns: TPropStorageEh, TIniPropStorageManEh, TRegPropStorageManEh.
> Components realize technology to store components properties to/from settings
> storage such as ini files, registry etc.

> + Added (in source included version only) design-time ClientDataSet edit
> window. See detail info in AdvTech\CDSDesign\readme.txt dir.