Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.04.07;
Скачать: [xml.tar.bz2];

Вниз

Как сделать DBNavigator активным   Найти похожие ветки 

 
Staraya   (2003-03-18 12:18) [0]

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


 
Соловьев   (2003-03-18 12:21) [1]

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


 
Staraya   (2003-03-18 12:52) [2]

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


 
Соловьев   (2003-03-18 12:58) [3]

query1.recvastLive=true или использовать TTable


 
Alexandr   (2003-03-18 13:06) [4]

или прицепить к query1 UpdateQuery1 и заполнить его.


 
Staraya   (2003-03-18 13:26) [5]

> Соловьев
У меня все получилось, только вот еще один вопрос появился. Выходит, что я теперь могу использовать навигатор для вставки записи в таблицу БД и не писать в query1.sql insert into...?


 
Соловьев   (2003-03-18 13:29) [6]


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

да можешь...но есть поределенные ограничения.


 
MsGuns   (2003-03-18 13:57) [7]

Использование стандартного навигатора в своих прогах есть признак любительства. Дело в том, что он использует многие события датасета, к которому "прицеплен", а они могут понадобиться разработчику для каких-то особенных фичей. Вот тогда и придется бороться уже не собственно с проблемой реализации фичи, а с самим навигатором.
Да и панель его выглядит коряво (ИМХО). Ни в одной профессионально сделанной проге его не видел.


 
Staraya   (2003-03-18 13:58) [8]

> Соловьев
Когда я после вставки записи нажимаю на навигаторе Refresh, то вылетает ошибка "Table does not support this operation because it is not unicuely indexed".


 
Соловьев   (2003-03-18 15:15) [9]

Refresh плохо работает в Query. На событие OnClick, выбери кнопку Refresh и там сделай такой обработчик:
with Query1 do begin close; open; end;
И почитай MsGuns © (18.03.03 13:57) - он прав.


 
Staraya   (2003-03-18 17:24) [10]

> MsGuns
Тогда, что по Вашему мнению лучше использовать вместо навигатора.


 
Соловьев   (2003-03-18 17:32) [11]

http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1047975364&n=1


 
MsGuns   (2003-03-18 23:09) [12]

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

Для каждого из них двойным щелчком определяем обрабочик, который снаяала просто комментарим.
Далее для некоторых экшинов определяем ShortCut (для удаления, вставки и т.д.) как надо. Для картинок наполняем ImageList bmp-ми, делаем ссылку из TActionList на TImageList и экшинам распределяем картинки.

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

3. В обработчиках экшинов контекстно разрешаем/запрещаем соотв. экшины (Enable) чтоб все конролы интерфейса работали слаженно. Пример, если датасет в режиме просмотра, то экшины, отвечающие за изменение (в нашем примере это actDSCancel,actDSPost,actDSCommit) запрещаем, и делаем что надо.

Преимущества очевидны: в обработчиках я могу делать что угодно, в том числе обрабатывать любые датасеты, в том числе даже просматриваемые через Стринггриды. Т.е. один обработчик, например, для Insert для ЛЮБОГО НД. Конечно, придется попотеть, когда его надо будет писать, но все окупится скоростью отладки и надежностью в работе. При изменении алгоритма мне нет необходимости курочить обработчики OnClick для всех меню, подменю и прочих наворотов, где данная фича используется,- я просто редактирую ОДИН обработчик ОДНОГО экшина.

Кстати, кнопки типа Next,Prior,Home,End и некоторые другие я вообще не выношу на панель управления - только место занимают, а чел в них, как правило, не нуждается. Однако экшины для них определяю для "срабатывания" сигналов с клавиатуры.




 
MsGuns   (2003-03-18 23:10) [13]

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

Для каждого из них двойным щелчком определяем обрабочик, который снаяала просто комментарим.
Далее для некоторых экшинов определяем ShortCut (для удаления, вставки и т.д.) как надо. Для картинок наполняем ImageList bmp-ми, делаем ссылку из TActionList на TImageList и экшинам распределяем картинки.

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

3. В обработчиках экшинов контекстно разрешаем/запрещаем соотв. экшины (Enable) чтоб все конролы интерфейса работали слаженно. Пример, если датасет в режиме просмотра, то экшины, отвечающие за изменение (в нашем примере это actDSCancel,actDSPost,actDSCommit) запрещаем, и делаем что надо.

Преимущества очевидны: в обработчиках я могу делать что угодно, в том числе обрабатывать любые датасеты, в том числе даже просматриваемые через Стринггриды. Т.е. один обработчик, например, для Insert для ЛЮБОГО НД. Конечно, придется попотеть, когда его надо будет писать, но все окупится скоростью отладки и надежностью в работе. При изменении алгоритма мне нет необходимости курочить обработчики OnClick для всех меню, подменю и прочих наворотов, где данная фича используется,- я просто редактирую ОДИН обработчик ОДНОГО экшина.

Кстати, кнопки типа Next,Prior,Home,End и некоторые другие я вообще не выношу на панель управления - только место занимают, а чел в них, как правило, не нуждается. Однако экшины для них определяю для "срабатывания" сигналов с клавиатуры.


 
Staraya   (2003-03-19 14:08) [14]

> MsGuns
Спасибо за подробное описание. Вы мне очень помогли



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.04.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.009 c
14-19867
Dim!S
2003-03-21 04:53
2003.04.07
Как заработать на программе


6-19732
Vampire
2003-02-11 18:51
2003.04.07
Перекачка


3-19484
spogi
2003-03-19 12:58
2003.04.07
v Paradox ne integer a real, ili float. ctobi...


7-19890
pop-corn
2003-02-08 04:38
2003.04.07
Требуется определить является ли CDROM железным или виртуальным


1-19525
Sherlock
2003-03-25 09:52
2003.04.07
BDE??





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский