Как отличить нажатие {LEFT ARROW} от 5? | |
---|---|
wow1970 Автор Сообщений: 29 Дата регистрации: 06.12.2017 |
Добрый день!
Есть какой способ, чтобы отличить нажатие одной клавиши от другой в методе KeyPress? Нужно запретить ввод символов в поле по nodefault в тестбоксе, но разрешить перемещаться, т.к. текстбокс в гриде. Например отличить для цифр "4 и 6 "коды которых совпадают с ШИФТ+"стрелка влево/вправо". Ну и т.п. Например контрол + b/n вбивает квадратитки в текстбокс. Нужно убрать такое поведение мне тоже. Исправлено 2 раз(а). Последнее : wow1970, 22.02.18 11:29 |
Re: Как отличить нажатие {LEFT ARROW} от 5? | |
---|---|
Sawradym Сообщений: 2244 Откуда: Винница Дата регистрации: 15.05.2007 |
Проверяй значение nShiftAltCtrl.
Исправлено 1 раз(а). Последнее : Sawradym, 23.02.18 09:37 |
Re: Как отличить нажатие {LEFT ARROW} от 5? | |
---|---|
VeterVFP Сообщений: 413 Откуда: Москва Дата регистрации: 26.12.2006 |
Нужно анализировать параметр nShiftAltCtrl
Код KeyPress
|
Re: Как отличить нажатие {LEFT ARROW} от 5? | |
---|---|
wow1970 Автор Сообщений: 29 Дата регистрации: 06.12.2017 |
Просто все клавиши по которым идет перемещения в гриде символ не печатают. А нажатие на "4" выдает символ 4.
Думал что можно оличить этот факт. Т.е. если нажатие выдает печатный символ, то нодефаулт. Остальное разрешить. Да, придется проверять нажатие функционалок. Просто код выглядит "чудовищно". CASE !This.IsChange .AND. !INLIST(nKeyCode,10,5,24,52,54,4,19,29,23,9,15,18,3,148,13,2,26,1,6) А шифт + стрелки использую для выделения части текста в этом "нередактируемом" текстбоксе чтобы взять потом его в буфер. Просто в одной колонке 2 техстбокса с разрешением редактирование и БЕЗ и задейстован динамикарентконтрол. Исправлено 1 раз(а). Последнее : wow1970, 22.02.18 11:51 |
Re: Как отличить нажатие {LEFT ARROW} от 5? | |
---|---|
VeterVFP Сообщений: 413 Откуда: Москва Дата регистрации: 26.12.2006 |
Можно попробовать от обратного: если Shift+AnyArrow - DODEFAULT(), а иначе - NODEFAULT
|
Re: Как отличить нажатие {LEFT ARROW} от 5? | |
---|---|
wow1970 Автор Сообщений: 29 Дата регистрации: 06.12.2017 |
Ладно, спасибо.
Пока вот так все нормально, хоть и неэлегантно. ,,,, .AND. !(INLIST(nKeyCode,10,5,24,4,19,29,23,9,15,18,3,148,13,2,26,1,6) or (INLIST(nKeyCode,52,54) AND nShiftAltCtrl = 1)) |
Re: Как отличить нажатие {LEFT ARROW} от 5? | |
---|---|
Аспид Сообщений: 3475 Откуда: Москва Дата регистрации: 01.04.2005 |
Как и писали выше, этот чудовищный код, легко превращается в
------------------ |
Re: Как отличить нажатие {LEFT ARROW} от 5? | |
---|---|
pasha_usue Сообщений: 3650 Откуда: Е-бург Дата регистрации: 06.10.2006 |
А Format и InputMask не решают?
|
Re: Как отличить нажатие {LEFT ARROW} от 5? | |
---|---|
wow1970 Автор Сообщений: 29 Дата регистрации: 06.12.2017 |
А как задать чтобы ничего нельзя было ввести в текстбокс при помощи формат и инпутмаск?
Было бы замечательно. Свойство ReadOnly чето не помагает. Видимо колонка или грид его переводит в true. |
Re: Как отличить нажатие {LEFT ARROW} от 5? | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
А ReadOnly колонки? |
Re: Как отличить нажатие {LEFT ARROW} от 5? | |
---|---|
wow1970 Автор Сообщений: 29 Дата регистрации: 06.12.2017 |
В колонке 2 текстбокса + динамиккарентконтрол.
Реализация нужного поведения на кейпресах самая сложная в исполнении, но зато дает сделать любое поведение. У меня навешано там много. Меню, фильтрация, выделение строк и прочее. Просто не хочу всю эту навороченность потерять например сделав один из тестбоксов дисабле. В гриде есть колонки которые можно редактировать напрямую и есть которые нельзя, но реакция на некоторые комбинации сохранена. Опирается на свойство колонки в котором контрол находится. А вот захотелось сделать смешанное поведение в одной колонке. Колонка отвечает за настройку ширины колонки в гриде который настраивается. Т.е. для грида визвывается настроечная форма в которой можно выставить все свойства этого грида. Цвета, размеры шрифтов и т.п. Вот если Resizable = .F. то низзя менять значение. Задача простая: есть ли вариант типа Len(chr(nKeyCode)) = 0. Выдает на все комбинации =1. А хотелось бы на НЕ (букви +цифры) получить НОЛЬ. Ясно что можно пришпандерить внешнюю функцию с СтрТран. Но не хотелось бы. Исправлено 3 раз(а). Последнее : wow1970, 22.02.18 17:28 |
Re: Как отличить нажатие {LEFT ARROW} от 5? | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Вот в функции динамиккарентконтрола и можно менять значение ReadOnly колонки в соответствии с выбранным текстбоксом. Тогда на сам текстбокс ничего не придется навешивать. Цитата: Но ReadOnly = .T. отличается от Enabled = .F. Исправлено 1 раз(а). Последнее : akvvohinc, 22.02.18 17:27 |
Re: Как отличить нажатие {LEFT ARROW} от 5? | |
---|---|
wow1970 Автор Сообщений: 29 Дата регистрации: 06.12.2017 |
Делал и так (с внешней функцией в форме), но контролы ведут себя неправильно при заходе/выходе в такое поле.
Вот скрин этого настроечного класа грида с недецкой динамикой. Исправлено 4 раз(а). Последнее : wow1970, 22.02.18 17:56 |
Re: Как отличить нажатие {LEFT ARROW} от 5? | |
---|---|
sphinx Сообщений: 31184 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
Я лет 10-15 назад писал свой интерфейс (да классов там было неного, сразу говорю, сейчас что-то пытаюсь сделать интереснее, самому нравится). Понятно дело, многие вещи самодостаточные, их приручить программеру не сложно, и комменты, как все устроено есть. Ну не запустит - беды не будет. Я всегда покажу альтернативу по реализации своих классов. Оспади, да ладно там был был кодище!Ну где-то и в чем-то надо будет немного подумать, чтобы понять мои идеи.Все ведь просто, даже не в очень замудренных отчетах - разумеется под ОО уже говорим, Эксель морально уже устарел у нашего (показал пальцем вверх)
------------------ "Veni, vidi, vici!"(с) |
Re: Как отличить нажатие {LEFT ARROW} от 5? | |
---|---|
sphinx Сообщений: 31184 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
Кольцов почти все придумал до меня. Но я пошел дальше. Класс выложу, когда причешу. И все равно косяки будут. Увы.
------------------ "Veni, vidi, vici!"(с) |
© 2000-2024 Fox Club  |