Цвет и фонт текстового редактора по месту.

Редактор получает цвет и фонт из цвета и фонта ячейки. Ячейка получает цвет и фонт из столбца и в событии OnGetCellParams. Редактор автоматически устанавливает многострочный режим если высота строки больше высоты одной строки и свойство WordWrap для столбца установлен в True.

Автоматическая подгонкашириныстолбцов grid'а под ширину клиентской области grid'а.

Установите AutoFitColWidths в True для автоматического изменения ширины столбцов так что ширина свей сетки будет равна видимой части окна сетки. Свойство MinAutoFitWidth определяет минимальную ширину grid'а при которой происходит изменение ширины.

3D и flat вид grid'а.

Используйте свойство OptionsEh для отображения/скрытия 3D-рамки вокруг фиксированных, закрепленных, колонтитулов и строк данных.

Используйте свойство Flat для отображения grid'а в плоском стиле.

Импорт/Экспорт данных TDBGridEh в/изразные форматы.

EhLib имеет набор функций для экспорта данных DataSet'а в Text, Csv, HTML, RTF, XLS и внутренние форматы. Он может записывать данные в поток (объект TStream) либо в файл.

Пример:Pascal: SaveDBGridEhToExportFile(TDBGridEhExportAsText,DBGridEh1,'c:tempfile1.txt',False);C++: SaveDBGridEhToExportFile(__classid(TDBGridEhExportAsText),DBGridEh1,"c:\temp\file1.txt",false);

EhLib имеет набор функций для импорта данных из Text и внутренних форматов в DataSet подключенный к сетке. Он может считывать данные из потока (объект TStream) либо из файла.

Работа со свойствами объекта TDBGridEh.IndicatorTitle.

Используя свойства объекта TDBGridEh.IndicatorTitle вы можете управлять поведением сетки при нажатии на верхнюю левую ячейку.

 

 

Чтобы верхняя левая ячейка работала в режиме кнопки установите TitleButton в True. В этом случае также будет использоваться свойство DropdownMenu и UseGlobalMenu. Если UseGlobalMenu = True то после щелчка не на верхнюю левую ячейку сетка будет формировать выпадающее DropDown menu используя глобальное свойство DBGridEhCenter. IndicatorTitleMenus. Если будет также установлено свойство DropdownMenu, то элементы этого меню будут добавлены в выпадающее меню после элементов глобального меню.

 

property DropdownMenu: TPopupMenu;

Определяет выпадающее меню, элементы которого будут отображаться при нажатии на IndicatorTitle ячейку.

 

property ShowDropDownSign: Boolean default False;

Определяет надо ли отображать черный треугольник направленный вниз в верхней левой ячейке.

 

property TitleButton: Boolean;

Определяет что верхняя левая ячейка работает как кнопка.

 

property UseGlobalMenu: Boolean default True;

При формировании выпадающего меню использовать свойства глобального объекта DBGridEhCenter. IndicatorTitleMenus.

 

Настройка глобальных свойств TDBGridEh.

Библиотека имеет набор глобальных свойств и событий, которые влияют на все созданные в проекте сетки. Вы один раз настраиваете это свойство или событие, например, в главной форме вашего проекта, и все сетки проекта будут менять свое поведения согласно этим настройкам. Для управления глобальным поведением сеток используются глобальные объекты типа TDBGridEhCenter и TDBGridEhStyle. Первый объект используется для управления поведением грида, второй для управления отображением.

 

Общая информация о классе TDBGridEhCenter:

Для доступа к элементам объекта TDBGridEhCenter используйте глобальную функцию:

 

function DBGridEhCenter: TDBGridEhCenter;

 

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

 

function SetDBGridEhCenter(NewGridCenter: TDBGridEhCenter): TDBGridEhCenter;

 

Она устанавливает новый объект управления и возвращает ссылку на старый. Старый объект чаще всего необходимо просто удалить.

 

Свойства и события класса TDBGridEhCenter: Свойства: property FilterEditCloseUpApplyFilter: Boolean;Определяет, будет ли применяться SubTitleFilter сразу после выбора значений из DropDown списка или для применения фильтра надо всегда нажимать Enter. propertyIndicatorTitleMenus: TDBGridEhStyleIndicatorTitleMenusEh;Задает список элементов, которые будут появляться в выпадающем DropDown списке меню сеток при установленном TDBGridEh.IndicatorTitle.UseGlobalMenu = True и TDBGridEh.IndicatorTitle.TitleButton = True. Тип TDBGridEhStyleIndicatorTitleMenusEh является перечисление и содержит следующие значения itmVisibleColumnsEh - Отображать меню со списком полей грида, кликая на которые можно отображать срывать столбцы. itmCut - Отображать меню Cut itmCopy - Отображать меню Copy itmPaste - Отображать меню Paste itmDelete - Отображать меню Delete itmSelectAll - Отображать меню SelectAll События: OnApplyFilter: TNotifyEvent; Событие вызывается, когда в сетке применяется SubTitleFilter. В качестве параметра Sender передается вызывающая сетка. В обработчике события вы можете вызывать обработчик по умолчанию DBGridEhCenter.DefaultApplyFilter. OnApplySorting: TNotifyEvent; Событие вызывается, когда в сетке применяется сортировка. В качестве параметра Sender передается вызывающая сетка. В обработчике события вы можете вызвать обработчик по умолчанию DBGridEhCenter. DefaultApplySorting. OnBuildIndicatorTitleMenu: TDBGridEhBuildIndicatorTitleMenu; Событие вызывается, когда в сетке формируется выпадающее меню при нажатии на верхнюю левую ячейку сетки IndicatorTitle. Событие вызывается если TDBGridEh.IndicatorTitle.TitleButton = True. В событие передается Grid, в котором была нажата IndicatorTitle кнопка и PopupMenu, которое будет отображено под кнопкой. Вы можете вызвать функцию, которая сформирует меню по умолчанию DBGridEhCenter.DefaultBuildIndicatorTitleMenu(Grid, PopupMenu);и затем выполнить дополнительные манипуляции, например, добавить еще один элемент меню. // Ниже пример демонстрирующий как добавить в список IndicatorTitle меню новое меню для печати сетки. // Объявляем ссылку на новое глобальное меню для печати сетки.var DBGridEhPreviewIndicatorMenuItem: TDBGridEhMenuItem; // В public разделе главной формы объявляем методы для события по созданию IndicatorTitle меню. procedure BuildIndicatorTitleMenu(Grid: TCustomDBGridEh; var PopupMenu: TPopupMenu);// И события, которое будет вызываться при выборе нового меню, которое мы добавим в BuildIndicatorTitleMenu. procedure MenuEditClick(Sender: TObject); // В событии создания главной формы (TMainForm.OnCreate) программы присваиваем событие по формированию IndicatorTitle меню.procedure TForm1.FormCreate(Sender: TObject);begin DBGridEhCenter.OnBuildIndicatorTitleMenu := BuildIndicatorTitleMenu;end; // Сам метод для добавления нового меню в стандартный список IndicatorTitle меню.procedure TForm1.BuildIndicatorTitleMenu(Grid: TCustomDBGridEh; var PopupMenu: TPopupMenu);begin// Вначале вызываем стандартный метод формирования меню. DBGridEhCenter.DefaultBuildIndicatorTitleMenu(Grid, PopupMenu); // Затем добавляем создаем новый. if DBGridEhPreviewIndicatorMenuItem = nil then DBGridEhPreviewIndicatorMenuItem := TDBGridEhMenuItem.Create(Screen); DBGridEhPreviewIndicatorMenuItem.Caption := 'Preview'; DBGridEhPreviewIndicatorMenuItem.OnClick := MenuEditClick; DBGridEhPreviewIndicatorMenuItem.Enabled := True; DBGridEhPreviewIndicatorMenuItem.Grid := Grid; // И добавляем его в конец списка меню. PopupMenu.Items.Insert(PopupMenu.Items.IndexOf(DBGridEhSelectAllIndicatorMenuItem)+1, DBGridEhPreviewIndicatorMenuItem); end; // Обработчик меню печати сетки.procedure TForm1.MenuEditClick(Sender: TObject);begin PrintDBGridEh1.DBGridEh := TDBGridEh(TDBGridEhMenuItem(Sender).Grid); PrintDBGridEh1.SetSubstitutes(['%[Today]',DateToStr(Now)]); PrintDBGridEh1.Preview;end; OnCellMouseClick: TGridEhCellMouseEvent; type TGridEhCellMouseEvent = procedure (Grid: TCustomGridEh; Cell: TGridCoord; Button: TMouseButton; Shift: TShiftState; X, Y: Integer) of object; Событие вызывается при щелчке мышкой на любую ячейку сетки. В событие передается сетка, в которой была кликнута ячейка (Grid), координаты ячейки (Cell), Кнопка, которая была нажата на мышке (Button), Состояние Shift кнопок клавиатуры (Shift) и координаты точки нажатия внутри ячейки (X, Y). В обработчике события вы можете вызывать обработчик по умолчанию DBGridEhCenter.DefaultCellMouseClick. OnIndicatorTitleMouseDown: TGridEhCellMouseEvent; type TGridEhCellMouseEvent = procedure (Grid: TCustomGridEh; Cell: TGridCoord; Button: TMouseButton; Shift: TShiftState; X, Y: Integer) of object; Событие вызывается при нажатии мышкой на верхнюю левую ячейку сетки. В обработчике события вы можете вызывать обработчик по умолчанию DBGridEhCenter.DefaultIndicatorTitleMouseDown. OnLocateText: TLocateTextEventEh; type TLocateTextEventEh = function (Sender: TObject; const FieldName: string; const Text: String; Options: TLocateTextOptionsEh; Direction: TLocateTextDirectionEh; Matching: TLocateTextMatchingEh; TreeFindRange: TLocateTextTreeFindRangeEh): Boolean of object; Событие вызывается при инкрементном или диалоговом поиске в сетке.

 

 

Общая информация о классе TDBGridEhStyle:

Для доступа к элемента объекта TDBGridEhStyle используйте глобальную функцию:

 

function DBGridEhStyle: TDBGridEhStyle;

 

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

 

function SetDBGridEhStyle(NewGridStyle: TDBGridEhStyle): TDBGridEhStyle;

 

Она устанавливает новый объект отображения и возвращает ссылку на старый. Старый объект чаще всего необходимо просто удалить.

 

 

Свойства и события класса TDBGridEhStyle:

 

Свойства

property LuminateSelection: Boolean default True;

Определяет метод подсветки выделенной области. Если LuminateSelection = False то выделение будет закрашиваться цветом clHighlight. Если LuminateSelection = True то выделение будет закрашиваться методом легкого затемнения в сторону clHighlight цвета.

 

property IsDrawFocusRect: Boolean default True;

Определяет нужно ли рисовать оконтовочный точечный квадрат в сетках вокруг текущей ячейки или строки-записи.

 

Другие возможности.

В lookup-редакторе вы можете очистить (установить в Null) значение LookupKeyField в runtime. Просто выделите весь текст и нажмите Delete.