Шаг 3.
Компоненты библиотеки RX.
Вкладка RX DBAware. Компонент TRxDBGrid

    На этом шаге мы рассмотрим компонент TRxDBGrid.

    Компонент TRxDBGrid (рис.1) предназначен, как и стандартный компонент TDBGrid, для отображения данных таблиц БД или результатов запросов в табличной форме. Являясь наследником TDBGrid, компонент TRxDBGrid имеет все те же свойства и методы, и, кроме того, некоторые свойства, находящиеся у TDBGrid в секции protected, вынесены в секцию public. Это такие свойства, как Col, Row, LeftCol, Canvas.

    Другие отличия от TDBGrid:


Рис.1. Компонент TRxDBGrid

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

Таблица 1. Свойства и методы компонента TRxDBGrid
Свойство Описание
property ShowGlyphs: Boolean; BLOB-поля базы данных, такие как графические изображения, текстовые мемо-поля, другие BLOB'ы могут отображаться в таблице в виде пиктограмм при установленном в True значении свойства ShowGlyphs. Если вы задали для поля обработчики событий OnGetText и OnSetText одновременно, то картинки для него отображаться не будут, несмотря на значение свойства ShowGlyphs.
property OnGetCellParams: TGetCellParamsEvent; Событие происходит при перерисовке ячейки компонента TRxDBGrid. В обработчике события вы можете проверить имя и значение поля БД, передаваемого в качестве параметра Field, а также значения любых других полей из текущей записи набора данных (dataset), к которым вы можете обратиться, например, так:
N := (Sender as TrxDBGrid).DataSource.DataSet.FieldByName('CustNo').AsInteger;

В результате вы можете изменить, в зависимости от значений в текущей записи либо от имен полей, характеристики шрифта, используемого для отрисовки ячейки (или строки либо столбца), использовав параметр 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.




Предыдущий шаг Содержание Следующий шаг