:: Visual Foxpro, Foxpro for DOS
Почему событие KeyPress не обрабатывает нажатие клавиши F2?
ZenTigra
Автор

Сообщений: 514
Дата регистрации: 03.12.2004
На форму вставляю текстовое поле, и в нем хочу отловить нажатие клавиши <F2>, но ничего не происходит, это какой то баг или особенность?
Читал что <Alt+клавиша> не работает, но про <F2> ничего не написано...
Ratings: 0 negative/0 positive
Re: Почему событие KeyPress не обрабатывает нажатие клавиши F2?
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
F2 ни чем не отличается от других.
Так же не помню проблем с
ZenTigra
<Alt+клавиша>
На другие нажатия реагирует?
В общем косяк точно не тут.


------------------
Ratings: 0 negative/0 positive
Re: Почему событие KeyPress не обрабатывает нажатие клавиши F2?
ZenTigra
Автор

Сообщений: 514
Дата регистрации: 03.12.2004
А попробуйте у себя, у меня даже на чистой форме НЕ РАБОТАЕТ!
Ratings: 0 negative/0 positive
Re: Почему событие KeyPress не обрабатывает нажатие клавиши F2?
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
У меня все работает.
Давайте сюда вашу форму


------------------
Ratings: 0 negative/0 positive
Re: Почему событие KeyPress не обрабатывает нажатие клавиши F2?
vnkor

Сообщений: 324
Дата регистрации: 04.10.2007
В событии KeyPress текстового поля прописать:
LPARAMETERS nKeyCode, nShiftAltCtrl
IF nKeyCode = -1
WAIT "Нажата клавиша F2" WINDOW
ENDIF



Исправлено 1 раз(а). Последнее : vnkor, 06.06.17 09:54
Ratings: 0 negative/0 positive
Re: Почему событие KeyPress не обрабатывает нажатие клавиши F2?
ZenTigra
Автор

Сообщений: 514
Дата регистрации: 03.12.2004
Так там нету ничего, на форме единственное поле ввода text1
в свойстве keypress

LPARAMETERS nKeyCode, nShiftAltCtrl
WAIT windows STR(nKeyCode)+'/'+STR(nShiftAltCtrl)

и все, когда нажать F3 - свойство срабатывает, при F2 нет

Возможно у меня какие то настройки в VFP

PS.VFP9 v9.5815 (SP2)
Ratings: 0 negative/0 positive
Re: Почему событие KeyPress не обрабатывает нажатие клавиши F2?
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
ZenTigra
Так там нету ничего, на форме единственное поле ввода text1
в свойстве keypress

LPARAMETERS nKeyCode, nShiftAltCtrl
WAIT windows STR(nKeyCode)+'/'+STR(nShiftAltCtrl)

и все, когда нажать F3 - свойство срабатывает, при F2 нет

Возможно у меня какие то настройки в VFP

PS.VFP9 v9.5815 (SP2)
Так не бывает. Давайте тестовую форму. Которая не работает.


------------------
Ratings: 0 negative/0 positive
Re: Почему событие KeyPress не обрабатывает нажатие клавиши F2?
ZenTigra
Автор

Сообщений: 514
Дата регистрации: 03.12.2004
Ловите, я ее создал только чтоб протестировать
Ratings: 0 negative/0 positive
Re: Почему событие KeyPress не обрабатывает нажатие клавиши F2?
vnkor

Сообщений: 324
Дата регистрации: 04.10.2007
ZenTigra
когда нажать F3 - свойство срабатывает, при F2 нет
При нажатии F2 активируется командное окно?



Исправлено 1 раз(а). Последнее : vnkor, 06.06.17 10:21
Ratings: 0 negative/0 positive
Re: Почему событие KeyPress не обрабатывает нажатие клавиши F2?
ZenTigra
Автор

Сообщений: 514
Дата регистрации: 03.12.2004
нет, командное окно по Ctrl+F2
Ratings: 0 negative/0 positive
Re: Почему событие KeyPress не обрабатывает нажатие клавиши F2?
vnkor

Сообщений: 324
Дата регистрации: 04.10.2007
Если форму запустить не из командного окна - то все работает.
Ratings: 0 negative/0 positive
Re: Почему событие KeyPress не обрабатывает нажатие клавиши F2?
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
ZenTigra
Ловите, я ее создал только чтоб протестировать

Странно.
Я ж делал вроде такой же тест.
Еще и проверил ALT
Все работало.
Теперь и альт не пашет.


------------------




Исправлено 1 раз(а). Последнее : Аспид, 06.06.17 10:41
Ratings: 0 negative/0 positive
Re: Почему событие KeyPress не обрабатывает нажатие клавиши F2?
ZenTigra
Автор

Сообщений: 514
Дата регистрации: 03.12.2004
ага заразил и твою машину....

Прости
Ratings: 0 negative/0 positive
Re: Почему событие KeyPress не обрабатывает нажатие клавиши F2?
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Ну коли уж так... лепи костыль
INKEY
а при выходе из формы сбрось.
Он не красивый, но если отслеживать аккуратно, то все окейно.
(Кстати и F1 тоже не пашет)


------------------
Ratings: 0 negative/0 positive
Re: Почему событие KeyPress не обрабатывает нажатие клавиши F2?
ZenTigra
Автор

Сообщений: 514
Дата регистрации: 03.12.2004
Та тут проблема как раз в том, что я из этого хотел костыль смастерить, но наступил на грабли.

А проблема вот в чем, на форме Form1 есть группа кнопок, за которыми закреплены горячие клавиши (F2,F3,F4 и т.п.)
а закрепляются они в методе Activate формы
командами
ON KEY LABEL F2 _screen.ActiveForm.Panel.Command_f2.Click
ON KEY LABEL F3 _screen.ActiveForm.Panel.Command_f3.Click
ON KEY LABEL F4 _screen.ActiveForm.Panel.Command_f4.Click
...

эти кнопки исполняют некоторый код, а потом вызывают другие Модальные формы, после их закрытия Form1 вновь стает активная
В других формах есть также группа кнопок, за которыми также закреплены горячие клавиши (таким же методом).

Так вот, временами возникает ошибка - Сообщение об ошибке: (1925) Неизвестный элемент Command_f2 (это элемент второй формы!)

То есть, за клавишей уже закреплена какая то функция, пользователь ее нажал, но сам объект отсутствует,
Сгенерировать ее, у себя я так и не смог...



Исправлено 1 раз(а). Последнее : ZenTigra, 06.06.17 11:55
Ratings: 0 negative/0 positive
Re: Почему событие KeyPress не обрабатывает нажатие клавиши F2?
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Клавиша F2 используется в меню фокса.
[attachment 27787 vfp_f2.png]

Поэтому приоритет будет у соответствующего пункта меню, а не у KeyPress. В рантайме этого пункта меню, скорее всего, не будет, и там клавиша будет работать.

Не следует использовать конструкцию
ON KEY LABEL F2 _screen.ActiveForm.Panel.Command_f2.Click
максимум - это нечто типа
ON KEY LABEL F2 KEYBOARD 'не занятая кнопка или комбинация'
чтобы "перенаправить" F2 на какое-то другое, нейтральное, не занятое в меню или ещё где сочетание клавиш, которое уже и ловить через KeyPress формы (при включенном KeyPreview). Но и этот вариант плох - т.к. непонятно в какой момент нужно "отключать" это перенаправление (закрытие формы, её деактивация, или что-то совсем иное - например изменение в данных).

Но в общем то именно с F2 проблем нет - если проверять работу в рантайме а не в среде самого фокса, где 100500 комбинаций клавиш "занято".


------------------
WBR, Igor
Ratings: 0 negative/1 positive
Re: Почему событие KeyPress не обрабатывает нажатие клавиши F2?
ZenTigra
Автор

Сообщений: 514
Дата регистрации: 03.12.2004
Появилось немного времени, и я вновь решил заняться этой проблемой

А проблема была в том что я решил отказаться от ON KEY LABEL и полностью перейти на KeyPress

При запуска программы из exe все работает, а при запуске из среды - нет, как подсказал Igor Korolyov это из-за закреплением этой клавиши за пунктом меню.
На жаль, я пока не нашел как решить эту проблему.

Даже отключение полностью меню Edit не помогло, подскажите как убрать закрепление клавиши F2 за этим пунктом меню?
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 28 (Гостей: 28)

© 2000-2024 Fox Club 
Яндекс.Метрика