#3
by КонецЦикла
(С) Alexey Kusiy где-то в 2001--------------------------------------------------------------------------------Известно, что на кнопки в экранных формах V7 можно «вешать» горячие клавиши. Однако количество оных оставляет желать лучшего – это только Fx с различными модификаторами (alt, ctrl, shift), при чём наиболее привлекательные сочетания (например, F1) уже зарезервированы системой.Но всё-таки существует есть способ привязать к кнопкам и иные сочетания клавиш – о нем я и расскажу. Однако этот способ не относится к стандартным и документированным, поскольку требует непосредственной (минуя конфигуратор) модифиикации форм.Инструментарий.Нам потребуется: файловый менеджер FAR, plug-in к нему по имени DocFileBrowser, справочник по кодам клавиш (в смысле, которые Virtual Keys, VK_), и любой HEX-редактор (можно использовать соответствующую функцию FAR'a).Сам процесс.Допустим, у нас есть некий внешний отчёт, на какую-то из кнопок которого мы хотим повесить "хоткей", отличный от стандартного. Открываем в FAR'e этот отчет через DocFileBrowser и видим, что он в себе набор stream'ов (которые можно запросто называть файлами, суть одна и та же):Container.ContentsContainer.ProfileInplace descriptionMain MetaData StreamMD Programm textКакой файл к чему относится – я описывать не буду, про это и так неоднократно уже говорилось, тем более, что имена файлов более чем прозрачны. Да вы и сами все знаете ;-).Так вот, нам нужен Dialog Stream. Распакуйте его куда-нибудь (простая операция Copy в FAR'e).Теперь посмотрим, что он из себя представляет – это почти что обычный текстовый файл, за исключением первых трёх байт – там может быть все, что угодно (на самом деле, там длина файла).Файл состоит из строчек типа:"14","0","0","4152","","#Закрыть","","-1","U","0","0","0","0","0","","","Основной","{""0"",""0""}"},На самом деле это всё одна строка, просто она разбита разбита для удобства чтения.Так вот, последние {""0"",""0""} есть ни что иное, как модификатор (первое числовое поле) и Vkey_code назначенной кнопке горячей клавиши. Причём оба числа десятичные.Модификатор означает:+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 в том числе) действуют даже тогда, когда фокус находится в поле ввода.Самое последнее: при вызове хоткея активный элемент не теряет фокус
#5
by ADirks
Только добавлю, что именно на Del повесить что-то чаще всего не удаётся. Почему-то 1С её никому не отдаёт. На NumLock пожалуйста, а на Del - фигу вам.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Добавить в сущест. ТЗ строку из другой ТЗ
- Удаление помученных на удаление элементов справочников
- Создание ТЗ с вложенными ТЗ на основании плоской ТЗ методом группир. по колонкам
- Документы невозможно пометить на удаление, или провести/отменить проведение
- ТЗ.Свернуть для ТЗ в ТЗ
- Как запретить удаление документа (или пометку на удаление) ?
- Роль: удаление и интерактивное удаление
- как пометить на удаление все договоры контрагентов?
- Не уникальный порядок элемента справочника (при попытке пометить на удаление)
- Как отловить окно вопроса "Пометить объект на удаление?"
- Удаление помеченных на удаление
- v7: Обработка пометить документы на удаление
В этой группе 1С
- SQL : сервер не существует или отсутствует доступ.
- Как поменять разрешение экрана в терминальной сессии?
- v8: Как установить поля для сортировки в форме списка справочника?
- Запрет повторной печати документа
- Обработка проведения и начать транзакцию.
- Внешняя обработка не открывается конфигуратором
- Как организовать суммовой учет товаров в рознице?
- надо чтобы на накладной печатался долг контрагента
- как перенести контрагентов из одной базы в другую
- Как программно добавить пользователя базы 1с?
- V8.0 Как в результате запроса получить поле = сумме двух других, при условии что
- Нумерация РКО и ПКО
- офф/2 Как из ADO вызвать хранимую функцию?
- Отбор по значению реквизита в форме списка подчиненного справочника
- Постоянно вываливается ошибка Locking File c:Base1SUSERS.DBF
- Нужен драйвер Posiflex pd-2200c
- Ошибка при работе 1С "abnormal program termination"
- ВК Status1C.dll
- Как удалить документ из самого документа ?
- Вопрос о SQL Enterprise и Developer Edition