ПриНажатииКнопкиКлавиатуры() флаг стандартной обработки в форме

Автор GRUNGO, 18 марта 2024, 16:40

« назад - далее »

GRUNGO

Всем привет, столкнулся с проблемой
Форма списка справочника, перехватываю клавиатуру.

После того, как "слышу" определенный символ, включаю Флаг стандартной обработки = 0, думал это спасет от интерактивного поиска элементов. Но не помогло (((
Так и скачет курсор по списку...

Существует ли способ обхода? Пытаюсь таким способом использовать сканер ШК


Перем мКлава;    
Перем мВведенныйКод;

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

КонецПроцедуры

                      

мВведенныйКод = "";
мСлушаемКод = 0;




АЛьФ

ПриНажатии и ПриОтжатии, насколько я помню, работают в паре. Если отменяется одно, то надо отменять и второе.

Arbuz

У меня в форме подбора справочника ПриНажатииКнопкиКлавиатуры() с ФСО=0 нажатия дальше не отрабатывают. Ничего не скачет. Без использования ПриОтжатии совсем. Перехватываю курсор (с модификаторами в том числе), таб, дел, функциональные, грей+ и т.д.

Злоп

Цитата: Arbuz от 18 марта 2024, 17:57У меня в форме подбора справочника ПриНажатииКнопкиКлавиатуры() с ФСО=0 нажатия дальше не отрабатывают. Ничего не скачет. Без использования ПриОтжатии совсем. Перехватываю курсор (с модификаторами в том числе), таб, дел, функциональные, грей+ и т.д.
Аналогично.
Столько форм и решений на этом уже построено...

Злоп

Цитата: GRUNGO от 18 марта 2024, 16:40Пытаюсь таким способом использовать сканер ШК
Опиши конкретнее задачу - что надо сделать/что хочется сделать?
пинок: сканирование от ручного ввода отличается интервалами между приходами символов. вот готсюда если надо - можно и танцевать... 
или настрой префикс у сканера Ф7 - по префиксу открывай форму с одним единственным полем, принимай в него скан полный, и возвращай с поиском или что там надо... На ИС как минимум одно готовое решение лежит на этом принципе - принимает нажатия клавиш и если это идет со сканера (быстрый набор) - то генерит обработку внешнего события, то есть является драйвером клавиатурного сканера, PUBID 75804

GRUNGO

всё оказалось проще ))

Процедура ПриНажатииКнопкиКлавиатуры(КодКлавиши,Alt,Shift,Ctrl,Символ,ФСО)
     
    Если мСлушаемКод = 1 тогда
        ФСО = 0; // <<<<<=============  ВОТ ТУТ ЗАБЫЛ ВОТКУНТЬ ФСО )))
        мВведенныйКод=мВведенныйКод+ Символ;
    КОнецЕсли;
 

GRUNGO

Цитата: Злоп от 18 марта 2024, 20:55
Цитата: GRUNGO от 18 марта 2024, 16:40Пытаюсь таким способом использовать сканер ШК
Опиши конкретнее задачу - что надо сделать/что хочется сделать?

да как обычно... подключить сканер ШК
нормальным путем пройти не удалось, пользователи сидят в VDI на raspberry, база в терминале на 2016 винде
с пробросом COM порта проблемы
1) они тупо не создаются и не эмулируются в VDI (чую, что еще и админы что-то недоговаривают  ;D )
2) библиотеки на оф. ресурсах не нашел, сам с торговым оборудованием не работал лет 20, а друзей семерошников не осталось, я в городе походу краснокнижный

пойду сейчас по пути перехвата клавиатуры, попробую без открытия формы (гуляет в интернете пример)

GRUNGO

на самом деле, каюсь, что многие годы не уделял внимания formex, у меня только раскраска работала
недавно переежали на вин2016, решая конфликт с 1с++ зашел в давно не посещаемую кладовочку и был в шоке от количества скачивания последней версии библиотеки, спасибо АЛьФу и всем кто причастен

Злоп


GRUNGO


Arbuz

Цитата: Злоп от 19 марта 2024, 08:48https://infostart.ru/1c/tools/75804/ - смотрел?
Я тоже посмотрел. Там есть такое:
Процедура ПриНажатииКнопкиКлавиатуры(Конт,КодКлавиши,Alt,Shift,Ctrl,Символ,ФСО) Экспорт
    Если ФСО=0 тогда Возврат; КонецЕсли;
На кой это? Зачем проверять ФСО при входе в процедуру и в каком случае условие может соблюстись (т.е. бывает так, что на входе ФСО=0)?
Похоже на воркэраунд какого-то бага.

Злоп


Arbuz

Цитата: Злоп от 21 марта 2024, 16:55Процедуру и искуственно можно вызвать
Ага, ещё и рекурсивно ;D
Всё равно не вижу смысл проверки ФСО=0 первой строкой. 

MWW_Ruza

Если уж зашел вопрос про клавиши, чуть ОФФ, не хочу плодить темы, напишу сюда.
А можно добавить метод, возвращающий текущее состояние клавиши?
Я сейчас использую для этого ВК KeyState от trdm, все работает, нет проблем. Но, это лишняя загружаемая ВК... А ФормЕкс уже и так загружен, зачем "плодить сущности" - ?

АЛьФ

Цитата: MWW_Ruza от 21 марта 2024, 19:08Если уж зашел вопрос про клавиши, чуть ОФФ, не хочу плодить темы, напишу сюда.
А можно добавить метод, возвращающий текущее состояние клавиши?
Я сейчас использую для этого ВК KeyState от trdm, все работает, нет проблем. Но, это лишняя загружаемая ВК... А ФормЕкс уже и так загружен, зачем "плодить сущности" - ?

Это?

СостояниеКлавиатуры(<?>,)
Синтаксис:
СостояниеКлавиатуры(<ИмяКнопки>,<Состояние>)
Параметры:
<ИмяКнопки> - строка с именем кнопки (возможные значения: "CapsLock","NumLock","ScrollLock")
<Состояние> - устанавливаемое состояние кнопки 1 - включено, 0 -выключено.