Обработка нажатия клавиши
Один из способов обработки события нажатия клавиши.
- Описание
- Подробнее
Описание
Возникла у меня необходимость обработки нажатия клавиши в управляемой форме. Если более четко описать задачу — то захотел сделать так, чтобы в таблице формы значение флажка можно было менять нажатием клавиши "Пробел".
Встал вопрос — а как отловить событие нажатия клавиши?
У таблицы формы есть свойство "Сочетание клавиш". Может быть попробовать воспользоваться им?
Вот что по поводу этого свойства говорит синтакс-помощник.
Воспользоваться этим свойством у меня не получилось. Непонятно, как отловить событие установки фокуса на таблице. Если вдруг кто-то знает, и подскажет — буду благодарен.
Стал думать, что можно сделать еще. И пришла мне в голову такая мысль — если сделать команду формы, то ей можно назначить сочетание клавиш. И это будет работать. Но есть один нюанс — для того, чтобы это работало, команда должна присутствовать на форме, и она должна быть видима. Как только отключить видимость элемента формы, который отвечает за отображение команды, она работать перестает.
В общем-то всё логично, и правильно. Но мне-то зачем на форме показывать команду для управления значением флажка в таблице формы? Зачем мне "лишний" элемент в форме? Как его одновременно и показать, и скрыть?
И тут мне пришла в голову такая мысль — а что, если команду отобразить как гиперссылку, а цвет текста установить совпадающий с цветом фона формы? Визуально её не будет видно, она не будет бросаться в глаза. А если сделать это программно, например ПриСозданииНаСервере, или ПриОткрытии, тогда разработчику в конфигураторе эту гиперссылку будет видно, а в пользовательском режиме — нет. А если еще и заголовок при этом минимизировать (совсем пустой сделать нельзя), но можно ведь указать " " (один пробел), то эта гиперссылка будет занимать еще и минимальную площадь.
Так и сделал. И всё прекрасно работает!
P.S. Как программно скрыть гиперссылку
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Элементы.КомандаФормы.Заголовок = " ";
Элементы.КомандаФормы.ЦветТекста = ЦветаСтиля.ЦветФонаФормы;
КонецПроцедуры
UPD. Прочитал эту статью мой друг, сразу спросил: А ты пробовал команду скрыть через пользовательскую видимость?
Решил уточнить этот момент.
Когда я пробовал скрыть команду, перепробовал все варианты. И "Видимость" (которая флажок в свойствах элемента формы), и "Пользовательская видимость" (которая гиперссылка в свойствах элемента формы). И включение в различные группы с последующим убиранием видимости группы. И программное управление видимостью тоже пробовал.
Не помогло ничего. Как только элемент формы, отвечающий за отображение команды, скрывается, т.е. перестаёт быть видимым на форме — команда перестаёт выполняться.