Як зробити dbnavigator активним

Як зробити DBNavigator активним

У мене на формі dbgrid1, datasource1, query1, dbnavigator1. При запуску програми дані з таблиці БД відображаються, а ось кнопочки на навігаторі не активні. Як мені зробити, щоб можна було додавати записи в таблицю використовуючи кнопочки навігатора?







поставити Datasouce1 у dbnavigator1

> Соловйов
Я поставила, але все одно навігатор не активний, я тому і задала питання. Допоможіть мені будь-ласка.

query1.recvastLive = true або використовувати TTable

або причепити до query1 UpdateQuery1 і заповнити його.

> Соловйов
У мене все вийшло, тільки ось ще одне питання з'явився. Виходить, що я тепер можу використовувати навігатор для вставки запису в таблицю БД і не писати в query1.sql insert into.


> Навігатор для вставки

так можеш. але є поределенное обмеження.

Використання стандартного навігатора в своїх прогах є ознака аматорства. Справа в тому, що він використовує багато подій датасета, до якого "причеплений", а вони можуть знадобитися розробнику для якихось особливих фичей. Ось тоді і доведеться боротися вже не власне з проблемою реалізації фичи, а з самим навігатором.
Та й панель його виглядає кострубато (ІМХО). У жодній професійно зробленої проге його не бачив.

> Соловйов
Коли я після вставки записи натискаю на навігаторі Refresh, то вилітає помилка "Table does not support this operation because it is not unicuely indexed".

> MsGuns
Тоді, що на Вашу думку краще використовувати замість навігатора.

Соловйов написав коротко, спробую детальніше.
1. Кидаємо на форму TActionList і TImageList. У перший додаємо екшіни (наприклад):






actDSHome
actDSNext
actDSPrior
actDSEnd
actDSInsert
actDSDelete
actDSEdit
actDSCancel
actDSPost
actDSRefresh
actDSCommit

2. Кидаємо куди треба будь-контроли управління (меню, PupUp-меню, тулбатони, батони і т.д.). У св-вах Action кожного такого контрола вибираємо зі списку екшінов відповідний.

Переваги очевидні: в обробниках я можу робити що завгодно, в тому числі обробляти будь-які датасета, в тому числі навіть Популярні через Стрінггріди. Тобто один обробник, наприклад, для Insert для БУДЬ-ЯКОГО НД. Звичайно, доведеться попітніти, коли його треба буде писати, але все окупиться швидкістю налагодження і надійністю в роботі. При зміні алгоритму мені немає необхідності курочіть обробники OnClick для всіх меню, підміню і інших наворотів, де дана фіча використовується, - я просто редагую ОДИН обробник ОДНОГО екшіна.

До речі, кнопки типу Next, Prior, Home, End і деякі інші я взагалі не виношу на панель управління - тільки місце займають, а чол в них, як правило, не потребує. Однак екшіни для них визначаю для "спрацьовування" сигналів з клавіатури.

Соловйов написав коротко, спробую детальніше.
1. Кидаємо на форму TActionList і TImageList. У перший додаємо екшіни (наприклад):
actDSHome
actDSNext
actDSPrior
actDSEnd
actDSInsert
actDSDelete
actDSEdit
actDSCancel
actDSPost
actDSRefresh
actDSCommit

2. Кидаємо куди треба будь-контроли управління (меню, PupUp-меню, тулбатони, батони і т.д.). У св-вах Action кожного такого контрола вибираємо зі списку екшінов відповідний.

Переваги очевидні: в обробниках я можу робити що завгодно, в тому числі обробляти будь-які датасета, в тому числі навіть Популярні через Стрінггріди. Тобто один обробник, наприклад, для Insert для БУДЬ-ЯКОГО НД. Звичайно, доведеться попітніти, коли його треба буде писати, але все окупиться швидкістю налагодження і надійністю в роботі. При зміні алгоритму мені немає необхідності курочіть обробники OnClick для всіх меню, підміню і інших наворотів, де дана фіча використовується, - я просто редагую ОДИН обробник ОДНОГО екшіна.

До речі, кнопки типу Next, Prior, Home, End і деякі інші я взагалі не виношу на панель управління - тільки місце займають, а чол в них, як правило, не потребує. Однак екшіни для них визначаю для "спрацьовування" сигналів з клавіатури.

> MsGuns
Спасибі за докладний опис. Ви мені дуже допомогли