Форум: "Базы";
Текущий архив: 2004.11.28;
Скачать: [xml.tar.bz2];
ВнизDBGrid и блокировка клавиш курсора и ESC Найти похожие ветки
← →
Apophis © (2004-11-02 02:26) [0]Подскажите, как во время редактирования набора данных (вставки, добавления) в DBGrid или другой форме блокировать клавиши курсора и ескейпа, чтобы пользователь мог нажать только, допустим, клавишу (мою) "Сохранить"?
← →
Johnmen © (2004-11-02 09:06) [1]Обрабатывать OnKeyDown
← →
Danilka © (2004-11-02 09:40) [2][1] Johnmen © (02.11.04 09:06)
По-моему, нагляднее Enabled = False; иначе юзер будет тыкаться, а потом позовет программиста: "меня чего-то перестала работать" :))
← →
KSergey © (2004-11-02 11:47) [3]> Apophis © (02.11.04 02:26)
> Подскажите, как во время редактирования набора данных (вставки,
> добавления) в DBGrid или другой форме блокировать клавиши
> курсора и ескейпа, чтобы пользователь мог нажать только,
> допустим, клавишу (мою) "Сохранить"?
А зачем это надо?
По-моему тут логика работы не верна приложения. Win-приложения обзано уметь реагировать на любые действия пользователя.
← →
Apophis © (2004-11-02 14:02) [4]Johmen
//Enabled=false;
Где именно??
KSergey
Вот оно и должно реагировать на действие юзера во время редактирования DBGrid-а на клавиши Esc, вверх, вниз - Никаких действий!!! Ну не должно для набора данных наступать Cancel or Post!
← →
Apophis © (2004-11-02 14:03) [5]Johmen
/Enabled=false;/
Где именно??
KSergey
Вот оно и должно реагировать на действие юзера во время редактирования DBGrid-а на клавиши Esc, вверх, вниз - Никаких действий!!! Ну не должно для набора данных наступать Cancel or Post!
← →
Vlad © (2004-11-02 14:16) [6]
> Ну не должно для набора данных наступать Cancel or Post!
Это что же, набор данных должен намертво зависнуть в состоянии dsEdit или dsInsert? И что с ним дальше делать?
← →
KSergey © (2004-11-02 14:21) [7]А вообще ответ дан [1]
Можно на форме, поставив KeyPreview := TRUE
← →
Apophis © (2004-11-02 14:48) [8]Johmen
/Enabled=false;/
Где именно??
KSergey
Вот оно и должно реагировать на действие юзера во время редактирования DBGrid-а на клавиши Esc, вверх, вниз - Никаких действий!!! Ну не должно для набора данных наступать Cancel or Post!
← →
Apophis © (2004-11-02 14:55) [9]Vlad
//Это что же, набор данных должен намертво зависнуть в состоянии dsEdit или dsInsert? И что с ним дальше делать?
Не должен выходить из этих режимов стандартными средствами: курсор на другую запись, esc...
← →
Apophis © (2004-11-02 15:51) [10]Vlad
И потом, зависнет набор в каком-то состоянии или нет, это уже другой вопрос. Меня интересует, как отключить реакцию DBGrid во время редактирования (а потом снова включить) на Esc,Up,Down. Через OnKeyDown или KeyPreview не получается.
← →
Danilka © (2004-11-02 15:52) [11][8] Apophis © (02.11.04 14:48)
И чего ты к Johmen пристаешь, счет Enabled=false это я тебе сказал. :))
Вообще, просто я не до конца тебя понял, вот и ляпнул. :))
А так, по теме, возможно лучше сделать грид не редактируемым, а редактировать запись в отдельной форме.
Иначе у пользователя могут возникнуть сложности: почему в гриде иногда работает скролл по записям, а иногда нет. То, что это из-за того, что не нажата клавиша сохранить/отменить неочевидно.
← →
Apophis © (2004-11-02 15:59) [12]Danilka
Можно в чем-нибудь и отдельном, но я !ХОЧУ! отключить эти кнопки именно в гриде!!! А пользователь не запутается, это уже обеспечу. Так что, неужели никак-никак??? Не верю!
← →
KSergey © (2004-11-02 16:40) [13]> [10] Apophis © (02.11.04 15:51)
> Через OnKeyDown или KeyPreview не получается.
Как делал?
← →
Apophis © (2004-11-02 17:06) [14]KSergey
OnKeyDown:
if key=38 then exit;
Примерно то же и для PreView. Если неправильно, подскажи, плз!
← →
msguns © (2004-11-02 18:43) [15]TActionList+TAction+HotKey. Повесить на кнопки, менюшки и т.д. Переключать в OnAfterScroll/OnAfterOpen или по необходимости.
← →
Apophis © (2004-11-02 19:49) [16]msguns
А можно чуть подробнее? Ну уж простите за тормоза...
← →
Danilka © (2004-11-03 08:11) [17][14] Apophis © (02.11.04 17:06)
Во-первых, вот-так: if key=38 then key:=0;
Во-вторых, нагляднее писать не код клавиши, а константу, например VK_UP вместо 38 и т.д., см раздел virtual key codes в справке.
В третьих - ну нифига не наглядно, и не удобно для пользователя, при редактировании в гриде запрещать скролл по нему. Сколько-бы ты не тешил себя мыслью: "А пользователь не запутается, это уже обеспечу", я-бы такой программой просто не стал пользовацца.
← →
msguns © (2004-11-03 10:25) [18]>Apophis © (02.11.04 19:49) [16]
>>msguns
>А можно чуть подробнее? Ну уж простите за тормоза...
Используя экшины (TAction в коллекции объекта TActionList), можно:
1. Централизовать обработку действий узера (нажатие кнопок, выбор меню, поп-ап меню и т.д.) в одном месте
2. Гибко менять пиктограммки кнопок, обработку горячих клавиш (Short Cut), их состояние в зависимости от возникающих во время работы приложения событий.
3. Переназначать обработчики с однох элементов управления другим
4. Использовать экшины одного модуля в других, централизуя общее упр-е (например, в MDI-приложениях)
и т.д.
← →
Apophis © (2004-11-03 12:09) [19]ВСЕМ СПАСИБО!
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.11.28;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.04 c