Имя: Пароль:
1C
 
Как обработать нажатие кнопки на клавиатуре в форме
0 MNS_Ротерта
 
16.08.10
09:54
Конфа 8.1. Есть произвольная форма. Как можно обработать нажатие кнопок на клавиатуре при открытой форме независимо от того какой элемент формы в фокусе, чтобы знать какая именно клавиша была нажата.

Есть вариант создать командную панель и в источнике действий оставить ВсеИсточники. Добавить туда кучу кнопок, что есть на клавиатуре и навесить на них одну и ту-же процедуру обработки нажатия. Но здесь возникает проблема что обработать можно только латинские буковки даже если раскладка русская. Не понимает 1С 8.1 кирилицу :( Как еще можно обыграть данную задачу?
1 AlecoZAV
 
16.08.10
10:05
подключай внешний обработчик
2 Elena_KR
 
16.08.10
11:12
не вариант
3 hhhh
 
16.08.10
11:28
(0) в чем проблема, непонятно. В процедуру КнопкаНажатие ведь передается имя кнопки.
4 1C-Nick
 
16.08.10
11:41
(3) имя кнопки клавиатуры?
5 1C-Nick
 
16.08.10
12:33
6 hhhh
 
16.08.10
12:35
(4) да. Так как он сам создает эти кнопки на форме. Естественно он присваивает им имена как на клавиатуре.
7 1C-Nick
 
16.08.10
13:26
(6) какие кнопки?
Автор хочет чтобы при нажатии любых клавиш (чтобы не путать с элементом управления кнопка) клавиатуры обрабатывать это событие, при этом на форме кнопок (элементов управления) вообще может и не быть.
8 Rovan
 
гуру
16.08.10
13:29
(0) можно дурацкий вопрос - а зачем ?
9 MNS_Ротерта
 
16.08.10
13:40
(7) именно. на форму может быть введена часть кнопок но совсем не обязательно что вся клавиатура.
(8) чтобы как то воспроизвести интерактивный вариант ввода без переключений в поля ввода. Раньше были только цифры а щас появилась необходимость и в буковках. Просто на данный момент этот вариант удобен для тупых продавцов и все привыкли по всей РФ.
Вариант использования  dll перехватчиков конечно неплох, но есть минус что винда везде разная и везде должно работать 100% а права настроены не по единой политике.
10 MNS_Ротерта
 
16.08.10
13:43
Видимо самый оптимальный вариант создать экранную клавиатуру на весь требуемый набор символов. По крайней мере это 100% 1С без разных шелов и dll. Хотя может я и побаиваюсь использовать те же dll.
11 1C-Nick
 
16.08.10
13:45
(9) а постоянно активировать поле ввода не пройдет?
т.е. раз в секунду если поле неактивно, то активировать...
12 1C-Nick
 
16.08.10
13:48
или быстрее чем раз в секунду...
13 MNS_Ротерта
 
16.08.10
13:53
(12) я думал по поводу этого это например если исходить из задачи подключить внешний обработчик. Только как то коряво получиться. Проще тогда просто сказать в инструкции чтоб вводили в жестко в поле и не парились.
14 1C-Nick
 
16.08.10
13:59
(13) есть еще вариант (не сказать что самый удачный, но все же) всю форму разработать на ActiveX Microsoft Forms, а в них уже обрабатывать событие и заполнять поле ввода.
15 MNS_Ротерта
 
16.08.10
14:03
(14) идея неплохая но как то не знаю даж...
16 Elena_KR
 
16.08.10
14:09
я за Поле ввода
17 MNS_Ротерта
 
16.08.10
14:11
(16) мне нравиться когда девушки-программисты выражают твердое мнение :)
18 Elena_KR
 
16.08.10
14:13
разбаловали пользователей
19 Rovan
 
гуру
16.08.10
14:13
(11) а вроде как и не нужно - если других полей ввода там нет
только кнопки, то после нажатия кнопок надо просто
снова сделать активным главное поле ввода
20 1C-Nick
 
16.08.10
14:25
(15) вдруг найдешь более интересно решение - отпишись ;)