|   |   | 
| 
 | v7: ПриНажатииКнопкиКлавиатуры | ☑ | ||
|---|---|---|---|---|
| 0
    
        Junior1s 19.01.12✎ 08:22 | 
        Доброе Утро.
  Прошу совета. Вставил на форме текст, нужно что бы в него возвращался набранный номер товара. Попробовал сделать это с помощью FormEx Процедура ПриНажатииКнопкиКлавиатуры(_Кнопка,_АЛТ,_ШИФТ,_КОНТРЛ,_Символ,_ФСО) Сервис.ВнешнееСобытие("Formex","ВводСимвола",_Кнопка); КонецПроцедуры Процедура ОбработкаВнешнегоСобытия(Источник,Событие,Данные) ... ИначеЕсли Событие = "ВводСимвола" Тогда Список.ДобавитьЗначение(Симв(Данные)); КонецЕсли; КонецПроцедуры Функция НомерТовара(Ном) ш=0; Символ=""; Если Список.РазмерСписка()<>0 Тогда Для ш=1 по Список.РазмерСписка() Цикл Символ = Символ+Список.ПолучитьЗначение(ш); Продолжить; КонецЦикла; Возврат Символ; КонецЕсли; КонецФункции задуманное получилось в текст возвращается набранный номер. Но теперь какой то глюк с ТЧ т.е. не получается ничего забить... сразу идет прерывание поле нажатие Кнопки клв. как я понял. Может кто подскажет как решаются подобные задачи :( ? | |||
| 1
    
        Rie 19.01.12✎ 08:24 | 
        (0)
  а) Параметр ФСО там ведь не зря стоит. б) Реагируй только на те клавиши, которые тебе нужны. Прочие же - пусть стандартно обрабатываются. в) Зачем изврат с внешним событием? Уже поймал - ну и обработай тут же. | |||
| 2
    
        Junior1s 19.01.12✎ 08:26 | 
        (1) точно про ФСО забыл :(
  +(0) Клавиатура (NumLock) почему то не цифры вводит. Это так и должно быть ? | |||
| 3
    
        Rie 19.01.12✎ 08:33 | 
        (2) По умолчанию ФСО = 1
  Код клавиши и символ - разные вещи (это насчёт NumPad). Анализируй коды клавиш - не ошибёшься. | |||
| 4
    
        Junior1s 19.01.12✎ 08:34 | 
        Спасибо.     | |||
| 5
    
        Junior1s 19.01.12✎ 09:03 | 
        кхм, 
  (1) Исправил ошибки, но теперь текст пуст. Функция НомерТовара(Ном) ш=0; Символ=""; Список.ДобавитьЗначение(Ном); Сообщить(Список.РазмерСписка()); Если Список.РазмерСписка()<>0 Тогда Для ш=1 по Список.РазмерСписка() Цикл Символ = Символ+Список.ПолучитьЗначение(ш); Продолжить; КонецЦикла; Возврат Символ; КонецЕсли; //Форма.Обновить(0); КонецФункции Процедура ПриНажатииКнопкиКлавиатуры(_Кнопка,_АЛТ,_ШИФТ,_КОНТРЛ,_Символ,_ФСО) Сообщить(_Кнопка); Сообщить(_Символ); Если (_Кнопка = 49) Тогда НомерТовара(Симв(_Кнопка)); ИначеЕсли (_Кнопка = 97) Тогда НомерТовара(_Символ); КонецЕсли; //Сервис.ВнешнееСобытие("Formex","ВводСимвола",_Символ); КонецПроцедуры Добавлял Форму.Обновить() тогда первый символ разглядеть можно. Не пойму :( через отладчик все путем идет все как нужно... из за чего может быть что Поле Текст пусто ? | |||
| 6
    
        Rie 19.01.12✎ 09:06 | 
        (5) Так а Список-то у тебя никто не меняет? А НомерТовара доблестно пытается именно из этого списка получать данные.     | |||
| 7
    
        Junior1s 19.01.12✎ 09:09 | 
        меняет... я решил сразу добавлять в список в функции... хотя сейчас перекинул, непомогло :( Самое главное что Размер его постоянно растет при нужном нажатии клавиш, и в отладчики все путем идет... :(     | |||
| 8
    
        Junior1s 19.01.12✎ 09:09 | 
        +(7) а Поле ТЕКСТ пустое...     | |||
| 9
    
        Junior1s 19.01.12✎ 09:25 | 
        Решил. Перенес Форму Обновить из функции в Процедуру ПриНажатииКнопкиКлавиатуры(..) сработало.     | |||
| 10
    
        Junior1s 20.01.12✎ 09:53 | 
        Елки =(
  никак не получается запретить вызов процедуры. Процедура ПриНажатииКнопкиКлавиатуры(_Кнопка,_АЛТ,_ШИФТ,_КОНТРЛ,_Символ,_ФСО) //Сообщить(_Кнопка); Если (_Кнопка = 48) Тогда НомерТовара(Симв(_Кнопка)); ИначеЕсли (_Кнопка = 49) Тогда НомерТовара(Симв(_Кнопка)); ИначеЕсли (_Кнопка = 50) Тогда НомерТовара(Симв(_Кнопка)); ИначеЕсли (_Кнопка = 51) Тогда НомерТовара(Симв(_Кнопка)); ИначеЕсли (_Кнопка = 52) Тогда НомерТовара(Симв(_Кнопка)); ИначеЕсли (_Кнопка = 53) Тогда НомерТовара(Симв(_Кнопка)); ИначеЕсли (_Кнопка = 54) Тогда НомерТовара(Симв(_Кнопка)); ИначеЕсли (_Кнопка = 55) Тогда НомерТовара(Симв(_Кнопка)); ИначеЕсли (_Кнопка = 56) Тогда НомерТовара(Симв(_Кнопка)); ИначеЕсли (_Кнопка = 57) Тогда НомерТовара(Симв(_Кнопка)); ИначеЕсли (_Кнопка = 96) Тогда НомерТовара(_Символ); ИначеЕсли (_Кнопка = 97) Тогда НомерТовара(_Символ); ИначеЕсли (_Кнопка = 98) Тогда НомерТовара(_Символ); ИначеЕсли (_Кнопка = 99) Тогда НомерТовара(_Символ); ИначеЕсли (_Кнопка = 100) Тогда НомерТовара(_Символ); ИначеЕсли (_Кнопка = 101) Тогда НомерТовара(_Символ); ИначеЕсли (_Кнопка = 102) Тогда НомерТовара(_Символ); ИначеЕсли (_Кнопка = 103) Тогда НомерТовара(_Символ); ИначеЕсли (_Кнопка = 104) Тогда НомерТовара(_Символ); ИначеЕсли (_Кнопка = 105) Тогда НомерТовара(_Символ); Иначе _ФСО = 0; КонецЕсли; КонецПроцедуры По идеи ведь если _Кнопка не равна не одному из Условий то _ФОС = 0. но Клавиатура совсем не работает... :( Как правильно использовать "Ключ" ФСО в этой пр. процедуре... | |||
| 11
    
        1Сергей 20.01.12✎ 09:55 | 
        _ФСО = 0; // отменить стандартный ффод     | |||
| 12
    
        Junior1s 20.01.12✎ 09:58 | 
        не понял, где не так ?     | |||
| 13
    
        antoneus 20.01.12✎ 09:58 | 
        (10) давно не видел вживую китайского кода...     | |||
| 14
    
        Ёпрст гуру 20.01.12✎ 10:00 | 
        (12) везде, фсо=0 воткни ДО всех условий и фсо=1 в ветку иначе:
  фсо=0; Если (_Кнопка = 48) Тогда НомерТовара(Симв(_Кнопка)); ..... Иначе фсо =1; КонецЕсли; ЗЫ : и есть еще ПриОтжатииКнопкиКлавиатуры, если че | |||
| 15
    
        Junior1s 20.01.12✎ 10:23 | 
        (13) конечно моно и в одно условие, а моно и в списке искать. сделал как сделал. как правило потом все равно переписывать, я ж студент...     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |