Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.28;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.025 c
1-1100211902
Кто---то
2004-11-12 01:25
2004.11.28
Как вставить элемент внутрь массива рекордов ?


14-1099845523
ИМХО
2004-11-07 19:38
2004.11.28
Нашел глюк в форуме!


4-1097801581
Alibaba
2004-10-15 04:53
2004.11.28
Управление потоками


14-1100100839
}|{yk
2004-11-10 18:33
2004.11.28
Наконец-то вышел Firefox 1.0


1-1100171574
Max Ivanych
2004-11-11 14:12
2004.11.28
Как определить номер выделенного узла в TreeView?