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