Навігація по набору даних - глава 15

Переміщення або навігація по записах набору даних може здійснюватися кількома шляхами. Наприклад, в компонентах TDBGrid і TDBCtrlGrid, які відображають відразу кілька записів набору даних, можна використовувати клавіші вертикального переміщення курсору або вертикальну смугу прокрутки.

Але що робити, якщо на формі знаходяться тільки компоненти, що відображають одне поле тільки поточного запису набору даних (TDBEdit, TDBCombоВох і т. Д.)? Очевидно, що в цьому випадку на формі повинні бути розташовані додаткові елементи управління, що відповідають за переміщення по записах.

Аналогічно, жоден компонент відображення даних не має вбудованих засобів для створення і видалення записів цілком.

Для вирішення зазначених завдань і призначений компонент TDBNavigator, який являє собою сукупність керуючих кнопок, виконує операції навігації по набору даних і модифікації записів цілком.

Компонент TDBNavigator за допомогою властивості DataSource зв'язується з компонентом TDataSource і через нього з набором даних. Така схема дозволяє забезпечити зміну поточних значень полів відразу у всіх пов'язаних з TDataSource компонентах відображення даних. Таким чином, TDBNavigator тільки дає команду на виконання переміщення по набору даних або іншої керуючої операції, а всю реальну роботу виконують компонент набору даних і компонент TDataSource. Компонентів відображення даних залишається тільки прийняти нові дані від своїх полів.

Мал. 15.4. Призначення кнопок компонента TDBNavigator

Компонент TDBNavigator містить набір кнопок, кожна з яких відповідає за виконання однієї операції над набором даних. Усього є 10 кнопок, розробник може залишити в наборі будь-яку кількість кнопок в будь-якому поєднанні. Видимістю кнопок управляє властивість visibleButtons:

TNavigateBtn = (nbFirst, nbPrior, nbNext, nbLast, nblnsert, nbDelete,

nbEdit, nbPost, nbCancel, nbRefresh);

TButtonSet = set of TNavigateBtn;

property VisibieButtons: TButtonSet;

Кожен елемент типу TNavigateBtn представляє одну кнопку, їх призначення описується нижче:

nbFirst - переміщення на перший запис набору даних;

nbPrior - перехід на попередню запис набору даних;

nbNext - перехід на наступну запис набору даних;

nbLast - переміщення на останній запис набору даних;

nblnsert - вставка нового запису в поточній позиції набору даних;

nbDelete - видалення поточного запису, курсор перемішається на наступний запис;

nbEdit - набір даних переводиться в режим редагування;

nbPost - в базу даних переносяться всі зміни в поточному записі;

nbcancel - все зміни в поточному записі скасовуються;

nbRefresh - відновлюються початкові значення поточної записи, зроблені після останнього перенесення змін в базу даних.

Самою критичною до можливої ​​втрати даних внаслідок помилки є операція видалення запису, тому за допомогою властивості confirmDelete можна включити механізм контролю видалення. При кожному видаленні записи потрібно буде дати підтвердження виконуваної операції.

Натискання будь-якої кнопки можна емулювати програмно за допомогою методу BtnClick.

У разі необхідності виконання додаткових дій при натисканні на будь-якій кнопці можна скористатися обработчиками подій BeforeAction і Onciick, в яких параметр Button визначає натиснуту кнопку. Властивості і методи компонента TDBNavigator представлені в табл. 15.6.

Таблиця 15.6. Властивості і методи компонента TDBNavigator