![]() |
![]() |
![]() |
|
Обработка нажатия клавиши клавиатуры... | ☑ | ||
---|---|---|---|---|
0
Student1983
29.01.07
✎
14:09
|
Как программируется клавиатура? Мне нужно например при нажатии "F4" чтобы пошла какая-нибудь процедура?
Со сканером ве понятно:ОбработкаВнешнегоСобытия()... есть ли для клавы что-то подобное? |
|||
1
GrayT
29.01.07
✎
14:12
|
Для F4? Скрытую кнопку с горячей клавишей - не подойдет?
|
|||
2
Ангел- Хоронитель
29.01.07
✎
14:14
|
(0)Formex - и можешь что угодно на какую угодно клавишу вешать....
|
|||
3
Ёпрст2
29.01.07
✎
14:37
|
(2) Всё можно и без формекса, как в (1) написано ...
|
|||
4
Ангел- Хоронитель
29.01.07
✎
14:41
|
(3)ну в примере с F4 да..... но ведь вопрос был вообще про клавиатуру....
|
|||
5
GrayT
29.01.07
✎
14:43
|
(4)Есть способ повесить практически любую капу в качестве хоткея. Ради этого ФормЕх юзать - из пушки по воробьям
|
|||
6
kir-g
29.01.07
✎
14:47
|
(5)Если не трудно по подробней
|
|||
7
GrayT
29.01.07
✎
14:57
|
(С) Alexey Kusiy где-то в 2001
-------------------------------------------------------------------------------- Известно, что на кнопки в экранных формах V7 можно «вешать» горячие клавиши. Однако количество оных оставляет желать лучшего – это только Fx с различными модификаторами (alt, ctrl, shift), при чём наиболее привлекательные сочетания (например, F1) уже зарезервированы системой. Но всё-таки существует есть способ привязать к кнопкам и иные сочетания клавиш – о нем я и расскажу. Однако этот способ не относится к стандартным и документированным, поскольку требует непосредственной (минуя конфигуратор) модифиикации форм. Инструментарий. Нам потребуется: файловый менеджер FAR, plug-in к нему по имени DocFileBrowser, справочник по кодам клавиш (в смысле, которые Virtual Keys, VK_), и любой HEX-редактор (можно использовать соответствующую функцию FAR'a). Сам процесс. Допустим, у нас есть некий внешний отчёт, на какую-то из кнопок которого мы хотим повесить "хоткей", отличный от стандартного. Открываем в FAR'e этот отчет через DocFileBrowser и видим, что он в себе набор stream'ов (которые можно запросто называть файлами, суть одна и та же): Container.Contents Container.Profile Dialog Stream Inplace description Main MetaData Stream MD Programm text Какой файл к чему относится – я описывать не буду, про это и так неоднократно уже говорилось, тем более, что имена файлов более чем прозрачны. Да вы и сами все знаете ;-). Так вот, нам нужен Dialog Stream. Распакуйте его куда-нибудь (простая операция Copy в FAR'e). Теперь посмотрим, что он из себя представляет – это почти что обычный текстовый файл, за исключением первых трёх байт – там может быть все, что угодно (на самом деле, там длина файла). Файл состоит из строчек типа: {"Закрыть","BUTTON","1342177291","70","142","54", "14","0","0","4152","", "#Закрыть","","-1","U","0","0","0","0","0","","", "","0","-11","0","0","0","0","0","0","0","0","0", "0","0","0","MS Sans Serif","-1","-1","0", "Основной","{""0"",""0""}"}, На самом деле это всё одна строка, просто она разбита разбита для удобства чтения. Так вот, последние {""0"",""0""} есть ни что иное, как модификатор (первое числовое поле) и Vkey_code назначенной кнопке горячей клавиши. Причём оба числа десятичные. Модификатор означает: 0 – нет хоткея, 3 – есть; +4 – Shift +8 – Ctrl +16 – Alt например, для Alt+Shift+Key модификатор будет 23. Теперь, зная VK_ нужной нам клавиши (например, 41H = 65 для "A"), мы можем вручную назначить, скажем, кнопке «Закрыть» хоткей Ctrl+A – для этого заменим ее «хвост» на такой: {""11"",""65""} и со спокойной совестью сохраняем наш файл. Однако его длина изменилась – поэтому открываем файл каким-нибудь HEX-редактором, и правим: первый байт всегда FF, второй и третий – длина оставшегося куска файла (без учета этих трёх байт). Как вычислить эту длину? Становимся на последний байт файла – допустим, это адрес 05ECH. Поскольку адресация идет с нуля, то всего в файле 05EDH байт. Вычитаем три (первых) – получаем 05EAH. Это число и ставим во второй и третий байты заголовка (естественно, младший байт идет первым – EA 05). Далее – cохраняем, запаковываем Dialog Stream на место, закрываем файл (DocFileBrowser открывает файлы монопольно, 1С одновременно с ним тот же файл открыть не сможет). Теперь открываем отчет в 1С, и наслаждаемся произведённым эффектом. Напоследок хочу предупредить – редактирование свойств «пропатченной» кнопки в конфигураторе приводит к потере установленного хоткея, это вполне закономерно и ничего тут не поделать. Будьте внимательны. К сему описанию прилагается демонстрационный пример с тремя хоткеями – Ctrl+D, Alt+D и просто D. При чем все они (D в том числе) действуют даже тогда, когда фокус находится в поле ввода. Самое последнее: при вызове хоткея активный элемент не теряет фокуса! ----------------------------- ЗЫ: Если не ошибаюсь был скрипт под опенконф, который умел это делать быстро.... |
|||
8
kir-g
29.01.07
✎
15:03
|
(7)Спасибо
|
|||
9
Ёпрст2
29.01.07
✎
15:06
|
Для Опенькофа, простейший скрипт:
Sub AddHotkey() Set doc = Windows.ActiveWnd.Document.Page(0) DlgText = doc.Stream doc.Stream = Replace(DlgText, "{""""7"""",""""112""""}", "{""""0"""",""""45""""}") End sub //заменяет Shift+F1 на кнопки на Ins, вместо Ins (скан код 45) можно подставить что угодно ... Примеры кнопок: http://slil.ru/23836898 |
|||
10
Ёпрст2
29.01.07
✎
15:06
|
||||
11
kir-g
29.01.07
✎
15:16
|
(10)Тоже спасибо
|
|||
12
GrayT
29.01.07
✎
15:17
|
+11
|
|||
13
Student1983
30.01.07
✎
09:27
|
А что такое Formex?
|
|||
14
mergan
30.01.07
✎
09:29
|
аха теперь откройте обработку... ченить сделайте и за сэйвите
|
|||
15
Груздь
30.01.07
✎
09:32
|
FormEx непредсказуемо глючит при работе с клавиатурой ...
|
|||
16
mergan
30.01.07
✎
09:33
|
а кто-то говорил, что это безглючная компонента
|
|||
17
Guk
30.01.07
✎
09:34
|
(16) Такие вообще бывают?...
|
|||
18
mergan
30.01.07
✎
09:35
|
(17)если верить некоторым то да
|
|||
19
Груздь
30.01.07
✎
09:37
|
(16) Это альфовские популизаторы ...
|
|||
20
mergan
30.01.07
✎
09:38
|
странно, но ладно
|
|||
21
Ёпрст2
30.01.07
✎
11:40
|
(14) И чего будет? ...
|
|||
22
mergan
30.01.07
✎
11:41
|
(21)ну как минимум опять скрип запускать
|
|||
23
Ёпрст2
30.01.07
✎
12:25
|
(22) Не верю ... :)
Всё работает и сбоев замечено не было никогда. |
|||
24
mergan
30.01.07
✎
12:33
|
(23)я уже деталей не помню... столкнулся когда делали вирусяку в 1С... тобишь прятали код от просмотра...
|
|||
25
Ёпрст2
30.01.07
✎
12:39
|
(24) Всё может быть ..ни разу не сталкивался ...
ЗЫ: Вон, и фичу про журнал доков продают ... как по инсёрту вводить документы только тех видов, которые сам установил. |
|||
26
mergan
30.01.07
✎
12:41
|
(25)ВК?
|
|||
27
Ёпрст2
30.01.07
✎
12:42
|
(26) Не .. на основе вот этого сделана ..
http://www.sinor.ru/~my1c/knowhow/fijd.html |
|||
28
mergan
30.01.07
✎
12:45
|
(27)тобишь, что-то в мд засовывают?
|
|||
29
GrayT
30.01.07
✎
12:50
|
(28)Это, имхо, немного о другом. Но и в МД засовывают и нормально говорят живет при обновлении
|
|||
30
Ёпрст2
30.01.07
✎
12:51
|
(28) Не .. просто встретилась обработка , закрытая КЗК - настраиваемый ввод документов по Инсёрту в общем журнале - типа тыркаешь на Ins - появляется не стандартное окошко выбора видов доков, а своя обработка, где сам настраиваешь виды документов, сортировку и т.д..
Ны дык, сделана она на основе (27): делаем служебный документ, в ПриОткрытии вызов этой обработки + СтатусВозврата(0). |
|||
31
mergan
30.01.07
✎
12:53
|
(29,30)а как бы на сие чудо глянуть?
|
|||
32
GrayT
30.01.07
✎
12:56
|
(31)Парень ты умный, думаю ссылки хватит :)
http://www.1cpp.ru/wiki/?wakka=CConfigContIDToTextModule&v=b3j |
|||
33
Vippi
30.01.07
✎
13:00
|
(15) Это зависит от рук того, кто на клавиши жмет :)
|
|||
34
mergan
30.01.07
✎
13:02
|
(32)фэнкс... на досуге покурим травку
|
|||
35
GrayT
30.01.07
✎
13:03
|
(34)Аккуратней - забористая сволочь, уже несколько ночей кумарю :(
|
|||
36
mergan
30.01.07
✎
13:05
|
(35)ну я на выходных дома... тут один фих толком не подумаешь... постоянно... принеси/подай
|
|||
37
GrayT
30.01.07
✎
13:06
|
(36)Ни че... притрется со временем :)
|
|||
38
Ёпрст2
30.01.07
✎
13:07
|
(31) http://www.sinor.ru/~filez/saleidea.htm
ого, оказывается, это сам mszsuz продает, а я и не знал, так скачал где то .. |
|||
39
mergan
30.01.07
✎
13:08
|
(37)у меня зависимость плохая... видать в детсве кормили чем-то не таким... хотя от папирос до сих пор отвязаться не могу
|
|||
40
mergan
30.01.07
✎
13:11
|
(38)а отправляет на проклаб... наверное качнуть просто не дадут ((((
|
|||
41
Ёпрст2
30.01.07
✎
13:18
|
(40) Лови http://slil.ru/23842710
|
|||
42
mergan
30.01.07
✎
14:15
|
(41)фэнкс... правда с проклаба скачалось все... и как говорил товарищ... во истину все гениальное просто ))))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |