Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Очень популярная тема (более 25 ответов) ПриНажатииКнопкиКлавиатуры в журнале документов. (число прочтений - 9794 )
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
ПриНажатииКнопкиКлавиатуры в журнале документов.
14. Мая 2007 :: 10:54
Печать  
При нажатии клавиши Ins в общем журнале документов 1С предлагает выбрать вид документа. Даже если установлены какие-то отборы.

В связи с этим была предпринята попытка использовать событие ПриНажатииКнопкиКлавиатуры(). Но оказалось, что не все так просто. Если написать ОткрытьФорму("Документ.ТакойТо"), то после отрытия формы этого документа, еще раз отрабатывает клавиша Ins , и в документе появляется новая строка, и 1С начинает ее заполнять.

Никакие манипуляции с ФСО не помогают. Вернее, если не сбросить ФСО, то 1С идет по старому варианту и предлагает выбрать из списка вид документа.

Кто-нибудь с этим сталкивался? Что-то можно тут сделать?
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: ПриНажатииКнопкиКлавиатуры в журнале документо
Ответ #1 - 14. Мая 2007 :: 10:58
Печать  
У меня именно так и сделано. Никаких проблем нет.
  
Наверх
ICQ  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ПриНажатииКнопкиКлавиатуры в журнале документо
Ответ #2 - 14. Мая 2007 :: 11:05
Печать  
Хинт: Есть еще "ПриОтжатииКнопкиКлавиатуры".
  

FormEx developer
Наверх
www  
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: ПриНажатииКнопкиКлавиатуры в журнале документо
Ответ #3 - 14. Мая 2007 :: 11:06
Печать  
А попробуй отрабатывать ПриОтжатииКнопкиКлавиатуры.  Вообще-то нехило бы отрабатывать оба события, но иногда бывает достаточно и одного.  Неприятность в том, что на "тривиальное" нажатие кнопки виндовоз генерит кучу событий, и при неаккуратной работе с этой кучей часть событий уходит совсем не туда, куда следует. Их и в WinAPI то упаришься отрабатывать, а в 1С+FormEx - и того напряжней...
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: ПриНажатииКнопкиКлавиатуры в журнале документо
Ответ #4 - 14. Мая 2007 :: 11:33
Печать  
Цитата:
Хинт: Есть еще "ПриОтжатииКнопкиКлавиатуры".


У меня в 2.0.3.4 нету.   Печаль
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ПриНажатииКнопкиКлавиатуры в журнале документо
Ответ #5 - 14. Мая 2007 :: 12:11
Печать  
Тогда подправь файлик frame.cpp
Код
Выбрать все
if((lParam & 0x80000000) == 0)
	CallModuleProc("ПриНажатииКнопкиКлавиатуры","OnChar", 6, lArray);
else
	CallModuleProc("ПриОтжатииКнопкиКлавиатуры","OnCharUp", 6, lArray);
 

  

FormEx developer
Наверх
www  
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: ПриНажатииКнопкиКлавиатуры в журнале документо
Ответ #6 - 14. Мая 2007 :: 13:17
Печать  
Что-то я ничего не понял. Нажатие происходит в журнале, а отжатие в документе? И оба отрабатывают? А раньше не отрабатывали? Странно.

А как теперь надо делать? Нажатие обрабатывать в журнале, а отжатие в глобальнике? А в глобальнике все отжатия сливать? А это будет правильно?
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: ПриНажатииКнопкиКлавиатуры в журнале документо
Ответ #7 - 14. Мая 2007 :: 13:33
Печать  
Цитата:
Тогда подправь файлик frame.cpp

Подправил. Вот результаты эксперимента:

1. ПриОтжатииКнопкиКлавиатуры() не вызывается ни разу.
2. ПриНажатииКнопкиКлавиатуры() вызывается дважды: как в журнале, так и в глобальнике.

Почему?
  
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: ПриНажатииКнопкиКлавиатуры в журнале документо
Ответ #8 - 14. Мая 2007 :: 13:39
Печать  
Используй ПриПолученииКоманды(пКоманда, пЗаблокироватьКоманду) это когда юзають нажатие мыши
и
Процедура ПриНажатииКнопкиКлавиатуры(КодКлавиши, Alt, Shift, Ctrl, Символ, ФСО)
     Если КодКлавиши=45 Тогда
           ФСО=0;
           ОткрытьФорму("Документ.Расходная");
     КонецЕсли;
КонецПроцедуры      // ПриНажатииКнопкиКлавиатуры
при нажатии кнопки.
  
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: ПриНажатииКнопкиКлавиатуры в журнале документо
Ответ #9 - 14. Мая 2007 :: 13:41
Печать  
2. перенеси из формы в глобальник и обрабатывай переданный контекст.
либо оставь на месте а в глобальнике поставь заглушку на эту форму и ФСО=0
  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: ПриНажатииКнопкиКлавиатуры в журнале документо
Ответ #10 - 15. Мая 2007 :: 03:30
Печать  
А кстати, можно же воспользоваться старым дедовским методом. Положить на форму журнала кнопку (в невидимый слой), назначить ей акселератор Ins, и всё будет отрабатываться пучком.  Акселераторы виндовоз отрабатывает в первую очередь, так что перехват будет железный.
Назначить акселератор можно например gcomp'ом - в секции нужной кнопки добавить строчку "HotKey: Ins".
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: ПриНажатииКнопкиКлавиатуры в журнале документо
Ответ #11 - 15. Мая 2007 :: 03:50
Печать  
ADirks писал(а) 15. Мая 2007 :: 03:30:
А кстати, можно же воспользоваться старым дедовским методом. Положить на форму журнала кнопку (в невидимый слой), назначить ей акселератор Ins, и всё будет отрабатываться пучком.  Акселераторы виндовоз отрабатывает в первую очередь, так что перехват будет железный.
Назначить акселератор можно например gcomp'ом - в секции нужной кнопки добавить строчку "HotKey: Ins".

Да не FormEx тут виноват. У меня такое давно работает. Здесь судя по всему что-то с одновременным вызовом обработчика в модуле журнала и в глобальнике, т.к. он срабатывает и там, и там.
  
Наверх
ICQ  
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: ПриНажатииКнопкиКлавиатуры в журнале документо
Ответ #12 - 15. Мая 2007 :: 06:35
Печать  
Даже если есть два обработчика, объясните, почему они отрабатывают оба?

В обработчике в глобальнике ничего не делается кроме сообщения. Но это - отдельное событие, и отрабатывается оно 1С-ом -- добавляется строчка в документ.

Картина такая: нажимаем кнопку - возникает два события в модуле журнала и в глобальнике; отпускаем кнопку - не возникает ни одного события.

Алексей, так и должно быть? Как-то странно...
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ПриНажатииКнопкиКлавиатуры в журнале документо
Ответ #13 - 15. Мая 2007 :: 07:26
Печать  
Так не должно быть. Но тут я могу только в очередной раз порекомендовать перейти на разделенный вариант компонент.
  

FormEx developer
Наверх
www  
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: ПриНажатииКнопкиКлавиатуры в журнале документо
Ответ #14 - 15. Мая 2007 :: 08:00
Печать  
В смысле? Ты это уже исправлял?
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать