Строго говоря, компонент TDBNavigator (навигатор БД) не предназначен для отображения данных. Его назначение - дать пользователю программыудобное средство перемещения по записям НД и облегчить ему такие действия, как вставка новой записи, а также редактирование и удаление существующей записи. Однако навигатор БД используется только совместно с компонентами визуализации, поэтому мне кажется вполне уместным рассмотреть его особенности именно в этом разделе.
На рисунке 12.12 показаны кнопки навигатора.
Рисунок 8.5 – Кнопки навигатора БД
Назначение кнопок в порядке следования слева направо:
ü First - устанавливает курсор на первую запись;
ü Prior - устанавливает курсор на предыдущую запись;
ü Next - устанавливает курсор на следующую запись;
ü Last - устанавливает курсор на последнюю запись;
ü Insert - переводит НД в режим вставки новой записи;
ü Delete - удаляет текущую запись;
ü Edit - переводит НД в режим редактирования;
ü Post - запоминает изменения, сделанные в текущей записи;
ü Cancel - отменяет изменения, сделанные в текущей записи;
ü Refresh - обновляет НД (для TQuery - только если запрос обновляемый).
С помощью свойства DataSource компонент связывается с нужным источником данных TDataSource - это все, что необходимо для его нормальной работы. Представленное ниже свойство управляет отображением диалогового окна с просьбой подтвердить удаление записи (значение True этого свойства выводит окно):
propertyConfirmDelete: boolean;
Если следующее свойство имеет значение True, кнопки будут плоскими, в противном случае - объемными:
propertyFlat: boolean;
С помощью другого свойства можно отображать только те кнопки навигатора, которые действительно необходимы:
typeTNavigateBtn = (nbFirst, nbPrior, nbNext, nbLast, nbInsert, nbDelete, nbEdit, nbPost, nbCancel, nbRefresh);
typeTButtonSet = set of TNavigateBtn;
propertyVisibleButtons: TButtonSet;
Например, если НД является результатом выполнения необновляемого запроса, в навигаторе имеет смысл оставить только первые 4 кнопки.
С помощью следующего метода можно имитировать щелчок на нужной кнопке навигатора:
procedureBtnClick (Index: TNavigateBtn);
Для компонента определены два специфических события:
typeENavClick = procedure(Sender: TObject; Button: TNavigateBtn) of object;
propertyBeforeAction: ENavClick;
propertyOnClick: ENavClick;
Обработчик первого события получает управление перед выполнением действия, связанного со щелчком на кнопке Button, в то время как обработчик OnClick - после выполнения действия.
ПРИЛОЖЕНИЕ 2. БД "ПОСТАВЩИК КНИГ"
Ниже приводится описание 5-ти основных таблиц.
Таблица 1.1 - NAKLS
Имя поля | Назначение |
Naklld | Уникальный идентификатор накладной. По этому полю нужно создать первичный ключ |
nDate | Дата составления накладной. По этому полю можно создать индекс для сортировки накладных по мере их поступления |
nType | Тип накладной: 0 - покупка у поставщика; 1 - продажа покупателю; 2 - возврат поставщику; 3 - возврат от покупателя; 4 - книги получаются по обмену; 5 - книги передаются по обмену; 6 - покупка с предоплатой; 7 - продажа с предоплатой |
nFirm | Уникальный идентификатор партнера (поле FirmId таблицы FIRMS) |
nBook | Уникальный идентификатор книги (поле Bookld таблицы BOOKS) |
… | … |
Таблица 1.2 - BOOKS
Имя поля | Назначение |
Bookld | Уникальный код книги (первичный ключ) |
bName | Название книги (индексное поле) |
bAuthor | Автор(ы) |
bPublish | Издательство |
bYear | Год выпуска |
bPrice | Цена покупки книги |
… | … |
Таблица 1.2 - FIRMS
Имя поля | Назначение |
Firmld | Уникальный идентификатор партнера (первичный ключ) |
fName | Наименование партнера (индексное поле) |
fAddress | Адрес партнера |
fCity | Город |
fPhone | Телефон(ы) |
fEMaiL | Адрес электронной почты |
… | … |
Таблица 1.4 - MOVEBOOK
Имя поля | Назначение |
Moveld | Уникальный идентификатор (первичный ключ) |
mNakl | Код накладной из поля Naklld таблицы NAKLS (индексное поле) |
mBook | Код книги из поля Bookld таблицы BOOKS (индексное поле) |
… | … |
Таблица 1.5 - PAYMENTS
Имя поля | Назначение |
PayID | Уникальный идентификатор платежного документа (первичный ключ) |
pFirm | Код партнера из поля Firmld таблицы FIRMS |
pOut | Направление платежа: True - партнеру; False - от партнера |
pDate | Дата платежа |
pSum | Сумма платежа |
Таблица 1.6 - TYPENAKL
Имя поля | Назначение |
TypeID | Уникальный идентификатор типа накладной (первичный ключ) |
tName | Содержание типа наладной |