На сколько я знаю, в 1С 8.2 есть 2 способа задания горячих клавиш для формы:
1. Назначение сочетания клавиш в свойствах команд
2. Указание символа & перед буквой заголовка формы, тогда появляется подчеркивание и такая горячая клавиша должна срабатывать с Alt
У обоих методов есть свои недостатки (зависимость от текущей раскладки, от текущего элемента формы и т.п.)
Кто знает, есть ли где-то документация по работе этих горячих клавиш? Конкретно интересует почему в обработке (см. вложение) горячая клавиша срабатывает без нажатия кнопки Alt и можно ли этого избежать.
(8) Xershi, повторяю вопрос: "почему в горячие клавиши (К, О) срабатывают без нажатия кнопки Alt?"
В справке, большой белой книге (в двух томах) и ИТС про данное поведение я ничего не нашёл.
(12) PetroP, боюсь что вы не правы Работа с клавиатурой:
"Если в меню программы есть подчеркнутые буквы, чтобы открыть соответствующее меню, нажмите клавишу ALT и подчеркнутую букву.
Если в элементе диалогового окна есть подчеркнутая буква, можно нажать ALT + эта буква, чтобы выбрать соответствующий параметр."
Тоже самое логично распространить и на окно с кнопками.
(14) Seneka7608, с чего такие умозаключения? Меню и кнопки на форме это разные сущности в любом языке программирования. Для кнопок есть отдельное свойство назначения клавиш. Вот там и укажите какие надо.
Меню и кнопки на форме это разные сущности в любом языке программирования
Согласен, но то что диалоговое окно очень близко к форме с кнопками - это не будете отрицать? Не вижу смысла делать для них разное поведение.
Для кнопок есть отдельное свойство назначения клавиш
Оно во многом меня не устраивает, опишу реальную ситуацию.
На форме несколько таблиц, у каждой есть свое контекстное меню с кнопками, для некоторых из этих кнопок заданы горячие клавиши. Назначения клавиш для кнопки из контекстного меню таблицы работает только когда данная таблица активна, т.е. чтобы нажать горячую кнопку таблицы 1, нужно эту таблицу выделить, а это либо несколько нажатий Tab (Shift+Tab), либо работа мышью. Пропадает вся прелесть горячих кнопок (это основной недостаток). Второй недостаток: с формой постоянно работает тысяча пользователей, приучить всех изучать главные клавиши - не реально, при использовании акселераторов через подчеркивание буквы в названии команды, пользователь сразу видит какая горячая клавиша позволяет эту команду вызвать.
Несколько команд таблиц открывают другие окна программы, пускай одна их них висит на горячей клавише Alt+Я (для примера). Если пользователь сознательно нажимает горячую клавишу, он делает это с Alt и получает ожидаемый ответ системы. Если случайно нажимает "Я" (промахнулся) открывается другое окно - это некорректное поведение системы.
Согласен, но то что диалоговое окно очень близко к форме с кнопками - это не будете отрицать?
Вы не поняли. Кнопки это отдельная сущность. И ни с чем их сравнивать нельзя.
Могу посоветовать использовать типовое решение от 1С. Создайте подменю. Туда переместить кнопки. Назначить кнопкам нужные клавиши. Если нужно показать пользователю комбинации клавиш, то выводить внизу информацию (в виде кнопок, или декораций), которую можно прятать.
PS. Я не рассматриваю кнопки как сущности в javaFX или в XAML. Там они контейнеры, но все равно со своими особенностями.
Пропадает вся прелесть горячих кнопок (это основной недостаток)
Полностью с Вами согласен, коллега.
Я сам столкнулся с этой проблемой. К счастью удалось найти решение, которое, к сожалению, нигде не описано.
Чтобы изменить контекст горячих клавиш команды - нужно
1) Добавить группу команд
2) Выбрать источник у группы команд "Глобальные команды командной панели формы"
3) Поместить туда нужную команду
(14) Seneka7608, вот проверил. Часть программ действительно работает с альтом, часть - без (например, LibreOffice). Может без альта срабатывает, если нет активного поля ввода? Т. е. фича?
Попробуйте при открытии ставить фокус на какой-нибудь не активный элемент формы (с надписью и документРезультатом работает, со всякими панельками и полями ввода - нет )
ЭтаФорма.ТекущийЭлемент = ЭлементыФормы.Надпись;
хотя при переключении/нажатии по разным элементам, опять будет срабатывать горячая клавиша.
(10) PetroP, вот у меня открыта Mozilla Firefox, это виндоуз приложение. В командной панели я вижу подчёркнутую букву "С" в слове "Справка", она срабатывает только по Alt+С, но не срабатывает по С.