Каталог решений - Обработка нажатия клавиши

Обработка нажатия клавиши

Обработка нажатия клавиши

В наличии

Один из способов обработки события нажатия клавиши.

Категория:

Описание

Возникла у меня необходимость обработки нажатия клавиши в управляемой форме. Если более четко описать задачу — то захотел сделать так, чтобы в таблице формы значение флажка можно было менять нажатием клавиши "Пробел".

Встал вопрос — а как отловить событие нажатия клавиши?

У таблицы формы есть свойство "Сочетание клавиш". Может быть попробовать воспользоваться им?

Вот что по поводу этого свойства говорит синтакс-помощник.

 

 

Воспользоваться этим свойством у меня не получилось. Непонятно, как отловить событие установки фокуса на таблице. Если вдруг кто-то знает, и подскажет — буду благодарен.

Стал думать, что можно сделать еще. И пришла мне в голову такая мысль — если сделать команду формы, то ей можно назначить сочетание клавиш. И это будет работать. Но есть один нюанс — для того, чтобы это работало, команда должна присутствовать на форме, и она должна быть видима. Как только отключить видимость элемента формы, который отвечает за отображение команды, она работать перестает.

В общем-то всё логично, и правильно. Но мне-то зачем на форме показывать команду для управления значением флажка в таблице формы? Зачем мне "лишний" элемент в форме? Как его одновременно и показать, и скрыть?

И тут мне пришла в голову такая мысль — а что, если команду отобразить как гиперссылку, а цвет текста установить совпадающий с цветом фона формы? Визуально её не будет видно, она не будет бросаться в глаза. А если сделать это программно, например ПриСозданииНаСервере, или ПриОткрытии, тогда разработчику в конфигураторе эту гиперссылку будет видно, а в пользовательском режиме — нет. А если еще и заголовок при этом минимизировать (совсем пустой сделать нельзя), но можно ведь указать " " (один пробел), то эта гиперссылка будет занимать еще и минимальную площадь.

Так и сделал. И всё прекрасно работает!

P.S. Как программно скрыть гиперссылку

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	Элементы.КомандаФормы.Заголовок = " ";
	Элементы.КомандаФормы.ЦветТекста = ЦветаСтиля.ЦветФонаФормы;
КонецПроцедуры

UPD. Прочитал эту статью мой друг, сразу спросил: А ты пробовал команду скрыть через пользовательскую видимость?
Решил уточнить этот момент.

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

Не помогло ничего. Как только элемент формы, отвечающий за отображение команды, скрывается, т.е. перестаёт быть видимым на форме — команда перестаёт выполняться.

has been added to your cart:
Оформление заказа