Момент вызова макроса при нажатии клавиши

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
Post Reply
fml2
Posts: 534
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 2 times
Been thanked: 8 times

Момент вызова макроса при нажатии клавиши

Post by fml2 »

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

У меня вопрос по коду. Для того, чтобы дать клавише отработать, в макросе вызывается Keys"AKey". Т.е. получается, к моменту вызова макроса клавиша еще не сработала, так? Но, с другой стороны, дальнейшая проверка типа текущего элемента (Dlg.ItemType==...) говорит о том, что фокус по горячей клавише уже перемещен.

Т.е. получается, что макрос срабатывает/вызывается после перемещения фокуса, но до отрабатывания клавиши (н-р, изменения состояния чек-бокса)? Где бы подробнее об этом почитать? В разделе "Regular macros" из "Far Manager macro system manual" я этого описания не нашел.
Last edited by fml2 on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: Исправлены важные опечатки
Shmuel
Posts: 6836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Момент вызова макроса при нажатии клавиши

Post by Shmuel »

fml2 wrote: Т.е. получается, к моменту вызова макроса клавиша еще не сработала, так?
Верно.
fml2 wrote: Но, с другой стороны, дальнейшая проверка типа текущего элемента (Dlg.ItemType==...) говорит о том, что фокус по горячей клавише уже перемещен.
Он перемещён вызовом Keys"AKey".
fml2 wrote: Т.е. получается, что макрос срабатывает/вызывается после перемещения фокуса
Неверно.
fml2 wrote: В разделе "Regular macros" из "Far Manager macro system manual" я этого описания не нашел.
Не нашли потому, что данный мануал описывает только различия, появившиеся после перевода макросистемы на Lua, а данное поведение имело место ещё раньше (посмотрите в статье "Изменения API в сравнении с макроязыком" пункт 3 и пройдите по ссылке).
fml2
Posts: 534
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 2 times
Been thanked: 8 times

Момент вызова макроса при нажатии клавиши

Post by fml2 »

Shmuel wrote: Он перемещён вызовом Keys"AKey".
Ой, действительно! Это же очевидно, но как-то я этого не увидел.
Post Reply

Return to “Нужна помощь”