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
Align | FixedColor | PopupMenu |
BorderStyle | ![]() |
![]() |
![]() |
Font | ![]() ![]() |
![]() |
Height | ![]() ![]() |
![]() ![]() |
HelpContext | ![]() ![]() |
Color | Hint | ![]() ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
ShowHint |
![]() |
Left | ![]() |
![]() |
LeftCol | TabOrder |
Ctl3D | ![]() |
TabStop |
Cursor | Name | Tag |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
DragCursor | ![]() |
Top |
DragMode | ParentColor | Visible |
Enabled | ParentCtl3D | Width |
![]() ![]() |
ParentFont | |
![]() ![]() |
ParentShowHint |
BeginDrag | InsertComponent | ![]() |
BringToFront | Invalidate | ScreenToClient |
ClientToScreen | ![]() |
![]() |
Create | Perform | SendToBack |
Destroy | Refresh | SetBounds |
Dragging | RemoveComponent | SetFocus |
EndDrag | Repaint | Show |
FindComponent | ![]() |
![]() |
![]() |
![]() |
![]() |
Hide | ![]() |
Update |
Events ( События )
Key events
![]() |
![]() |
OnKeyPress |
![]() |
![]() |
OnKeyUp |
![]() |
OnEndDrag | OnMouseDown |
![]() |
OnEnter | OnMouseMove |
OnDblClick | OnExit | OnMouseUp |
OnDragDrop | ![]() |
OnStartDrag |
OnDragOver | ![]() |
![]() |
![]() |
OnGetCellProps | |
![]() |
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;