v7: FormEx: ПриНажатииКнопкиКлавиатуры #581026


#0 by AL CAPONE
Принажатии на клаве "m" месага выскакивает, но сумма не изменяется. Если же к примеру повесить на кнопку Сумма = Сумма * 1000; всё отрабатывает безупречно. В чём всё таки загвоздка ?
#1 by AL CAPONE
Сумма - реквизит табличной части типа "Число.15.0"
#2 by Ткачев
Что то мне кажется что Функцию надо и Возврат (Сумма * 1000);
#3 by AL CAPONE
не, в FormEx это предопределённая процедура Процедура ПриНажатииКнопкиКлавиатуры(<?>,,,,,) КонецПроцедуры Синтаксис: КонецПроцедуры Назначение: Предопределенная процедура при нажатии кнопки клавиатуры. Параметры: <КодКлавиши> - код нажатой кнопки клавиатуры. <Alt> - флаг нажатия кнопки <Shift> - флаг нажатия кнопки <Ctrl> - флаг нажатия кнопки <Символ> - символ нажатой кнопки в формате ASCII. <ФСО> - флаг стандартной обработки. Изначально равен 1. Если в теле процедуры сбросить значение в 0, то стандартная обработка события не вызывается.
#4 by Tatitutu
в том что это реквизит табличной части
#5 by akaBrr
Как отображается сумма?
#6 by Tatitutu
Попробуй так: УстановитьАтрибут("Сумма",НовоеЗначение)
#7 by antoneus
умврчяднт?
#8 by AL CAPONE
но по кнопке то отрабатывает т.е. ? Процедура не обнаружена (УстановитьАтрибут)
#9 by FN
Форма.Обновить - ?
#10 by Ёпрст
В ПриОтжатииКнопкиКлавы делай.
#11 by AL CAPONE
(9,10) не помогает :(
#12 by AL CAPONE
Отладчик показывает, что значение Сумма увеличилось на 3 нуля, но на форме сумма не изменяется.
#13 by FN
ну тогда точно Форма.Обновить Для проверки - нажми в документ "м", сохрани/закрой док и открой заново
#14 by Ёпрст
#15 by Ёпрст
Достаточно по строкам "побегать"
#16 by AL CAPONE
Добавил Форма.Обновить, но это ПЗДЦ Захожу в сумму, набираю "1", жму "m", нихера, в процедуру заходит, значение Суммы увеличивает на 3 нуля, на форме "1". Если перед этим тискануть на кнопку с формулой Сумма = Сумма * 1000;, на форме становится "1.000.000", потом стать в поле суммы и нажать "m", начинает отрабатывать и на форме нормально, становится "1.000.000" и т.д.
#17 by FN
>Захожу в сумму, набираю "1", <ЖМУ ЭНТЕР> жму "m"... Иначе переписывай через сендкей "0","0","0"
#18 by FN
+ Либо делай ложное закрытие формы (тогда "1" запишется в значение реквизита), а потом *1000
#19 by AL CAPONE
нет, Enter-а там нету, сразу после цифры жму забитую в проге кнопку "m", процедура отрабатывает, но форма не обновляется; если же перед этим тискануть на кнопку с формулой Сумма = Сумма * 1000, на форме 1.000, и далее уже после "m" 1.000.000 1.000.000.000 и т.д.
#20 by Ёпрст
дословно скопируй код из и проверь
#21 by AL CAPONE
Хз почему, но не работает :( Попробовал так При входе в сумму жму "1", далее "m", ничего не происходит, но курсор становится перед цифрой 1, после второго и последующих нажатий "m" наконец-то получается 1.000 , 1.000.000 и т.д.
#22 by Ёпрст
ты читать то умеешь ? Скопируй дословно код из .
#23 by AL CAPONE
НЕ РАБОТАЕТ ЭТОТ КОД, ну не обновляет форму и всё тут
#24 by Ёпрст
врешь. я проверил - всё работает
#25 by AL CAPONE
ну значит форма какая-то заколдованная
#26 by zuza
флаг в ноль поставь Флаг = 0;
#27 by AL CAPONE
да пробовал дословно, ну не отрабатывает как надо :(((
#28 by FN
Должно работать и в процессе редактирования реквизита и просто при активном элементе.
#29 by AL CAPONE
Отрабатывает твоя процедура, но уже на сохранённом значении Суммы. Если же вводится в сумму новое значение "1", то после нажатия "m" процедура отрабатывает, но на форме в сумме становится "0" о_О Если же в ячёйке Суммы уже 1 и ячейка сохранена, то при нажатии "m" на ней становится 1.000 и т.д.
#30 by AL CAPONE
это то же самое, что у меня в , работает но только после второго нажатия "m", после первого только и всего, что курсор становится перед числом.
#31 by FN
вот так будет работать, но это не надежно - есть вариант, что за эту секунду изменится текущая строка.
#32 by AL CAPONE
мудрёно, попробую, спасибо за помощь !
#33 by Ёпрст
ясен пень, а ты как хотел ? Ввод еще не окончен, в реквизите Сумма =0 еще при этом.
#34 by AL CAPONE
ну вот, а юзверь хочет как раз на лету эти цифры добавлять, когда в ячейке ещё числа и не было сохранено
#35 by Ёпрст
тогда придЁтся отлавливать каждое нажатие, и запоминать полученное значение в своей переменной. Потом уже умножать на значение этой переменной.
#36 by Ёпрст
+35 либо по нажатию на "m" посылать ентер в начале (рули флагом фсо отмены в предопределенной проце), чтоб ввод был зафиксирован и потом уже помножать.
#37 by AL CAPONE
что-то типа проверять каждое значение в поле в диапазоне {0..9} и сразу копировать его в переменную ?
#38 by AL CAPONE
посылать Энтер - это чем же ?
#39 by Ёпрст
тем же формексом
#40 by Ёпрст
да. ЗЫ: если будешь эммулировать клавиатуру и посылать ентер, нужно будет втыкать еще "защиту от АЛьФа" - чтоб бесконечного цикла не получилось : нажимаешь-ловишь-нажимаешь-ловишь..
#41 by AL CAPONE
попробовал так после ввода 1 ячейка суммы Enter-ится, но значение в ней 0
#42 by AL CAPONE
Возможно всё не очень красиво, но вообщем работает так: объявил "Сум" глобальной переменной Всё как просил юзверь =)
#43 by Ёпрст
Можно так:
#44 by Ёпрст
ты не учитываешь выделение мышой + кнопки del и BackSpace + возможность вставки цифры в середине числа.
#45 by Ткачев
#46 by Ёпрст
Сумма - не реквизит формы, это раз,Форма.Сумма = Сумма; - это никогда не будет работать, даже если Сумма была бы реквизитом формы, а не документа, это два.
#47 by Ткачев
>Сумма - не реквизит формы А где тогда он сумму набирает ? ...
#48 by AL CAPONE
отрабатывает нормуль только 1 раз. Если нужно 6 нулей, уже не хочет. хм, даже не подумал ...
#49 by AL CAPONE
а вот и лекарство для BackSpace Если Код = 8 Тогда
#50 by Ёпрст
сумма  - это реквизит табличной части документа. Не путай теплое с мягким в смысле ? У меня работает.. проверено. Сколько раз m нажал, столько и помножит, не зависимо от того, когда вводить начали
#51 by AL CAPONE
по первому нажатию "m" поле теряет фокус почему-то, и второе соотв. не срабатывает. Юзверя всё устроило, уря, оставлю пожалуй свой вариант проги, как-то он понятнее, без обид Ёпрст3. Всем спасибо за помощь !
#52 by Ёпрст
ну дык, сделай тогда Сервис.ЭмулироватьКлавиатуру("{ENTER 2}"); + еще нажатие end или home чтоб курсор был там где надо Будет тебе реквизит в режиме редактирования всегда
#53 by ChMikle
ЗА оффтопик извините , но читал вчера ваш пример на инфостате об изменении шрифтов на форме посредством вышеуказанной компоненты ,  набил все это у себя , ругается на неизвестный объект "Зум" , не вразумите , может еще какие библиотеки надо подключать ....
#54 by FN
Может это про какой-то мой пример? а то у меня есть класс Зум и он как раз на инфостарте лежит...
#55 by ChMikle
был вроде Епрст , ну подскажите вы буду благодарен
#56 by ChMikle
вобщем хелп (тихо так, глядя в моник) :)
#57 by Ёпрст
для работы этого класса нужно загрузить 1cpp.dll и formex.dll
#58 by ChMikle
Загрузил , на закладке параметры появились обе библиотЭки,и пример вбил в исходник формы , но ругается .... хотя другой пример с бибилиотекой Formex работал
#59 by Ёпрст
это ты автора класса спрашивай, мне лень глядеть что там.
#60 by antoneus
ругается на неизвестный объект "Зум"? класс-то зарегистрировал?
#61 by ChMikle
да вроде да , буду в районе 19 часов за базой подробно напишу , вы на связи не будете , а то идея классная и как раз мне нужна , там форму подбора для сенсерного экрана одного размер шрифта табличной части , а для операторского другого , вот хочется этой библиотекой воспользоваться
#62 by FN
Это я автор. Если будут вопросы - пиши на fninbox.ru
#63 by ChMikle
а вы в 19 на форуме будуте или в аське ....
#64 by ChMikle
19 часов :)
#65 by FN
в 19 по Москве я наверное смогу быть только в гугл-толке
#66 by ChMikle
а после 19 часов по мск , я с 19 до 21 буду около базы , отписался бы ... :) по почте долго , а ссылок нет на описание функционала
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С