Пометить на удаление в ТЗ клавишей DEL #107986


#0 by BelRain
День добрый! Как можно пометить на удаление документ из ТЗ клавишей Del ?!
#1 by zzz
с помощью Gcomp
#2 by BelRain
Gcomp - это как?
#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 в том числе) действуют даже тогда, когда фокус находится в поле ввода.Самое последнее: при вызове хоткея активный элемент не теряет фокус
#4 by zzz
про хоткей и GComp тут:http://1c.realnet.ru/cgi-bin/forum.cgi?ask=9123
#5 by ADirks
Только добавлю, что именно на Del повесить что-то чаще всего не удаётся. Почему-то 1С её никому не отдаёт. На NumLock пожалуйста, а на Del - фигу вам.
#6 by zzz
не знаю, проблем с Del вроде у меня не было.
#7 by BelRain
Ну значит, как всегда, сделаемь проще...Спасибо!
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С