Форум: "Базы";
Текущий архив: 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.012 c