Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Перехват клавиатуры в форме выбора из списка значений (число прочтений - 7918 )
elkpro
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 145
Зарегистрирован: 19. Мая 2006
Перехват клавиатуры в форме выбора из списка значений
05. Октября 2009 :: 14:29
Печать  
Не отрабатывает процедура перехвата нажатия клавиатуры в версии с разделенным 1CPP и  Formex. Пробовал на версии 2.3.0.7 - все работает как надо. На всех версиях после не срабатывает. Formex пробовал и 2.5.0.92 и 2.5.0.95.

Может есть какая особенность?
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехват клавиатуры в форме выбора из списка значений
Ответ #1 - 06. Октября 2009 :: 03:09
Печать  
Выкладывай свой тест, в котором не работает.
  

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



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Перехват клавиатуры в форме выбора из списка значений
Ответ #2 - 06. Октября 2009 :: 04:42
Печать  
Мот где в коде есть:
Сервис.ПерехватКлавиатуры(0);
?
  
Наверх
 
IP записан
 
elkpro
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 145
Зарегистрирован: 19. Мая 2006
Re: Перехват клавиатуры в форме выбора из списка значений
Ответ #3 - 06. Октября 2009 :: 07:10
Печать  
Собственно вот такой код
Открывается форма и на форме в поле выбора значения по нажатию стрелки вниз отрывается диалог. После этого срабатывает процедура ПриНачалеВыбораЗначениея и открывается выбор из списка.

Хочу заметить, что все это происходит на форме, открытой в модальном режиме.

На версии 1С++ 2.3.0.7 работает. Как только подключаю разделенную, то не работает.
Соответственно при открытии формы вызывается Сервис.ПерехватКлавиатуры(1);

На версии выше 2.5.0.0 перехват срабатывает только на самой форме - в форме списка выбора уже не срабатывает.

//*******************************************
// фильтрация элементов по справочнику
Процедура ПриНачалеВыбораЗначения(ЭлемДиалога, флагСтОбработки)
     Если Не(ЭлемДиалога = "вариантКода") Тогда
           Возврат;
     КонецЕсли; 
     // Выбор значения из списка
     
     НеПерехватыватьНажатие=1;
     Зн=0;
     Если списВариантовКода.ВыбратьЗначение(,,Зн,,0)=1 Тогда
           вариантКода=списВариантовКода.ПолучитьЗначение(Зн);
     КонецЕсли;
     флагСтОбработки = 0;
     НеПерехватыватьНажатие = 0;
КонецПроцедуры


Процедура ПриНажатииКнопкиКлавиатуры(КодКлавиши, Alt, Shift, Ctrl, Символ, ФСО)
     
     ФормаРасш = СоздатьОбъект("РасширениеФормы");
     Если (КодКлавиши=40) и (Форма.АктивныйЭлемент()="вариантКода") И (НеПерехватыватьНажатие = 0) Тогда
//            Сообщить(ФормаРасш.ТекущийАтрибут().Заголовок);
           Сервис.ЭмулироватьКлавиатуру("{F4}"); 
           ФСО=0;            
     ИначеЕсли КодКлавиши=118 Тогда                                                         
              
           //СписВыбора="";
           //Для н = 1 По списВариантовКода.РазмерСписка() Цикл
           //      СписВыбора="|"+СписВыбора+списВариантовКода.ПолучитьЗначение(н);
           //КонецЦикла;
           Svc = CreateObject("Svcsvc.Service");
           //если не указан первый параметр, то поиск происходит по текущему активному комбо или лист боксу
           Svc.FilterValue("",1 + 32 + 128,"Выбор значения из списка",0,0,400);
           ФСО=0;
     КонецЕсли;
     //Сообщить(КодКлавиши);
     
КонецПроцедуры         
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Перехват клавиатуры в форме выбора из списка значений
Ответ #4 - 06. Октября 2009 :: 07:50
Печать  
Дык а нафига перехватывать нажатия клавиш в списке ?
Передавай в метод FilterValue строку (список в строку с разделителями) и всё.. из неё и выбор будет.
  
Наверх
 
IP записан
 
elkpro
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 145
Зарегистрирован: 19. Мая 2006
Re: Перехват клавиатуры в форме выбора из списка значений
Ответ #5 - 06. Октября 2009 :: 09:18
Печать  
Eprst писал(а) 06. Октября 2009 :: 07:50:
Дык а нафига перехватывать нажатия клавиш в списке ?
Передавай в метод FilterValue строку (список в строку с разделителями) и всё.. из неё и выбор будет.


Что он вернет при выборе?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Перехват клавиатуры в форме выбора из списка значений
Ответ #6 - 06. Октября 2009 :: 09:47
Печать  
Что попросишь - то и вернёт..

http://www.script-coding.info/svcsvc.html
  
Наверх
 
IP записан
 
elkpro
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 145
Зарегистрирован: 19. Мая 2006
Re: Перехват клавиатуры в форме выбора из списка значений
Ответ #7 - 06. Октября 2009 :: 09:50
Печать  
Eprst писал(а) 06. Октября 2009 :: 07:50:
Дык а нафига перехватывать нажатия клавиш в списке ?
Передавай в метод FilterValue строку (список в строку с разделителями) и всё.. из неё и выбор будет.


В список с разделителями нормально не отображает список. Как я понимаю, то ему не нужны кавычки?

Данный подход позволит обойти данную проблему, но суть в том, что что-то изменилось в перехвате.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Перехват клавиатуры в форме выбора из списка значений
Ответ #8 - 06. Октября 2009 :: 10:03
Печать  
Блин, ну СтрЗаменить еще потом и всё..
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Перехват клавиатуры в форме выбора из списка значений
Ответ #9 - 06. Октября 2009 :: 10:05
Печать  
Да еще раз, нафига нужен перехват в самом списке ?
Когда ВК и так сама фильтрует переданный в неё список при наборе символов?
  
Наверх
 
IP записан
 
elkpro
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 145
Зарегистрирован: 19. Мая 2006
Re: Перехват клавиатуры в форме выбора из списка значений
Ответ #10 - 06. Октября 2009 :: 10:13
Печать  
Eprst писал(а) 06. Октября 2009 :: 10:05:
Да еще раз, нафига нужен перехват в самом списке ?
Когда ВК и так сама фильтрует переданный в неё список при наборе символов?


Вы мне предлагаете переделать алгоритм работающей программы? Решение хорошее, если бы нечего было делать. У меня сейчас нет времени это переделывать - поэтому хотелось бы найти решение, которое не зависит от кода.

Вопрос стоял про работу перехватчика клавиатуры и конкретно почему перестал перехватывать нажатия в формах выбора списков в модальных формах в новой версии Formex?

  
Наверх
 
IP записан
 
elkpro
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 145
Зарегистрирован: 19. Мая 2006
Re: Перехват клавиатуры в форме выбора из списка значений
Ответ #11 - 06. Октября 2009 :: 10:23
Печать  
Eprst писал(а) 06. Октября 2009 :: 10:05:
Да еще раз, нафига нужен перехват в самом списке ?
Когда ВК и так сама фильтрует переданный в неё список при наборе символов?


Ко всему прочему у меня из при выборе из списка возвращается сам объект, а выбор происходит по текстовому представлению.
Каким образом это реализовать через выбор списка?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Перехват клавиатуры в форме выбора из списка значений
Ответ #12 - 06. Октября 2009 :: 10:44
Печать  
А разве должен перехватывать ?
Формекс перехватывает события формы, вы же открыли стороннее окошко другой ВК...
Разве что глобальная ПриНажатииКнопкиКлавиатуры отловит
  
Наверх
 
IP записан
 
elkpro
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 145
Зарегистрирован: 19. Мая 2006
Re: Перехват клавиатуры в форме выбора из списка значений
Ответ #13 - 06. Октября 2009 :: 10:47
Печать  
Eprst писал(а) 06. Октября 2009 :: 10:44:
А разве должен перехватывать ?
Формекс перехватывает события формы, вы же открыли стороннее окошко другой ВК...
Разве что глобальная ПриНажатииКнопкиКлавиатуры отловит


Не поняли - я же писал, что открывается выбор станадартным ВыбратьЗначение из списка значений - потом только при нажатии в списке выбора кнопки F7 включается SvcSvc.Service.
Вот здесь и не срабатывает перехват.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Перехват клавиатуры в форме выбора из списка значений
Ответ #14 - 06. Октября 2009 :: 10:49
Печать  
elkpro писал(а) 06. Октября 2009 :: 10:23:
Ко всему прочему у меня из при выборе из списка возвращается сам объект, а выбор происходит по текстовому представлению.
Каким образом это реализовать через выбор списка?


Ну и ? передаете в FilterValue  список представлений, он вам возвращает выбрананное  Представление, по выбранному представлению методом Получить имеете сам объект из исходного списка значений.. всё собственно.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать