Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.034 c
1-1100454101
novice_man
2004-11-14 20:41
2004.11.28
Присваивание или копирование?


1-1100533878
Chery
2004-11-15 18:51
2004.11.28
Имя и метка системного диска


1-1100587839
atruhin
2004-11-16 09:50
2004.11.28
Как развернуть окно поверх панели задач.


4-1097591069
#Мастер#
2004-10-12 18:24
2004.11.28
Скины


1-1100370863
able
2004-11-13 21:34
2004.11.28
Сравнивание строк..





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский