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



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

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



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ПриНажатииКнопкиКлавиатуры в журнале документо
Ответ #16 - 15. Мая 2007 :: 09:17
Печать  
sedmin писал(а) 15. Мая 2007 :: 08:00:
В смысле? Ты это уже исправлял?


Гы... то чего ты всегда опасаешься - багов - произошло и на старом релизе.
Так что добро пожаловать в мир 2.5.0 Улыбка
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: ПриНажатииКнопкиКлавиатуры в журнале документо
Ответ #17 - 05. Июня 2007 :: 06:35
Печать  
Алексей, я взял твою процедуру Key_Hook(), она оказалась не сильно модифицирована, написал такой код:

1) в форме журнала:
Код
Выбрать все
Процедура ПриНажатииКнопкиКлавиатуры(КодКлавиши, Alt, Shift, Ctrl, Символ, ФСО)
	Если КодКлавиши=45 Тогда //Клавиша Ins
		ФСО=0;
	КонецЕсли;
	Сообщить("ПутевыеЛисты:Нажатие. КодКлавиши="+КодКлавиши+", Alt="+Alt+", Shift="+Shift+", Ctrl="+Ctrl+", Символ="+Символ+", ФСО="+ФСО);
КонецПроцедуры

Процедура ПриОтжатииКнопкиКлавиатуры(КодКлавиши, Alt, Shift, Ctrl, Символ, ФСО)
	Сообщить("ПутевыеЛисты:Отжатие. КодКлавиши="+КодКлавиши+", Alt="+Alt+", Shift="+Shift+", Ctrl="+Ctrl+", Символ="+Символ+", ФСО="+ФСО);
КонецПроцедуры 



2) в глобальнике:
Код
Выбрать все
Процедура ПриНажатииКнопкиКлавиатуры(Конт, КодКлавиши, Alt, Shift, Ctrl, Символ, ФСО)
	Сообщить("ГМ:Нажатие. КодКлавиши="+КодКлавиши+", Alt="+Alt+", Shift="+Shift+", Ctrl="+Ctrl+", Символ="+Символ+", ФСО="+ФСО);
КонецПроцедуры

Процедура ПриОтжатииКнопкиКлавиатуры(Конт, КодКлавиши, Alt, Shift, Ctrl, Символ, ФСО)
	Сообщить("ГМ:Отжатие. КодКлавиши="+КодКлавиши+", Alt="+Alt+", Shift="+Shift+", Ctrl="+Ctrl+", Символ="+Символ+", ФСО="+ФСО);
КонецПроцедуры 



Вот результат:
Цитата:
ПутевыеЛисты:Нажатие. КодКлавиши=255, Alt=0, Shift=0, Ctrl=0, Символ=, ФСО=1
ГМ:Нажатие. КодКлавиши=255, Alt=0, Shift=0, Ctrl=0, Символ=, ФСО=1
ПутевыеЛисты:Нажатие. КодКлавиши=45, Alt=0, Shift=0, Ctrl=0, Символ=, ФСО=0
ГМ:Нажатие. КодКлавиши=45, Alt=0, Shift=0, Ctrl=0, Символ=, ФСО=0
ПутевыеЛисты:Отжатие. КодКлавиши=45, Alt=0, Shift=0, Ctrl=0, Символ=, ФСО=1
ГМ:Отжатие. КодКлавиши=45, Alt=0, Shift=0, Ctrl=0, Символ=, ФСО=1
ПутевыеЛисты:Отжатие. КодКлавиши=255, Alt=0, Shift=0, Ctrl=0, Символ=, ФСО=1
ГМ:Отжатие. КодКлавиши=255, Alt=0, Shift=0, Ctrl=0, Символ=, ФСО=1
ПутевыеЛисты:Отжатие. КодКлавиши=255, Alt=0, Shift=0, Ctrl=0, Символ=, ФСО=1
ГМ:Отжатие. КодКлавиши=255, Alt=0, Shift=0, Ctrl=0, Символ=, ФСО=1


То есть видно, что события возникают как в журнале, так и в глобальнике.
По флагу ФСО можно понять, что дело тут в процедуре CallModuleProc(), а она, кстати, не модифицировалась относительно 2.0.3.

Но еще иногда бывает такой вариант:
Цитата:
ГМ:Нажатие. КодКлавиши=255, Alt=0, Shift=0, Ctrl=0, Символ=, ФСО=1
ГМ:Нажатие. КодКлавиши=45, Alt=0, Shift=0, Ctrl=0, Символ=, ФСО=1
ГМ:Нажатие. КодКлавиши=45, Alt=0, Shift=0, Ctrl=0, Символ=, ФСО=1
ГМ:Отжатие. КодКлавиши=45, Alt=0, Shift=0, Ctrl=0, Символ=, ФСО=1
ГМ:Отжатие. КодКлавиши=255, Alt=0, Shift=0, Ctrl=0, Символ=, ФСО=1
ГМ:Отжатие. КодКлавиши=255, Alt=0, Shift=0, Ctrl=0, Символ=, ФСО=1


То есть события в журнале не возникает. Причем, не понятно, от чего зависит какой вариант получится.
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

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

Чтобы не только по клавише Ins мой код отрабатывал, но и при нажатии кнопки на панели?
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ПриНажатииКнопкиКлавиатуры в журнале документо
Ответ #19 - 05. Июня 2007 :: 07:08
Печать  
sedmin писал(а) 05. Июня 2007 :: 06:47:
Кстати, а можно как-то перехватить команду создания нового документа?

Чтобы не только по клавише Ins мой код отрабатывал, но и при нажатии кнопки на панели?

Может Перехватчиком лучше? (ВводНового и ВводНаОсновании)
  
Наверх
 
IP записан
 
lustin
1c++ power user
Отсутствует


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: ПриНажатииКнопкиКлавиатуры в журнале документо
Ответ #20 - 05. Июня 2007 :: 07:18
Печать  
идея наверное не подойдёт... Rwigets.dll команды перехватывает, так что можно не клавишу отследить нажатую а код команды.
  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ПриНажатииКнопкиКлавиатуры в журнале документо
Ответ #21 - 05. Июня 2007 :: 07:22
Печать  
sedmin писал(а) 05. Июня 2007 :: 06:47:
Кстати, а можно как-то перехватить команду создания нового документа?

Чтобы не только по клавише Ins мой код отрабатывал, но и при нажатии кнопки на панели?

ВК RWidjets умеет это делать.
Вместе с Перехватчиком очень мощная вещь получается.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: ПриНажатииКнопкиКлавиатуры в журнале документо
Ответ #22 - 05. Июня 2007 :: 09:47
Печать  
JohnyDeath писал(а) 05. Июня 2007 :: 07:08:
sedmin писал(а) 05. Июня 2007 :: 06:47:
Кстати, а можно как-то перехватить команду создания нового документа?

Чтобы не только по клавише Ins мой код отрабатывал, но и при нажатии кнопки на панели?

Может Перехватчиком лучше? (ВводНового и ВводНаОсновании)

Это уже поздно. Надо бы, чтобы журнал мог передавать информацию в создаваемый документ. Мог создать документ нужного вида или какие-то другие параметры передать.

Как бы это сделать?
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

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

Поюзай этот способ
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: ПриНажатииКнопкиКлавиатуры в журнале документо
Ответ #24 - 05. Июня 2007 :: 11:33
Печать  
artbear писал(а) 05. Июня 2007 :: 10:39:
Поюзай этот способ

Ну у этого способа имеется ряд недостатков.

1. Кнопка в панели инструментов работает по-старому.
2. Нужно извращаться с gcomp. И потом следить, чтобы в конфигураторе кто-нибудь случайно не испортил эту кнопку.
3. Хоткеи отрабатывают только у 40 первых элементов формы, нужно следить за порядком обхода.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ПриНажатииКнопкиКлавиатуры в журнале документо
Ответ #25 - 05. Июня 2007 :: 12:10
Печать  
artbear писал(а) 05. Июня 2007 :: 07:22:
sedmin писал(а) 05. Июня 2007 :: 06:47:
Кстати, а можно как-то перехватить команду создания нового документа?

Чтобы не только по клавише Ins мой код отрабатывал, но и при нажатии кнопки на панели?

ВК RWidjets умеет это делать.
Вместе с Перехватчиком очень мощная вещь получается.

Или слишком опасно для использования в тиражных конфах? Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: ПриНажатииКнопкиКлавиатуры в журнале документо
Ответ #26 - 05. Июня 2007 :: 12:27
Печать  
Нехоженная же тропка. А на них всегда граблей в достатке разложено.

Вон взять хотя бы vkloader. Уж на что проверенная вешь, казалось бы, однако, и с ним не все просто.

Поэтому не хотелось бы по-крупному то огребать. Как бы нам по хоженной тропке пройти...
  
Наверх
 
IP записан
 
div0
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 1
Зарегистрирован: 12. Июня 2007
Re: ПриНажатииКнопкиКлавиатуры в журнале документо
Ответ #27 - 12. Июня 2007 :: 06:39
Печать  
Была год назад похожая ситуация
Версия FORMEX 1.9.6.8
Только не строки добавлялись, а открывалось несколько новых документов по INSERT на одних компьютерах и, как положено, - один, на других. Только там, где INSERT перехватывался в ПриНажатии...
Долго мы мучились, пока не нашли разницу в этих компьютерах:
там где глюки - установлен и включен драйвер сканера штрих-кодов (сканер клавиатурный), от АТОЛ, версия 5.6.0 (даже если нет самого сканера!!!). Стоит его выключить и глюки исчезают! Или если не загружать FORMEX, тоже исчезают. Сделали вывод, что вместе им работать нельзя!
Более свежие версии FORMEX не пробовали.
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: ПриНажатииКнопкиКлавиатуры в журнале документо
Ответ #28 - 13. Июня 2007 :: 04:56
Печать  
Драйвера сканера штрих-кодов точно нет. Разработчики все-таки, зачем нам сканер? Но выявлена следующая ситуация:

Цитата:
Если одну и ту же ситуацию создаем на моем компьютере, то возникают такие события (нажимается кнопка в журнале):

>Нажата кнопка клавиатуры 255
>Нажата кнопка клавиатуры 45

И все отрабатывает правильно, в документе кнопка Ins не отрабатывает.

А если то же самое делать с других компьютеров, то возникает только одно событие:

>Нажата кнопка клавиатуры 45

После этого в форме вновь создаваемого документа отрабатывает клавиша Ins.

Не знаю, на что и думать. Такая ситуация возникает на любом коде. Как для 2.0.3.4, так и для того кода, который выслал мне Артур. Хотя различия в них не большие.

Сначала я подумал на PuntoSwitcher, но оказалось, что и без него бывают такие глюки.
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ПриНажатииКнопкиКлавиатуры в журнале документо
Ответ #29 - 13. Июня 2007 :: 08:51
Печать  
Эээ... не Citrix случаем?
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 
ОтправитьПечать