На этом шаге мы рассмотрим компонент TRxDBGrid.
Компонент TRxDBGrid (рис.1) предназначен, как и стандартный компонент TDBGrid, для отображения данных таблиц БД или результатов запросов в табличной форме. Являясь наследником TDBGrid, компонент TRxDBGrid имеет все те же свойства и методы, и, кроме того, некоторые свойства, находящиеся у TDBGrid в секции protected, вынесены в секцию public. Это такие свойства, как Col, Row, LeftCol, Canvas.
Другие отличия от TDBGrid:
Рис.1. Компонент TRxDBGrid
Рассмотрим некоторые свойства компонента:
Свойство | Описание |
---|---|
property ShowGlyphs: Boolean; | BLOB-поля базы данных, такие как графические изображения, текстовые мемо-поля, другие BLOB'ы могут отображаться в таблице в виде пиктограмм при установленном в True значении свойства ShowGlyphs. Если вы задали для поля обработчики событий OnGetText и OnSetText одновременно, то картинки для него отображаться не будут, несмотря на значение свойства ShowGlyphs. |
property OnGetCellParams: TGetCellParamsEvent; | Событие происходит при перерисовке ячейки компонента TRxDBGrid.
В обработчике события вы можете проверить имя и значение поля БД, передаваемого в
качестве параметра Field, а также значения любых других полей
из текущей записи набора данных (dataset), к которым вы можете
обратиться, например, так: В результате вы можете изменить, в зависимости от значений в текущей записи либо от имен полей, характеристики шрифта, используемого для отрисовки ячейки (или строки либо столбца), использовав параметр AFont; либо цвет фона ячейки, используя параметр Background. Параметр Highlight определяет, является ли отрисовываемая ячейка выделенной ("подсвеченной"). |
procedure SaveLayout (IniFile: TIniFile); | Метод служит для сохранения в INI-файле установок компонентов TRxDBGrid (таких как порядок и ширины столбцов) и TSpeedbar (набор и расположение кнопок на панели инструментов), для последующего восстановления с помошью метода RestoreLayout. Данные о текущих установках компонента записываются в специфицированный INI-файл в секцию с именем, возвращаемым функцией GetDefaultSection. Если вы задали значение свойству IniStorage, то настройки могут сохраняться и восстанавливаться автоматически. |
procedure RestoreLayout (IniFile: TIniFile); | Метод служит для восстановления из INI-файла установок компонентов TRxDBGrid (таких как порядок и ширины столбцов) и TSpeedbar (набор и расположение кнопок на панели инструментов), если они были сохранены там с помошью метода SaveLayout. Текущие установки не изменяются, если специфицированный INI-файл не содержит данных об установках компонента. Если вы задали значение свойству IniStorage, то настройки могут сохраняться и восстанавливаться автоматически. |
property IniStorage: TFormPlacement; | Свойство позволяет автоматически сохранять специфические установки компонента в INI-файле или (для 32-разрядной версии) в системном регистре при помощи компонент TFormPlacement или TFormStorage. При задании значения свойству IniStorage (и непустом имени компонента), некоторые ее настройки, которые не являются published-свойствами и не могут быть заданы для TFormStorage напрямую, будут сохраняться и восстанавливаться одновременни с другими значениями, заданными для соответствующего компонента TFormPlacement (TFormStorage). Для TSpeedbar - это расположение кнопок на панели и положение самой панели, для TMRUManager - список строк, для TRxDBGrid - ширины и положение полей в таблице и т.д. Все компоненты, имеющие свойство IniStorage, имеют также методы для сохранения и восстановления их настроек вручную, такие как Save/RestoreLayout и т.д. |
property TitleButtons: Boolean; | Свойство определяет, могут ли заголовки колонок в Grid-е быть использованы как кнопки. По умолчанию - False. При установке свойства в значение True вы можете обработать события OnTitleBtnClick для обработки нажатия на такую кнопку и OnCheckButton, OnGetBtnParams для установки свойств кнопок в заголовке. |
Вы можете использовать компонент TRxDBGrid во всех случаях, когда вам нужно отображать данные из БД в табличном виде, вместо стандартной компоненты TDBGrid. Использование компонента TRxDBGrid позволит вам изменять цвет и характеристики шрифта для любой ячейки таблицы в зависимости от отображаемых данных.
Приведем пример: необходимо отобразить таблицу RxDBGrid1 с определенными данными.
Поместим на форму компоненты RxDBGrid1, Table2, DataSource2 – для связи базы данных и таблицы (рис.2).
Рис.2. Форма с размещенными на ней компонентами
RxDBGrid1, Table2, DataSource2
Выделим колонку с Ф.И.О. жирным шрифтом, колонку с кодом красным цветом. И если человек родился раньше 1984 года нужно выделить его данные жирным курсивом.
Используем обработку события OnGetCellParams:
procedure TForm1.RxDBGrid1GetCellParams(Sender: TObject; Field: TField; AFont: TFont; var Background: TColor; Highlight: Boolean); var OldDate: TDateTime; DataSet: TDataSet; begin if Field.FieldName = 'Ф.И.О.' then AFont.Style := AFont.Style + [fsBold] else if Field.FieldName = 'Код' then Background := clRed else begin OldDate := EncodeDate(1984, 1, 1); DataSet := (Sender as TrxDBGrid).DataSource.DataSet; if DataSet.FieldByName('Дата рождения').AsDateTime < OldDate then AFont.Style := AFont.Style + [fsItalic]+ [fsBold]; end; end;
Работа программы показана на рис.3(а-б).
Рис.3а. Выделение поля 'Ф.И.О.' жирным шрифтом и поля 'Код' красным цветом
Рис.3б. Изменение даты рождения и выделение данных жирным курсивом
Текст этого примера можно взять здесь.
На следующем шаге мы рассмотрим компонент TRxDBLookupList.