Перемещение или навигация по записям набора данных может осуществляться несколькими путями. Например, в компонентах TDBGrid и TDBCtrlGrid, которые отображают сразу несколько записей набора данных, можно использовать клавиши вертикального перемещения курсора или вертикальную полосу прокрутки.
Но что делать, если на форме находятся только компоненты, отображающие одно поле только текущей записи набора данных (TDBEdit, TDBCombоВох и т. д.)? Очевидно, что в этом случае на форме должны быть расположены дополнительные элементы управления, отвечающие за перемещение по записям.
Аналогично, ни один компонент отображения данных не имеет встроенных средств для создания и удаления записей целиком.
Для решения указанных задач и предназначен компонент TDBNavigator, который представляет собой совокупность управляющих кнопок, выполняет операции навигации по набору данных и модификации записей целиком.
Компонент TDBNavigator при помощи свойства DataSource связывается с компонентом TDataSource и через него с набором данных. Такая схема позволяет обеспечить изменение текущих значений полей сразу во всех связанных с TDataSource компонентах отображения данных. Таким образом, TDBNavigator только дает команду на выполнение перемещения по набору данных или другой управляющей операции, а всю реальную работу выполняют компонент набора данных и компонент TDataSource. Компонентам отображения данных остается только принять новые данные от своих полей.

Рис. 15.4. Назначение кнопок компонента TDBNavigator
Компонент TDBNavigator содержит набор кнопок, каждая из которых отвечает за выполнение одной операции над набором данных. Всего имеется 10 кнопок, разработчик может оставить в наборе любое количество кнопок в любом сочетании. Видимостью кнопок управляет свойство visibleButtons:
type
TNavigateBtn = (nbFirst, nbPrior, nbNext, nbLast, nblnsert, nbDelete,
nbEdit, nbPost, nbCancel, nbRefresh);
TButtonSet = set of TNavigateBtn;
property VisibieButtons: TButtonSet;
Каждый элемент типа TNavigateBtn представляет одну кнопку, их назначение описывается ниже:
| Объявление |
Тип |
Описание |
| Свойства |
||
| property ConfirmDelete: Boolean; |
Pb |
Включает или отключает подтверждение удаления записи |
| property Hints: TStrings; |
Pb |
Содержит список подсказок для каждой кнопки |
| property Flat: Boolean; |
Pb |
Определяет внешний вид кнопок компонента |
| type TNavigateBtn = (nbFirst, nbPrior, nbNext, nbLast, nblnsert, nbDeiete, nbEdit, nbPost, nbCancel, nbRefresh); TButtonSet = set of TNavigateBtn ; property VisibleButtons: TButtonSet; |
Pb |
Список видимых кнопок |
Методы |
| procedure BtnClick (Index: TNavigateBtn) ; |
Pu |
Эмулирует щелчок на кнопке index |
| procedure SetBounds (ALeft, ATop, AWidth, AHeight: Integer) ; |
Pu |
Задает положение (параметры ALeft, АТор) и размер компонента (параметры AWidth, AHeight) |
| Методы-обработчики событий |
||
| ENavClick = procedure (Sender: TObject; Button: TNavigateBtn) of object; Iproperty BeforeAction: ENavClick; |
Pb |
Выполняется при щелчке на кнопке Button перед выполнением операции, связанной с кнопкой |
| ENavClick = procedure (Sender: TObject; Button: TNavigateBtn) of object; property OnClick: ENavClick; |
Pb |
Выполняется при щелчке на кнопке Button после выполнения операции, связанной с кнопкой |