|
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) конечно моно и в одно условие, а моно и в списке искать. сделал как сделал. как правило потом все равно переписывать, я ж студент...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |