EhLib History

### История изменений библиотеки EhLib

#### Версия 9.2

> + Поддержка ARC (Automatic Reference Counting) Delphi компиляторов

> + Совместимость с библиотекой CrossVCL. Теперь вы можете скомпилировать ваш VCL проект в GUI приложение под OS X и Linux.

> + Технология сохранения настроек - SettingsKeeper

> + Анимация при перемещении столбцов в DBGridEh

#### Версия 9.1

> + Хранение языковых ресурсов библиотеки с возможность динамической загрузки

> + Авто-сохранение макета PivotGridEh при повторной загрузки данных

> + Отображение/Скрытие общих сумм в PivotGridEh

> + Новые агрегатные функции в PivotGridEh (Product, StDev, StDevp, Var, Varp)

> + Редактирование ячеек в PivotGridEh

> + Динамический подсчет найденных ячеек в SearchPanel

> + Функции по сохранению/восстановлению состояния колонок в INI-файл и Registry в DBVertGridEh

> + Значок отображения фильтра в заголовке DBGridEh

#### Версия 9.0

> + Новое окно DropDown календаря с поддержкой ввода даты и времени

> + Подсветка праздников, выходных и текущего дня в компоненте TPlannerCalendarPickerEh

> + Подсветка текущего дня и текущего времени в компоненте TPlannerControlEh

> + AllowedOperations в компоненте TPlannerControlEh

> + Статус ReadOnly в TPlannerControlEh и TPlannerDataItemEh

> + Делитель времени на 5, 6, 10, 15, 30 и 60 минут в компонентах TPlannerDayViewEh и TPlannerWeekViewEh

> + Новые свойства и события в компонентах TPlannerXXXViewEh (TPlannerDayViewEh, TPlannerWeekViewEh …)

> + Коллекция CellButtons в колонках DBGridEh и строках DBVertGridEh для создания кнопок в ячейках грида работающих без активации текстового редактора InplaceEditor

> + Режим поиска "Начинается с" в SearchPanel

> + Выбор записей в режиме DBGridEh.DataGrouping нажатием на групповую запись в разделе столбца индикатора

#### Версия 8.2

> + Новые возможности SearchPanel в TDBGridEh

> + SearchPanel в TDBVertGridEh

> + Заполнение пустого пространства справа от грида стилем ячеек грида

> + События для отрисовки и настройки заголовков грида.

> + Закраска кнопок редактора (EditButtons) в режиме прозрачного фона.

#### Версия 8.1

> + Bookmark’и как указатели на запись в TMemTableEh

> + Печать компонент TDBVertGridEh, TPivotGridEh, TPlannerControlEh

> + Событие для настойки отображения хинтов для элементов плана.

> + Формирование списка элементов в окнах MRUList на основе списка уникальных значений поля DataSet'а.

> + Новые события в TDBGridEh.SearchPanel

#### Версия 8.0

> + Новые компоненты для планирования и визуального управления событиями

> + Новые компоненты для выгрузки содержимого DataSet'а в текстовой файл и загрузка из текстового файла .

> + Новые компоненты редактирования данных:

> Компонент TDBMemoEh
> Компонент TDBImageEh
> Компонент TDBRadioGroupEh
> Компонент TDBRichEditEh

> + Выгрузка DBGridEh в Xlsx формат.

> + Новое свойство DefaultAction в классе TEditButtonEh.

> + Новое свойство CellDataIsLink в классах DBGridEh.TColumnEh и DBVertGridEh.TFieldRowEh

> + Перенос данных из DBGridEh и DBVertGridEh в MS Excel через буфер обмена с поддержкой формата данных

> + Индикатор формирования данных TPivotGridEh с возможностью прерывания процесса

> + Скрытие компонент формы в Design-Time

> + Выгрузка содержимого компоненты TDBVertGridEh в Xlsx файл

#### Версия 7.0

> + Поддержка библиотеки LCL (L

> Интерактивные кнопки редактирования при отображении графических данных
> Ширина и высота областей прокрутки (SсrollBar’ов)
> Расширенное окно выпадающего список для фильтрации данных (STFilter) с возможностью поиска и внутренней фильтрацией данных.
> Новое свойство PopupMenuParams и настройка глобального выпадающего меню для всех «гридов» проекта через TDBGridEhCenter

> + Глобальный класс TDBAxisGridEhCenter для реализации единой точки модификации поведения компонент DBGridEh и DBVertGridEh.

> + ControlLabel - встроенный текст для подписи контролов редактирования данных.

> + Новые компоненты для сводного анализа данных: TPivotGridEh, TPivotDataSourceEh, TPivotGridToolBoxEh.

#### Версия 6.3

> + Новое свойство SelectionDrawParams: TGridSelectionDrawParamsEh

> В DBGridEh и DBVertGridEh добавлено новой свойство SelectionDrawParams, которое позволяет настроить стиль отображения текущей выделенной ячейки

> Свойство имеет следующие подсвойства:

> > SelectionStyle: TGridSelectionDrawStyleEh - стиль закраски отображения текущей выделенной ячейки

> > DrawFocusFrame: Boolean - определяет, надо ли рисовать точечную окантовку вокруг текущей выделенной ячейки.

> > Тип TGridSelectionStyleEh содержит следующие значения:

> > > gsdsDefaultEh Стиль по умолчанию, определяется в зависимости от версии ОС и включенных схем Windows и схем Delphi. В случае наличия схем Windows устанавливается стиль gssListViewThemedEh, который использует для отображение текущей выделенной ячейки грида схему ListView. Если активен стиль Delphi XE то устанавливается стиль GridThemed.

> > > gsdsClassicEh Классический стиль. Ячейка закрашивается однородно цветом clSelected;

> > > gsdsGridThemedEh Для закраски используется Delphi XE стиль.

> > > gsdsListViewThemedEh Для закраски используется Windows схема ListView.

> Для глобального управления стилем подсветки во всех гридах проекта (если в гриде стоит значение gssDefaultEh) используйте свойства глобального объекта GridDrawStyle типа TGridDrawStyleEh.

> Для получения доступа к объекту используйте процедуры GridDefaultDrawStyleEh, SetGridDefaultDrawStyleEh, объявленные в модуле GridsEh.pas.

> Типа TGridDrawStyleEh имеет следующие свойства:

> > SelectionStyle: TGridSelectionStyleEh - стиль закраски отображения текущей выделенной ячейки

> > DrawFocusFrame: Boolean - определяет, надо ли рисовать точечную окантовку вокруг текущей выделенной ячейки.

> Для изменения стиля подсветки во всех сеток проекта используйте подобный код:

> > unit MyMainForm;

> > uses ... GridsEh;

> > ....

> > initialization

> > > GridDefaultDrawStyleEh.SelectionStyle := gsdsClassicEh;

> > > //Отрисовываем выделенные ячейки классическим стилем.

> > end.

> Настройка Lookup отношений непосредственно в колонках грида без использования lookup полей.

> + Новое свойство Column.LookupParams: TDBLookupDataEh в колонках грида DBGridEh и DBVertGridEh.

> Свойство позволяет настроить lookup отношения в колонках грида.

> Свойство содержит следующие подсвойства:

> > KeyFieldNames: String - Определяет поле (или поля) в Grid.DataSource.DataSet которое задает значение для поиска записи в LookupDataSet в поле заданном свойством LookupKeyFieldNames. Несколько полей разделяются знаком ';'.

> > LookupCache: Boolean - Определяет что надо скопировать ключевые значения во внутренний буфер для ускорения операция отрисовки ячеек грида.

> > LookupDataSet: TDataSet - Задает dataset значения записей которого будут отображаться в lookup контроле вместо значения поля KeyField.

> > LookupDisplayFieldName: String Определяет поле, значение которого будет отображаются на экране.

> > LookupKeyFieldNames: String Определяет поле (или поля) в LookupDataSet значение которого будет использоваться для поиска записей для значения поля заданного свойством KeyFieldNames.

> Другие возможности этой версии

> + TBaseColumnEh.CaseInsensitiveTextSearch: Boolean default True - Регистронезависимый поиск в редакторе текста для Комбобоксов.
> В колонках грида DBGridEh и DBVertGridEh и в контролах TDBComboboxEh TDBLookupcomboboxEh

> + LimitTextToListValues: Boolean Ограничивать список значений, которые можно ввести в контрол, только значениями выпадающего списка. В колонках грида DBGridEh и DBVertGridEh и в контролах TDBComboboxEh

> + В DBGridEh. В Design-Time при создании нового DataSet через Grid Design Panel можно выбрать Favorite DataSet'ы. В выпадающем меню "Create DataSet as" отображается список типов DataSet'ов только из списка Favorite.

> + В выпадающих списках фильтрации данных в гриде по столбцам можно быстро отметить несколько значений мышкой нажав, потянув вниз или вверх по списку и отпустив кнопку мышки.

> + В DBGridEh.

> Если в DBGridEh установлено значение gioShowRowselCheckboxesEh в IndicatorOptions, то записи можно выделять массово нажав и потянув мышку.

> + В DBGridEh.Pas

> В глобальном типе TDBGridEhCenter определено свойство ColWidthsOptimizationMaxWaitingTime. В это свойство можно прописать максимальное время, которое будет использоваться при вычислении ширины столба, когда пользователь два раза кликает линию разделяющую колонки. Если во время подсчета установленное время превышается то для оставшихся записей в DataSet'е ширина не вычисляется. По умолчанию используется значение 2000 (2 сек).

> + В заголовках колонок грида TColumnTitleEh появилось новой свойство ShowImageAndText.
> Если ShowImageAndText = True и заголовок грида настроен на отображение картинок из TitleParams.Images, то текст заголовка колонки будет отображаться вместе с картинкой. Если ShowImageAndText = False, то будет отображаться только картинка без текста.

> + В классе глобального управления поведением гридов проекта - TDBGridEhCenter, добавились методы GetColCellParams GetTitleParams RowDetailPanelShow RowDetailPanelHide. Это виртуальные методы, которые вы можете переопределить в своем порожденном классе TMyDBGridEhCenter и управлять реакцией на соответствующие события для всех гридов проекта.

> (DBVertGridsEh.pas)

> + Новое свойство OptionsEh тип TDBVHGridOptionsEh.
> Тип TDBVHGridOptionsEh содержит следующие значения:

> dgvhHighlightFocusEh - Подсвечивать текущую ячейку когда грид имеет фокус ввода.

> dgvhClearSelectionEh - Очищать выделение при выделении другой текущей ячейки мышкой или с клавиатуры.

> dgvhEnterToNextRowEh - Переходит на следующую строку в гриде при нажатии на клавишу Enter.

> dgvhTabToNextRowEh - Переходит на следующую строку в гриде при нажатии на клавишу Tab.

> dgvhRowsIsTabControlsEh - Работать со строка грида как с набором Edit контролов не связанных с горизонтальной навигацией по DataSet'у. Т.е.:

> > - Не разрешать переходить на другую запись с клавиатуры.

> > - Когда в гриде текущая ячейка находится на последней строке, то по клавише Tab грид переведет фокус ввода на следующий TabStop Control на Форме (dgvhTabToNextRowEh property must be included)

> > - Когда в гриде текущая ячейка находится на первой строке, то по клавише Alt+Tab грид переведет фокус ввода на предыдущий TabStop Control на Форме (dgvhTabToNextRowEh property must be included)

> + В компоненте TDBVertGridEh появилась возможность выделять строки и прямоугольные области ячеек с поддержкой ClipBoard операций.

> + Новое свойство AllowedSelections: TDBVertGridAllowedSelectionsEh задает разрешенные виды выделение в гриде.

> vgstRowsEh - Разрешать выделять строки в гриде мышкой или с клавиатуры.

> vgstRectangleEh - Разрешать выделять квадратные области в гриде мышкой или с клавиатуры.

> vgstAllEh - Разрешать выделять все данные в гриде по комбинации Ctrl+A.

> + Новое свойство EditActions типа TGridEditActionsEh - определяет разрешенные операции с выделенной областью. geaCutEh, geaCopyEh, geaPasteEh, geaDeleteEh, geaSelectAllEh.

> + Новое свойство Selection: TDBVertGridSelectionEh. Свойство содержит информацию о выбранной области грида.

> + Добавлены события TDBVertGridEh.OnRowCategoriesNodeExpanded TDBVertGridEh.OnRowCategoriesNodeCollapsed.

> (DataDriverEh.pas)

> * Изменение:

> Изменены параметры published события TConnectionProviderEh.OnGetServerSpecOperations: TResolverGetServerSpecOperationsEh

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

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

> Объявление через function вызывало необъяснимую ошибку компиляции проектов под C++ Builder.

> (DBCtrlsEh.pas)

> + В TDBEditEh, TDBDateTimeEditEh, TDBComboBoxEh добавлены события OnCloseDropDownForm OnOpenDropDownForm.

#### Версия 6.2

> + Технология DropDownForms - пользовательские выпадающие окна.

> Типичное DropDown окно - это список, который появляется в контроле TComboBox при нажатии на кнопку со стрелкой вниз внутри контрола.
> Новая технология DropDropForms позволяет создавать формы, которые отображаются и работают аналогично выпадающему списку TComboBox. Эти формы можно выводить по нажатию на одну из кнопок редакторов внутри контролов TDBEditEh, TDBNumberEditEh, TInplaceEditor в DBGridEh и т.д.

> Детальное описание работы с DropDownForms смотрите в файле <About EhLib 6.2 Rus.doc>, раздел DropDownForms и в примере:

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

> скомпилированный проект:

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

> Новые свойcтва для настройки отображения выпадающих форм появились в классах:
> (Для DBGridEh)

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

> (Для DBVertGridEh)

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

> В EditButtons для контролов TDBNumberEditEh, TDBDateTimeEditEh, TDBComboBoxEh, TDBLookupComboBoxEh.

> (В DBVertGridEh)

> + Появилась возможность группировки строк по категориям. См. свойства TDBVertGridEh.RowCategories

> Имя категории прописывается в свойстве TFieldRowEh.CategoryName
> Строки можно группировать по: Названию категории, Типу поля или, Наличию/Отсутствию значения в поле текущей записи.

> + Появилась возможность сортировки строк по Заголовку поля. См. свойство TDBVertGridEh.RowsSortOrder.

> (В DBGridEh)

> + В DBGridEh в Design-Time появилась возможность быстро создавать компоненты и присваивать свойства DataSource и DataSource.DataSet. Кликните правой кнопкой мышки над Design-Time панелью в нижнем правом углу грида и выберите необходимую операцию присваивания или создания компонента работы с табличными данными.

> (В TIniPropStorageManEh)

> * В методе TIniPropStorageManEh.WritePropertiesText изменен класс, используемый для записи данных в файл. Вместо TIniFile теперь используется TMemIniFile. Это значительно ускорило операцию записи в файл, но изменилось место сохранения файла, когда в свойстве IniFileName не указан полный путь. В новой версии файл будет сохраняться в текущую директорию вместо директории WINDOWS.

#### Версия 6.1

> + Новый компонент TDBVertGridEh - Вертикальный грид.

> Компонент предназначен для отображения и редактирования одной записи DataSet'а в вертикальной ориентации.

> Основные свойства компонента TDBVertGridEh

> > Rows: TDBVerGridRows - Коллекция элементов типа TFieldRowEh для отображения полей записи. Аналог коллекции Columns в TDBGridEh.

> > Options: TDBVHGridOptions - Настройка основных свойств вертикального грида.

> > RowsDefValues: TFieldRowDefValuesEh - значения по умолчанию для строки
> > грида TFieldRowEh. Аналог ColumnDefValues в TDBGridEh.

> > GridLineParams: TDBVertGridLineParamsEh - Настройки цветов разделительных линий в
> > вертикальном гриде.

> > DataColParams: TDBVertGridDataColParamsEh - Настройка параметров колонки
> > отображения данных.

> > LabelColParams: TDBVertGridLabelColParamEh - Настройка параметров колонки
> > отображения заголовков строк данных.

> См. пример, демонстрирующий работу компоненты TDBVertGridEh в проекте:

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

> скомпилированный проект:

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

> * Изменилось дерево наследования компонент-сеток:

> > TCustomControl

> > |

> > - TCustomGridEh

> > |

> > - TCustomDBAxisGridEh

> > |

> > - TCustomDBGridEh

> > | |

> > | - TDBGridEh

> > |

> > - TCustomDBVertGridEh

> > |

> > - TDBVertGridEh

> Некоторые константы и процедуры были перенесены из модуля DBGridEh в модуль
> DBAxisGridsEh.

> + Добавлена новая глобальная функция для отображения формы вида ObjectInspector.

> Используйте следующую процедуру для отображения формы-ObjectInspector

> > procedure ShowObjectInspectorForm(

> > > Component: TObject; // Компонент исследования

> > > FormBounds: TRect; // Границы формы

> > > NewForm: Boolean = False // Отображать как новую форму

> > );

> Это простой ObjectInspector, который можно использовать для отладки компонент во время выполнения при изменении значений свойств.

> См. пример, демонстрирующий работу c ShowObjectInspectorForm здесь:

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

> скомпилированный проект:

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

> В DBGridEh

> + Добавлена возможность изменения размера RowDetailPanel'и мышкой в RunTime.

> Новые свойства в RowDetailPanel:

> > property VertSizing: Boolean - Выводить внизу RowDetailPanel Splitter и разрешать менять размер.
> > property MinHeight: Integer - Минимальная высота RowDetailPanel'и
> > property MaxHeight: Integer - Максимальная высота RowDetailPanel'и
> > property SizingBarBeveled: Boolean - Splitter область имеет 3D границу.
> > property SizingBarHeight: Integer - Высота Splitter области.

> + Добавлена возможность "затемнения" грида на время загрузки данных.

> См. методы TDBGridEh1: StartLoadingStatus и FinishLoadingStatus.
> См. пример, демонстрирущий эту возможность в проекте:

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

> скомпилированный проект:

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

#### Версия 6.0

> + Добавлены новые компоненты для обслуживания доступа через технологию DataDrivers.

> ConnectionProviders:

> TADOConnectionProviderEh - компонент обеспечивает взаимодействие между TADODataDriver и TADOConnection в Design-Time и в Run-Time. Содержит встроенный TADOConnection компонент. Задает тип сервера данных для корректной работы дополнительных операций с сервером, таких какполучение значения инкрементных полей таблицы после вставки записи и т.п.

> Аналогичные функции выполняют компоненты:

> > TDBXConnectionProviderEh для обслуживания доступа через средства доступа к данным DBX.

> > TIBXConnectionProviderEh для обслуживания доступа через средства доступа к данным IBX.

> > TBDEConnectionProviderEh для обслуживания доступа через средства доступа к данным BDE.

> + Динамические свойства в компонентах - DynProps.
> Коллекция элементов, реализующих динамические свойства в компонентах и классах библиотеки.

> В компоненте DBGridEh:

> + Добавлены значки маркеров сортировки и изменился порядок сортировки дaнных.

> + Добавлена возможность настройки цветов разделительных линий, наличие/отсутствие. линий в различных областях грида.

> + Добавлена возможность гибкой настройки отрисовки заголовков грида.

> + Добавлена возможность гибкой настройки отрисовки области футера.

> + Добавлена возможность гибкой настройки отрисовки области SubtitleFilter.

> + Добавлена возможность отображения графических данных в ячейках из полей DataSet'а в различных графических форматах.

> + Добавлена возможность отображения графического фона грида.

> + Добавлена панель поиска и фильтрации данных.

> + Добавлена экстра панель бегунка горизонтальной прокрутки.

> + Добавлена возможность гибкой настройки заголовка группировки.

> + Добавлена возможность отображения суммирующих записей в группах.

> + Добавлена возможность гибкой настройки для режима HideDuplicates

> + Добавлена настройка отображения элементов древовидной структуры записей.

> + Добавлена возможность фильтрация данных в выпадающих lookup списках при наборе текста.
> В компоненте MemTableEh

> + Добавлена возможность изменения структуры внутреннего массива без потери данных.

> + Добавлена возможность сохранения/загрузки данных из/в файл(а).

> - Закрыта поддержка Delphi и С++ Builder версии ниже чем 7.

> + Добавлена поддержка Embarcadero RAD Studio XE3.

#### Версия 5.6

> * Исправлена ошибка обработки глобальной переменной OldStyleFlatBorder.

> В предыдущих версиях если OldStyleFlatBorder = False (По умолчанию было значение False), то в режиме TDBEditEh.Flat = True плоский (Flat) стиль отрисовки границы в TDBEditEh не работал никогда.В этой версии если OldStyleFlatBorder = False то плоский стиль границы отрисовывается в Classic стиле Windwos (Или если в проекте нет поддержки схем Themes) и НЕ отрисовывается в Themed окружении.

> + В класс TEditButtonEh добавлено новое свойство Images (TEditEh.EditButtons[i].Images)
> типа TEditButtonImagesEh.

> 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;
> Теперь в кнопках редактирования EditButtons для Edit контролов и для TDBGridEh можно выводить картинки из компонента TCustomImageList. Картинки выводятся когда TEditButtonEh.Style = ebsGlyphEh.

> + Добавлено свойство EmptyDataInfo в DBGridEh. Если это свойство включено, DataSet активен и не содержит данные, то DBGridEh покажет надпись «No data». Вы можете задать надпись для каждого Грида в отдельности или присвоить глобальную переменную DBGridEhEmptyDataInfoText находящуюся в модуле DBGridEh.

> + Добавлено свойство EmptyDataInfo в TDBEditEh, TDBNumberEditEh, TDBComboBoxEh, TDBLookupComboBoxEh.
> Используйте свойство EmptyDataInfo.Text для отображения текста, который будет отображаться в Edit контроле когда он не содержит данных.

> + Добавлено стандартное свойство Touch (поддерживается Delphi 2010 и старше) для DBGridEh,
> TDBEditEh, TDBNumberEditEh, TDBComboBoxEh, TDBLookupComboBoxEh, TDBDateTimeEditEh.

> + Добавлена возможность в design-time открывать окно редактора коллекции кнопок редактирования (EditButtons) для контролов TDBEditEh, TDBNumberEditEh, TDBComboBoxEh, TDBLookupComboBoxEh, TDBDateTimeEditEh.
> Элемент меню открытия окна коллекции находится в контекстном меню компонента, который открывается по правой кнопки мыши.

> + В TDBCheckBoxEh добавлена возможность устанавливать Пустые значения ('') для свойств
> ValueChecked, ValueUnchecked. Это позволяет задавать состояние CheckBox'ов для значения поля БД Null.

> + Добавлено событие OnDataGroupGetRowParams в DBGridEh. Событие используется для настройки отображения информации для записей группировки (когда грид работает в режиме группировки Grid.DataGrouping.Active = True). В событии можно задать Цвет, Фонт, Текст и Картинку для групповой записи.

> + Добавлена глобальная процедура ExportDBGridEhToOleExcel в модуль DBGridEhImpExp.Процедура предназначена для экспортирования данных из DBGridEh в MS Excel. Для экспорта процедура использует технологию OLE, а это значит что для ее вызова необходимо чтобы MS Excel был установлен на компьютере.

> + В дизаин-тайме при вызове контекстного меню компоненты TDBGridEh отображается информация
> о версии библиотеки.

> + Добавлена глобальная процедура DrawProgressBarEh. Процедура позволяет рисовать картинку
> в виде индикатора выполнения (ProgressBar). Ее можно использовать для отображения индикатора выполнения в ячейках грида. Пример использования смотрите в DEMOS\DEMO1

#### Версия 5.5

> + Добавлена поддержка Embarcadero RAD Studio XE2.

> + В глобальный объект TDBGridEhStyle добавлено свойство ThemeTitleFillElement.
> property ThemeTitleFillElement: TGridThemeTitleFillElementEh;
> TGridThemeTitleFillElementEh = (gtfeHeaderItemEh, gtfeSplitButtonEh);
> Это свойство определяет Themes элемент, который будет использоваться при закраски заголовков в гриде когда у грида Flat = False.

> * При работе под RAD Studio XE2 свойство TDBGridEh.Flat не влияет на закраску заголовков грида, если активирован пользовательский стиль (TStyleManager.IsCustomStyleActive = True).
> В этом случае заголовки грида закрашиваются с использованием Themes стиля заданного свойством DBGridEhDefaultStyle.ThemeTitleFillElement.

> * При выводе заголовков в гриде при доступных XP стилях (Themes) начиная с версии 5.5 используется элементы thHeaderItem вместо ttbSplitButton. Чтобы отображать заголовки старым стилем, установите глобальное свойство DBGridEhDefaultStyle.ThemeTitleFillElement = gtfeSplitButtonEh.

#### Версия 5.4

> + В DBGridEh. Добавлена возможность вывода чекбоксов в столбце индикатора. Чекбоксы используются чтобы выбирать записи в гриде. Чтобы при нажатии мышкой на чекбоксы запись выбиралась, необходимо также настроить свойства грида, позволяющие делать множественный выбор записей: dgMultiSelect в Options, gstRecordBookmarks в AllowedSelections.

> + В DBGridEh добавлено свойство IndicatorOptions типа TDBGridEhIndicatorOptions.
> TDBGridEhIndicatorOptions = set of TDBGridEhIndicatorOption;
> TDBGridEhIndicatorOption = (gioShowRowIndicatorEh, gioShowRecNoEh, gioShowRowselCheckboxesEh);

> > gioShowRowIndicatorEh - аналогично свойству dgIndicator в Options.
> > gioShowRecNoEh - аналогично свойству dghShowRecNo в OptionsEh.
> > gioShowRowselCheckboxesEh - отображать чекбоксы в столбце индикатора.

> + В MemTableEh. Изменен принцип хранения данных для полей типа Calculated и Lookup.
> Теперь значение этих полей храниться в отдельном буфере для каждой записи, и не пересчитывается при каждом отображении и прокрутке данных в гриде. Это позволило значительно ускорить отображение Lookup полей в гриде и Calculated полей, которые "долго" рассчитываются. Calculated и Lookup пересчитываются только при открытии MemTableEh или когда меняется запись.

> * В MemTableEh. Когда MemTableEh подключен к DataDriver и поля Fields созданы в Design-Time (Persistent Field Components), то при открытии MemTableEh формирует внутреннюю структуру на основе списка полей в Fields, а не на основе структуры получаемой от DataDriver. При загрузке данных, типы и количество полей могут не совпадать с данными поступающими от DataDriver. Поля записей MemTableEh,
> которых нет в записях, поступающих от DataDriver, будут заполняться значениями Null.

#### Версия 5.3

> + Добавлена поддержка Embarcadero RAD Studio XE.

> + В MemTableEh добавлено свойство Options типа TMemTableOptionsEh.

> > TMemTableOptionsEh = set of TMemTableOptionEh;
> > TMemTableOptionEh = (mtoTextFieldsCaseInsensitive);
> > mtoTextFieldsCaseInsensitive - Определяет что в операциях сравнения при фильтрации данных и сортировки значения полей записей регистронезависимо.

> + В TPrintDBGridEh добавлена поддержка печати грида в режиме группировки.

> + В TADOCommandEh добавлено свойство CommandTimeout.

#### Версия 5.2

> В грид добавлена возможность группировки записей.
> Группировку можно создавать и менять как в Design так и RunTime режиме.
> Группировка работает только когда грид подключен к датасету типа TMemTableEh.

> Используйте подсвойства свойства Grid.DataGrouping для управления группировками.
> Active: Boolean - Используйте это свойство для активизации группировки в гриде.
> DefaultStateExpanded: Boolean - Задает значение Expanded для вновь создаваемых элементов дерева группировки.
> GroupLevels: TGridDataGroupLevelsEh - Коллекция уровней группировки. Используйте это свойство для формирования шаблона построения дерева группировки.
> GroupPanelVisible: Boolean - Установите это свойство в True чтобы отобразить панель группировки в верхней части грида. Когда панель видна, то имеется возможность формировать уровни группировки с помощью мыши, перетаскивая заголовки колонок грида в панель группировки.

> Font: TFont - Задает шрифт записей группировки.
> Color: Tcolor - Задает цвет закраски записей группировки.
> OnActiveGroupingStructChanged

> См. пример проекта с группировками в DEMOS\DataGrouping

> + TDBGridEhCenter.UseExtendedScrollingForMemTable

#### Версия 5.1

> * Свойство RowPanel поменяло свой тип. Вместо типа Boolean теперь это объектное свойство с подсвойствами: Active: Boolean - Определяет возможность выводить ячейки записи грида друг
> под другом и менять высоту каждой ячейки.
> + NavKeysNavigationType: TGridRowPanelNavKeysNavigationTypeEh - задает порядок движения по ячейкам грида при навигации кнопками Вверх, Вниз, Влево, Вправо. rpntRowToRowEh - (по умолчанию) Кнопки Вниз, Вверх перемещают курсор на следующую и предыдущую запись соответственно. Кнопки Влево, Вправо работают аналогично Tab, Shift-Tab
> rpntCellToCellEh - Кнопки Вниз, Вверх перемещают курсор на следующую и предыдущую ячейку соответственно. Кнопки Влево, Вправо перемещают курсор на левую или в правую ячейку соответственно.

> + TabNavigationType: TGridRowPanelTabNavigationTypeEh - задает порядок обхода ячеек клавишей Tab
> rpntUpToDownPriorityEh - Обход вначале сверху вниз, затем слева на право.
> rpntLeftToRightPriorityEh - Обход вначале слева на право, затем сверху вниз.

> + Добавлена программа для автоматической установки библиотеки в Delphi/C++ Builder IDE. Программа находится здесь Installer\EhLibInstaller.exe.
> Программа создает папку для хранения кодов библиотеки, копирует туда необходимые
> файлы, компилирует пакеты и регистрирует скомпилированные пакеты в IDE.

> + В TColumnEhRestoreParam добавлено значение crpRowPanelColPlacementEh, в тип TDBGridEhRestoreParam добавлено значение grpRowPanelColPlacementEh. Теперь в процедуре RestoreGridLayout можно восстанавливать положение ячеек в режиме RowPanel.

> + Добавлено public свойство RowDetailPanelControl. Используйте это свойство чтобы добавлять компоненты на панель детальной информации в режиме RunTime. Для добавления компонентов на RowDetailPanel используйте следующий код MyControl.Parent := DBGridEh1.RowDetailPanelControl;

> + В свойство Grid.STFilter добавлено подсвойство
> InstantApply: Boolean - определяет, что фильтр будет применяться сразу при изменении или закрытии выпадающего списка значений для фильтрации (STFilter). Location: TSTFilterLocationEh - определяет местоположение STFilter'а. Под заголовком (stflUnderTitleFilterEh) или в заголовке (stflInTitleFilterEh). В режиме 'в заголовке' STFilter не поддерживает встроенную строку ввода фильтра.

> + Изменился интерфейс отображения выпадающего списка в SubTitleFilter. Теперь можно галочками выбирать необходимые значения для фильтрации.В списке появился пункт (Custom...). При выборе этого пункта появляется простой диалог задания фильтра.

> + В режиме автоматического формирования списка значений для выпадающего фильтра (Когда грид подключен к MemTableEh), список формируется с учетом наложенного фильтра в других колонках.

> + Глобальная перерменная DBGridEhShowInTitleFilterBox. Содержит комбинацию клавиш для открытия выпадающего списка значений фильтрации когда STFilter.Location = stflInTitleFilterEh. По умолчанию оно содержит значение 'Ctrl-T'.
> + Определен новый тип события
> TDBGridEhFillSTFilterListValuesEvent = procedure(Sender: TCustomDBGridEh; Column: TColumnEh; Items: TStrings; var Processed: Boolean) of object;

> Событие этого типа добавлено в Grid (TDBGridEh.OnFillSTFilterListValues), в колонку грида (TColumnEh.OnFillSTFilterListValues) и в TDBGridEhCenter (TDBGridEhCenter.OnFillSTFilterListValues)
> Напишите обработчик этого события, чтобы изменить алгоритм заполнения выпадающего списка значений в ячейки задания фильтра (STFilter). В событии вы можете вызвать обработчик события по умолчанию
> DefaultFillSTFilterListValues. Каждый элемент списка Items должен состоять из двух значений: Строки Items[i] и объекта Items.Objects[i]. Элементы объектного типа должны наследоваться от типа TPopupListboxItemEh и должны быть созданы глобально. В модуле DBGridEh уже предопределены следующие глобальные переменные
> PopupListboxItemEhSortAsc: TPopupListboxItemEhSort;
> // Элемент списка отображает значок сортировки Asc и выполняет сортировку по возрастанию.
> PopupListboxItemEhSortDes: TPopupListboxItemEhSort;
> // Элемент списка отображает значок сортировки Des и выполняет сортировку по убыванию.
> PopupListboxItemEhLine: TPopupListboxItemEhLine;
> // Элемент списка отображает горизонтальную линию. При выборе не выполняет никаких действий.

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

> PopupListboxItemEhData: TPopupListboxItemEhData;
> // Элемент списка отображает текст, определяющий значение для фильтрации.

> При выборе, помечает текущий элемент галочкой и добавляет в список элементов, которые задают значения для фильтрации. Для заполнения списка уникальных значений колонки, процедура
> DefaultFillSTFilterListValues вызывает процедуру DatasetFeatures.FillSTFilterListDataValues. Реализация последней процедуры зависит от типа DataSet'а. На текущий момент библиотека умеет заполнять
> список уникальных значений колонки только для датасета типа TMemTableEh. Для заполнения уникальных значений при подключении грида к другому датасету перепишите функцию TDatasetFeaturesEh.FillSTFilterListDataValues и по необходимости зарегистрируйте новый класс, наследуемый от TDatasetFeaturesEh.Читайте про класс TDatasetFeaturesEh в документации к EhLib и EhLibMTE.Pas.
> + В TDBGridEhCenter добавлены свойства STFilterDefaultStringOperator, STFilterDefaultNumberOperator, STFilterDefaultDateTimeOperator, STFilterDefaultBooleanOperator. Используйте эти свойства, чтобы задать
> оператор по умолчанию, который будет использоваться, когда в строке фильтрации STFilter явно не прописывается оператор. Операторы можно задать отдельно для строковых полей, числовых полей, полей типа DateTime и логических полей.

#### Версия 5.0

> + В период разработки добавлена возможность отображать компоненты данных
> (Такие как DataSource, DataSet, DataDriver) в нижнем правом углу грида. Компоненты можно выбирать в ObjectInspecor'e кликнув на них мышкой.

> + Режим RowPanel. Добавлена возможность выводить ячейки записи грида друг под другом и менять высоту каждой ячейки.

> + В грид добавлена возможность создавать и настраивать дополнительную панель детальной информации для записей грида. В панель можно добавлять любой контрол из палитры компонент. Во время работы программы панель скрыта и открывается по нажатию на '+', который отображается в начале каждой записи.

> + Добавлена возможность плавной "попиксельной" прокрутки грида по вертикали и горизонтали.

> + Добавлена возможность HotTrack'а. При включенном HotTrack'е грид подсвечивает ячейку или строку (в зависимости от настроек RowHighlight) над которой находится курсор мыши.

> + Добавлена возможность отображать вертикальные линии в градиентном режиме для заполнения пустого пространства между строками с данных и нижней частью грида.

> + В режиме Column.AlwaysShowEditButton грид отображает EditButtons в затененном режиме. Это не раздражают глаза большим количеством кнопок редактирования.

> + В грид добавлено новое свойство - EditButtonsShowOptions: TEditButtonsShowOptionsEh.
> TEditButtonsShowOptionsEh = set of (sebShowOnlyForCurCellEh, sebShowOnlyForCurRowEh, sebShowOnlyWhenGridActiveEh, sebShowOnlyWhenDataEditingEh);
> Когда у колонки стоит Column.AlwaysShowEditButton это свойство позволяет дополнительно настраивать, в каких случаях отображать EditButtons. : Смотрите подробное описание новых возможностей в файле

> AboutEhlib5.rus.

#### Версия 4.51

> + Добавлена поддержка Embarcadero RAD Studio 2010.

#### Версия 4.5

> + В TColumnEh добавлено свойство TextEditing. Используйте это свойство чтобы запрещать отображение текстового редактора в ячейке колонки грида.

> + В TColumnEh и TDBGridEh добавлено событие OnHintShowPause. Используйте это событие чтобы установить длительность задержки перед отображением подсказки (хинта).

> + В TColumnEh и TDBGridEh добавлено событие OnDataHintShow. Используйте это событие чтобы установить Текст, Фонт, Цвет, Позицию или другие параметры окна подсказки (хинта) для каждой ячейки колонки грида. Это событие будет вызываться только если Grid.ShowHint установлен в True. В момент вызова события грид установит текущую запись в датасете согласно номеру строки грида, так что вы можете обращаться к данным записи. Например: Grid.DataSource.DataSet. FieldByName('FieldName').AsString.

> + В TColumnEh и TDBGridEh добавлено событие OnAdvDrawDataCell. Используйте это событие чтобы нарисовать данные в ячейки данных грида. В коде события установите Processed в true чтобы определить что вы обработали процесс прорисовки. Иначе грид вызовет метод для прорисовки содержимого
> ячеки по умолчанию. Вы можете, если необходимо, изменить параметры ARect и Params и вызвать Grid.DefaultDrawColumnDataCell либо оставить Processed в состоянии False и не вызывать
> Grid.DefaultDrawColumnDataCell. В последнем случае событие OnAdvDrawDataCell будет работать подобно событию OnGetCellParams. В момент вызова события грид установит текущую запись в датасете согласно
> номеру строки грида, так что вы можете обращаться к данным записи. Например:
> Grid.DataSource.DataSet.FieldByName('FieldName').AsString. Не изменяйте свойства Grid'а в событии. Для изменения параметров вывода данных на экран используйте параметры события Params или Grid.Canvas если вы выводите данные в ячейку сами через функции GDI.

> + В class TColCellParamsEh добавлены свойства: BlankCell: Boolean. Установите это свойство чтобы отобразить ячейку как пустую ячейку с 3D окантовкой.
> SuppressActiveCellColor: Boolean. Установите это свойство чтобы запретить цвету активной ячейки перекрывать цвет установленный в свойстве Background.
> TextEditing: Boolean. Установите это свойство чтобы запретить отображение текстового редактора в ячейке колонки грида. Класс TColCellParamsEh используется как тип параметра Params в таких событиях как OnGetCellParams и OnAdvDrawDataCell.

> * Исправлены некоторые ошибки.

#### Версия 4.4

> + Добавлена возможность в Design-Time перемещать столбцы мышкой в гриде.

> + Добавлена возможность в Design-Time выбирать столбцы в Object Inspector
> кликая на заголовок столбца.

> + Добавлено свойство DrawGraphicData: Boolean. При установки в True, грид
> выводит значение полей TBlobField с типом BlobType = ftGraphic в
> графическом виде.

> + В грид добавлено событие OnGetRowHeight. В этом событии можно установить
> высоту строк для каждой строки данных. Событие вызывается при изменении
> данных в DataSet'е. Событие вызывается только когда грид подключен к
> TMemTableEh и MemTable не в режиме TreeView.

> + В тип TDBGridEhOption (OptionsEh) добавлено значение dghAutoFitRowHeight. В
> этом режиме грид подсчитывает высоту строк динамически на основе строковых
> данных в столбцах, у которых TColumnEh.WordWrap = True. Режим работает
> только когда грид подключен к TMemTableEh и MemTable не в режиме TreeView.
> Грид обновляет высоту строк не при всех изменениях свойств грида. Например
> грид не обновляет высоту строк если поменять свойство Grid.Font. По этому
> в программах, вызывайте Grid.UpdateAllDataRowHeights там, где это нужно.

> + В режиме dgRowSelect in Options горизонтальная прокрутка работает в плавном
> режиме. (Шаг бегунка не ограничивается границами столбцов).

> + В тип TDBGridEhOption (OptionsEh) добавлены значения dghColumnResize,
> dghColumnMove. Теперь ресайзинг и перемещение колонок можно настраивать
> отдельно.

> + В тип TDBGridEhOption (OptionsEh) добавлено значение dghShowRecNo. При
> выставлении этого значения, в столбце индикатора будет отображаться
> номер записи. Свойство работает только для DataSet'ов с поддержкой
> IsSequenced.

> + Изменена прорисовка 3D ячеек в режиме Flat при условии активности XP
> тем (ThemeServices.ThemesEnabled = True). Теперь эти ячейки
> закрашиваются градиентной заливкой. Стиль закраски 3D ячейки теперь
> вписывается в общий стиль отрисовки тем операционной системы.

> * Исправлены некоторые ошибки.

#### Версия 4.3

> + Добавлена поддержка CodeGear RAD Studio 2009.

> * Исправлены некоторые ошибки.

#### Версия 4.2

> + Добавлена поддержка Delphi 2007.
> В DBGridEh
> + Добавлено свойство IndicatorTitle типа TDBGridEhIndicatorTitle:
> Верхняя левая ячейка может реагировать как кнопка, выводить значок-треугольник,
> и по нажатию, отображать выпадающее меню ( с возможностью вывода глобального меню,
> которое настраивается с помощью глобальных свойств DBGridEhCenter.IndicatorTitleMenus
> и IndicatorTitleMenus.OnBuildIndicatorTitleMenu).
> Свойство IndicatorTitle имеет следующие подсвойства:
> DropdownMenu: TPopupMenu - Локально выпадающее меню, появляющееся при нажатии на
> верхнюю левую ячейку грида.
> ShowDropDownSign: Boolean - Определяет, нужно ли выводить значок-треугольник
> направленный вниз. Удобно выставлять это свойство, чтобы показать, что по нажатию на
> верхнюю-левую ячейку будет выпадать меню.
> TitleButton: Boolean - Определяет, что верхняя левая ячейка реагирует на нажатие мышки
> как на кнопку, т.е. по нажатию будет иметь вдавленный вид. Кроме того, только когда
> TitleButton = True будет появляться выпадающее меню.
> UseGlobalMenu: Boolean - Определяет, будут ли использоваться свойства глобального
> обьекта DBGridEhCenter.IndicatorTitleMenus при формировании глобального меню.

> Добавлено событие OnIndicatorTitleMouseDown. Событие срабатывает при нажатии
> мышкой на самую верхнюю левую ячейку грида. Ячейка должна быть настроена в
> режим работы кнопки (IndicatorTitle.TitleButton = True). В событии можно
> вызывать метод DefaultIndicatorTitleMouseDown который передает управление
> в глобальный объект DBGridEhCenter.

> Добавлено событие OnBuildIndicatorTitleMenu. Срабатывает при формировании
> выпадающего меню, после нажатия на верхнюю левую ячейку грида. В событии
> можно вызывать метод DefaultBuildIndicatorTitleMenu, который передает
> управление в глобальный объект DBGridEhCenter.

> Добавлено событие OnCellMouseClick. Срабатывает при нажатии любой ячейки грида.
> Передает координаты ячейки и смещение мышки относительно верхнего левого угла
> ячейки. В событии можно вызывать метод DefaultCellMouseClick который, передает
> управление в глобальный объект DBGridEhCenter.

> + В модуле DBGridEh.Pas появился новый глобальный объект DBGridEhCenter типа TDBGridEhCenter.
> Этот объект предназначен для управления поведением всех созданных в проекте объектов
> типа TCustomGridEh или порожденных от него. Например, в DBGridEhCenter можно задать
> список меню, которые будут появляется в выпадающем меню всех гридов при нажатии на
> верхнюю левую ячейку столбца индикатора. Кроме того, вы можете написать событие этого
> объекта и оно будет вызываться при активации аналогичного события в любом гриде проекта.

> Глобальный объект TDBGridEhCenter имеет следующие свойства и события
> IndicatorTitleMenus:
> Свойство задает список выпадающих меню, которые будут формироваться при
> нажатии на верхнюю левую ячейку грида. Это свойство глобального объекта и
> будет работать для всех гридов, у которых IndicatorTitle.TitleButton = True.
> (itmVisibleColumnsEh, itmCut, itmCopy, itmPaste, itmDelete, itmSelectAll).
> OnBuildIndicatorTitleMenu: Срабатывает при формировании
> выпадающего меню при нажатии на верхнюю левую ячейку грида.
> OnCellMouseClick: Срабатывает при нажатии в любой ячейки грида.
> Передает координаты ячейки и смещение мышки относительно верхнего левого
> угла ячейки.
> OnIndicatorTitleMouseDown: Событие срабатывает при нажатии
> мышкой на самую верхнюю левую ячейку грида.

> + Глобальная переменная DBGridEhCenter. Эта переменная управляет частью
> поведения гридов если в них не переопределена функциональность через
> событие. Вы можете установить свойства или события этой переменной
> чтобы изменить поведение всех гридов.
> В других объектах и процедурах.
> * Исправления в ADODataDriverEh, свойства SelectCommand, UpdateCommand ... теперь
> имеют тип TADOCommandEh.
> * Изменились параметры вызова событий OnAssignCommandParameter и OnGetBackUpdatedValues
> в ADODataDriverEh.
> * Все dfm файлы хранят данные в текстовом виде.
> * Исправлена ошибка прорисовки линий в гриде при установленном свойстве
> TColumnEh.HideDuplicated в True
> * Исправлена утечка памяти при работе окна поиска TDBGridEhFindDlg.
> * Исправлена ошибка в поиске диалога, когда есть невидимые столбцы.
> * Добавлена поддержка ftWideMemo.
> * Исправлена ошибка зацикливания в компоненте TPrintDBGridEh при печати строк
> выше высоты страницы.
> * Исправлена ошибка создания нового компонента TDataDriver на форме через меню
> Popup menu компоненты TMemTableEh -> Create DataDriver...
> + TDBLookupComboboxEh добавлена поддержка отображения Memo полей.
> * Исправлена ошибка ввода значения из предыдущей записи по Ctrl+' при подключении
> DBGridEh к TMemTableEh.

#### Версия 4.1

> + Добавлена поддержка Borland Developer Studio 2006 (Под VCL.Win32 and VCL.NET).

> * Исправлена ошибка мерцания грида в режиме дерева при раскрытии ветки.
> * Исправлена ошибка формирования списка значений в фильтре когда для колонки
> заполнен PickList и KeyList.
> * Другие небольшие исправления.

#### Версия 4.0

> * Начиная с этой версии библиотека больше не поддерживает Delphi 4 и C++ Builer 4.

> + Новые компоненты:
> TMemTableEh - dataset, который держит все данные в памяти.
> TDataDriverEh - поставляет записи в TMemTableEh и обрабатывает измененные записи.
> TSQLDataDriverEh, TBDEDataDriverEh, TIBXDataDriverEh, TDBXDataDriverEh и
> TADODataDriverEh.

> Смотри подробное описание в файле AboutEhlib4_0.rus.

#### Версия 3.6b

> * Исправлена прорисовка EditButtons при Ctl3D = False.
> * Исправлена независимость от верхнего/нижнего регистра букв в
> TCustomDBComboBoxEh.KeyItems. Теперь зависит от регистра.
> * Исправлена ошибка прорисовки ячейки при работе с большими числами в
> DBGridEh.
> * Исправлена ошибка незаполнения ячейки при выборе из MRUList и
> установленном dghEnterAsTab.
> * Выставление оптимальной ширины колонки учитывает картинки из
> Column.ImageList.
> * В компоненте TDBLookupComboboxEh свойство Tooltips вынесено в published.
> * Исправлена ошибка преобразования типа когда TPreviewBox помещен во Frame.

#### Версия 3.6

> + Добавлена поддержка Delphi 2005 (Под VCL.Win32 и VCL.NET).

> + Добавлено свойство Tooltips в TDBEditEh, TDBDateTimeEditEh, TDBNumberEditEh,
> TDBLookupComboboxEh. Позволяет показывать весь текст edit control'а в
> специальном окне подсказок если текст не умещается в видимую область. Текст
> выводится когда курсор мыши находится над окном редактирования.

> В TDBGridEh
> + Добалвены свойства OddRowColor и EvenRowColor для вывода четных и нечетных
> строк различными цветами. Это работает только когда DataSet поддерживает
> нумерацию записей (DataSet.IsSequenced = True) и DataSet.RecNo возвращает
> правильную информацию.

> + Добавлено значение dghRecordMoving в тип TDBGridEhOption (свойство
> OptionsEh). Разрешает перемещать записи в dataset'е. Запись перемещается
> нажатием и перемещением мыши над колонной указателя записей. По умолчанию
> Grid вызывает TDatasetFeaturesEh.MoveRecords. Код TDatasetFeaturesEh.MoveRecords
> сохраняет значения полей записи, удаляет запись и добавляет новую запись
> в позицию, заданную параметром RecNo.

> + Добавлено событие OnMoveRecords типа TGridMoveRecordsEventEh.
> TGridMoveRecordsEventEh = function(Sender: TObject; BookmarkList: TStrings;
> ToRecNo: Longint; TreeLevel: Integer; CheckOnly: Boolean): Boolean of object;
> BookmarkList это список букмарков которые надо переместить.
> ToRecNo это номер записи в которую надо переместить.
> TreeLevel это уровень в дереве в который надо переместить, используется только
> когда грид поключен к MemTableEh.
> CheckOnly - определеят что функция должна возвратить результат, возможно ли
> переместить букмарки в запись ToRecNo, но не перемещать сами букмарки.

> + Добавлено событие OnSelectionChanged. Происходит, после того как
> multiselected область была изменена.

> * В AdvTech\MemTableEh: Добавлена возможность фильтрации данных в режиме дерева,
> использования общих данных несколькими датасетами и перетаскивание записей
> внутри дерева в режиме dghRecordMoving.

#### Версия 3.5

> + Добавлено свойство HighlightRequired в компоненты TDBEditEh, TDBDateTimeEditEh,
> TDBNumberEditEh, TDBLookupComboboxEh и в объект TColumnEh, TColumnDefValuesEh. Свойство
> определяет необходимость рисования пунктирной красной линии под редактором ввода текста
> для обязательных полей (когда TField.Required = True и поле пусто).

> + Добавлено событие OnCheckDrawRequiredState в TDBEditEh, TDBDateTimeEditEh,
> TDBNumberEditEh, TDBLookupComboboxEh и в объект TColumnEh. Событие запрашивает
> необходимость рисования состояние RequiredState (пунктирная красная линия под
> редактором ввода текста).

> + Добавлено свойство Layout: TTextLayout в TColumnEh. Свойство задает вертикальное
> выравнивание текста в ячейке грида.

> + Добавлено свойство HideDuplicates: Boolean в TColumnEh. Свойство определяет скрывать
> ли повторяющиеся значения в столбце.

> * Изменено отображение 3D границ в гриде при работе программы в режиме поддержки стилий XP.

> * Процедура ExcecuteDBGridEhFindDialog переименована в ExecuteDBGridEhFindDialog.

> * В AdvTech\MemTableEh: Добавлены индексы и автогенерация списка значений для
> выпадающего окна в ячейках фильтра.

#### Версия 3.4

> + Добавлена поддержка Delphi 8 (VCL.NET).

> В TDBGridEh
> + Добавлено свойство ToolTips в Footer и в ColumnDefValues.Footer.
> + Добавлено свойство SumValue: Variant в TColumnFooterEh.

> + Добавлено свойство ShowImageAndText в TColumnEh. Позволяет выводить Изображение из ImageList
> и текст из поля в ячейке грида одновременно. Устанавливайте ImageIndex в событии OnGetCellParams.

> В TCustomDBEditEh
> + Добавлено свойство Images: TCustomImageList. Изображения из ImageList'а могут выводиться в левой
> части TDBEditEh, TDBDateTimeEditEh, TDBNumberEditEh or TDBLookupComboboxEh.
> + Добавлено событие OnGetImageIndex: TGetImageIndexEventEh.
> TGetImageIndexEventEh = procedure(Sender: TObject; var ImageIndex: Integer) of object;
> Событие вызывается, когда Text or Value в TCustomDBEditEh изменяется. Устанавливайте ImageIndex
> в зависимости от Text or Value.