|
![]() |
#1 |
Участник
|
Цитата:
Сообщение от AlexB
![]() Триггер OnInputChange() срабатывает ВО ВРЕМЯ ввода данных,
т.е. вы вводите стринг из трёх букв "абв" == > этот триггер срабатывает 3 раза, т.е. ВО ВРЕМЯ ввода каждой буквы То, что Вам нужно, это триггер OnAfterInput(), он срабатывает ПОСЛЕ OnInputChange() и ещё ДО OnValidate() например в поле "Description": Код: Description - OnAfterInput(VAR Text : Text[1024];) IF Text <> '' THEN BEGIN // ваш программный код ...... ...... END; Чтобы узнать, в каком порядке отрабытавают триггеры, пропишите просто CONFIRM-Диалог в каждом триггере (в форме и в таблице), в C/AL HELP'e тоже кое-что нaписано. Спасибо большое! Когда переходишь с других платформ, тяжелее всего не к синтаксису привыкнуть, не к языку, тяжелее всего проникнуться другой логикой и начать думать в рамках этой новой логики. Ведь по сути элементарный вопрос, мог бы и сам догадаться, но я даже Ваше объяснение не сразу понял... Ещё раз спасибо большое! |
|
![]() |
#2 |
Участник
|
Цитата:
Сообщение от Predatore
![]() Возможно я не уловил сути триггера OnInputChange, т.к. я пытался в нём делать проверку, есть ли текст в поле TextBox'a, а он там видимо появляется только после валидейта, я правильно понял? А в OnAfterInput в переменной Text как раз таки и идёт поток именно вводимой информации. Т.е. если я введу стринг 'абв', то этот триггер тоже сработает 3 раза, а переменная Text будет меняться следующим образом, сначала Text='а', потом Text='аб' и в конце Text='абв', я всё правильно понял?
OnAferInput() срабатывает только один раз, a именно после того как вы сделали изменения в TextBoxe и ПОКИНУЛИ поле (посредством ENTER или TAB) т.е. закончили ввод данных, и переменная TEXT содержит ВСЁ содержимое (извините за тавтологию) поля. Этот триггер срабатывает также без всяких изменений, т.е. при F2-Validate (т.е. щёлкаете в поле, нажимаете 2 раза F2 и ENTER, тем самым валидируете поле, не произведя в нём никаких изменений). Последовательность срабатывания некоторых триггеров в (форме и таблице) при вводе данных в текстбоксе в форме: 1. OnInputChange() в текстбоксе на форме 2. OnAfterInput() в текстбоксе на форме 3. OnValidate() поля в таблице 4. ОnValidate поля в текстбоксе на форме 5. ОnAfterValidate поля в текстбоксе на форме ==> внимание: ERROR в этом триггере закрывает форму, что не всегда красиво |
|