Вкладка RX DBAware. Компонент TRxDBGrid

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

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

  • BLOB-поля базы данных, такие как графические изображения,
    текстовые мемо-поля, другие BLOB'ы могут отображаться в таблице
    в виде пиктограмм при установленном в True значении свойства
    ShowGlyphs;
  • вы можете изменить цвет шрифта и фона любой ячейки таблицы (либо любой ее
    строки или столбца) в зависимости от значения поля или имени поля набора данных,
    определив обработчик события OnGetCellParams;
  • имеются методы SaveLayout и RestoreLayout
    для сохранения и восстановления порядка и ширин столбцов
    компонента TRxDBGrid в INI-файле (или в
    Registry для Delphi 2.0). Вы можете также автоматически сохранять
    и восстанавливать эти параметры, присвоив значение свойству
    IniStorage;
  • как в 32-битной, так и в 16-битной версии компонента поддерживает выбор
    нескольких записей в таблице при значении свойства MultiSelect = True;
  • заголовки колонок Grid-а могут быть с помощью
    свойства TitleButtons использованы как кнопки, например,
    для изменения порядка сортировки отображаемых данных;
  • вы можете зафиксировать несколько первых колонок в
    Grid-е с помощью свойства FixedCols.


Рис.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.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий