TRxDBGrid Component

Unit
RxDBCtrl
Description


Компонента TRxDBGrid предназначена, как и стандартная компонента 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.


Hierarchy (Иерархия)
TObject -> TPersistent -> TComponent-> TControl->TWinControl->TCustomControl->
TCustomGrid->TCustomDBGrid->TDBGrid


Properties ( Свойства)
Run-time only     Key properties

Align FixedColor PopupMenu
BorderStyle FixedCols ReadOnly
Canvas Font Row
ClearSelection Height SelectedField
Col HelpContext SelectedIndex
Color Hint SelectedRows
Columns IniStorage ShowGlyphs
ComponentCount InplaceEditor ShowHint
ComponentIndex Left Showing
Components LeftCol TabOrder
Ctl3D MultiSelect TabStop
Cursor Name Tag
DataSource Options TitleButtons
DefaultDrawing Owner TitleFont
DragCursor Parent Top
DragMode ParentColor Visible
Enabled ParentCtl3D Width
FieldCount ParentFont  
Fields ParentShowHint  

Methods (Методы)
Key methods

BeginDrag InsertComponent SaveLayoutReg
BringToFront Invalidate ScreenToClient
ClientToScreen MouseToCell SelectAll
Create Perform SendToBack
Destroy Refresh SetBounds
Dragging RemoveComponent SetFocus
EndDrag Repaint Show
FindComponent RestoreLayout ToggleRowSelection
GotoSelection RestoreLayoutReg UnselectAll
Hide SaveLayout Update

Events ( События )
Key events

OnCheckButton OnEditButtonClick OnKeyPress
OnColEnter OnEditChange OnKeyUp
OnColExit OnEndDrag OnMouseDown
OnColumnMoved OnEnter OnMouseMove
OnDblClick OnExit OnMouseUp
OnDragDrop OnGetBtnParams OnStartDrag
OnDragOver OnGetCellParams OnTitleBtnClick
OnDrawColumnCell OnGetCellProps  
OnDrawDataCell OnKeyDown  

Примеры работы и некоторые интересные свойства и методы.

Declaration
property ShowGlyphs: Boolean;

Description
BLOB-поля базы данных, такие как графические изображения, текстовые мемо-поля, другие BLOB'ы могут отображаться в таблице в виде пиктограмм при установленном в True значении свойства ShowGlyphs.
Если Вы задали для поля обработчики событий OnGetText и OnSetText одновременно, то картинки для него отображаться не будут, несмотря на значение свойства ShowGlyphs.


Declaration
property OnGetCellParams: TGetCellParamsEvent;

Description
Событие происходит при перерисовке ячейки компоненты TrxDBGrid. В обработчике события вы можете проверить имя и значение поля БД, передаваемого в качестве параметра Field, а также значения любых других полей из текущей записи набора данных (dataset), к которым Вы можете обратиться, например, так:

N := (Sender as TrxDBGrid).DataSource.DataSet.FieldByName('CustNo').AsInteger;
В результате вы можете изменить, в зависимости от значений в текущей записи либо от имен полей, характеристики шрифта, используемого для отрисовки ячейки (или строки либо столбца), использовав параметр AFont; либо цвет фона ячейки, используя параметр Background. Параметр Highlight определяет, является ли отрисовываемая ячейка выделенной ("подсвеченной").


Declaration
procedure SaveLayout(IniFile: TIniFile);

Description
Метод служит для сохранения в INI-файле установок компонентов TRxDBGrid (таких как порядок и ширины столбцов) и TSpeedbar (набор и расположение кнопок на панели инструментов), для последующего восстановления с помошью метода RestoreLayout.

Данные о текущих установках компоненты записываются в специфицированный INI-файл в секцию с именем, возвращаемым функцией GetDefaultSection.
Если Вы задали значение свойству IniStorage, то настройки могут сохраняться и восстанавливаться автоматически.


Declaration
procedure RestoreLayout(IniFile: TIniFile);

Description
Метод служит для восстановления из INI-файла установок компонентов TRxDBGrid (таких как порядок и ширины столбцов) и TSpeedbar (набор и расположение кнопок на панели инструментов), если они были сохранены там с помошью метода SaveLayout.

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


Declaration
property IniStorage: TFormPlacement;

Description
Свойство позволяет автоматически сохранять специфические установки компоненты в INI-файле или (для 32-разрядной версии) в системном регистре при помощи компонент TFormPlacement или TFormStorage.

При задании значения свойству IniStorage (и непустом имени компоненты), некоторые ее настройки, которые не являются published-свойствами и не могут быть заданы для TFormStorage напрямую, будут сохраняться и восстанавливаться одновременни с другими значениями, заданными для соответствующей компоненты TFormPlacement (TFormStorage).
Для TSpeedbar — это расположение кнопок на панели и положение самой панели, для TMRUManager — список строк, для TRxDBGrid — ширины и положение полей в таблице и т.д. Все компоненты, имеющие свойство IniStorage, имеют также методы для сохранения и восстановления их настроек вручную, такие как Save/RestoreLayout и т.д.


Declaration
property TitleButtons: Boolean;

Description
Свойство определяет, могут ли заголовки колонок в Grid-е быть использованы как кнопки. По умолчанию — False.
При установке свойства в значение True Вы можете обработать события OnTitleBtnClick для обработки нажатия на такую кнопку и OnCheckButton, OnGetBtnParams для установки свойств кнопок в заголовке.


Purpose

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

Tasks

Например, вы хотите отобразить таблицу заказчиков (в каталоге \DELPHI\DEMOS\DATA есть таблица CUSTOMER.DB) таким образом, чтобы выделить название компании-заказчика жирным шрифтом, колонку с именами сотрудников, отвечающих за контакт, выделить желтым цветом фона, строки содержащие данные о заказчиках, не имевших с вами дела более 5 лет — светло-зеленым цветом фона, а тех, с кем у вас были контакты в этом году, наоборот, шрифтом красного цвета. Никаких проблем! Используйте обработку события OnGetCellParams:

procedure TForm1.rxDBGrid1GetCellParams(Sender: TObject; Field: TField;
AFont: TFont; var Background: TColor; Highlight: Boolean);
var
OldDate, NewDate: TDateTime;

DataSet: TDataSet;
begin
if Field.FieldName = 'Company' then
AFont.Style := AFont.Style + [fsBold]
else if Field.FieldName = 'Contact' then
if not Highlight then Background := clYellow;
if not Highlight then begin

OldDate := EncodeDate(1990, 1, 1);
NewDate := EncodeDate(1995, 1, 1);
DataSet := (Sender as TrxDBGrid).DataSource.DataSet;
if DataSet.FieldByName('LastInvoiceDate').AsDateTime < OldDate then
Background := clLime { oldest }
else if DataSet.FieldByName('LastInvoiceDate').AsDateTime >= NewDate then

AFont.Color := clRed; { newest }
end;
end;