Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 keypress формы и её объектов  [new]
ВладимирТК
Guest
Всем доброго времени суток!
Очень хотелось бы уточнить. Столкнулся с похожей необходимостью, а в топике по соответствующей теме ([url=]https://www.sql.ru/forum/1030317/goryachaya-klavisha?hl=??????? ???????[/url]) предложен вариант для "назначения" горячей клавиши для кнопки на форме. Хоть застрелите меня, но именно так не работает. Если написать код из command1.keypress в keypress формы, а в кнопке оставить только код клика, то всё красиво работает (разумеется не для всех клавиш и их сочетаний). Вопрос: если пример правильный и у меня что-то криво работает в мозгах, то с какого перепуга при нажатии нужной клавиши при нахождении на форме должен отрабатывать keypress объекта (в данном случае кнопки)??? Ведь насколько знаю при keypreview=.t. первым получает событие keypress формы, а затем keypress активного элемента управления и никакой другой.

Код в топике:
Чтобы использовать F1 на форме
1) свойство формы KeyPreview установить в True

2) т.к. за клавишей F1 закреплен вызов help отключаем его в init form

set help off

3) в command.click прописываете команды которые закреплены за клавишей

WAIT [f1 click] window

4) в command.keypress пишем код который отлавливает нажатие клавиш

Lparameters nKeyCode, nShiftAltCtrl
If nKeyCode = 28
This.Click()
Endif
DoDefault()


Я назначал F3 для вызова события cklick кнопки на форме. Спрашиваю, потому что подобных примеров увидел не один, но реализовать именно таким образом так и не получилось.

Использую VFP9, win7 максимальная
10 сен 13, 13:02    [14819510]     Ответить | Цитировать Сообщить модератору
 Re: keypress формы и её объектов  [new]
Дед Евгений
Member

Откуда: Московская область
Сообщений: 118
А не пробовал на самой кнопке назначить горячую букву в свойстве Caption, например: "\<Помощь". Тогда по клавише "П" она будет срабатывать, и не нужно будет назначть функциональные клавиши. Знак "\<" назначет следующую за ней букве признак горячей клавиши.
10 сен 13, 14:06    [14819970]     Ответить | Цитировать Сообщить модератору
 Re: keypress формы и её объектов  [new]
tanglir
Member

Откуда:
Сообщений: 28966
ВладимирТК,

4) в form.keypress, а не в command.keypress
ну и естественно не this.click(), а this.mybutton.click()
10 сен 13, 16:37    [14821319]     Ответить | Цитировать Сообщить модератору
 Re: keypress формы и её объектов  [new]
Dima T
Member

Откуда:
Сообщений: 15285
Если в KeyPress() формы выполнить NoDefault то до KeyPress() активного котрола не дойдет.
Как-то так в Form.KeyPress()
LPARAMETERS tnKeyCode, tnShiftAltCtrl	
if tnKeyCode = 32 && 32 это пробел
	nodefault
endif
10 сен 13, 16:46    [14821387]     Ответить | Цитировать Сообщить модератору
 Re: keypress формы и её объектов  [new]
ВладимирТК
Guest
tanglir,
я собственно так сразу и сделал. Меня именно пример интересовал
25 сен 13, 17:06    [14883827]     Ответить | Цитировать Сообщить модератору
 Re: keypress формы и её объектов  [new]
ВладимирТК
Guest
Dima T,

конечно не дойдёт
25 сен 13, 17:08    [14883834]     Ответить | Цитировать Сообщить модератору
 Re: keypress формы и её объектов  [new]
ВладимирТК
Guest
Дед Евгений,
считаю очень не логичным назначать "горячие буквы" для кнопок на форме. Функциональные ещё куда не шло, да и то при крайней необходимости, коя у меня и возникла
25 сен 13, 17:10    [14883852]     Ответить | Цитировать Сообщить модератору
 Re: keypress формы и её объектов  [new]
ВладимирТК
Guest
Всем спасибо за отклик.
Продолжать тему смысла нет
25 сен 13, 17:11    [14883855]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить