EIP. Ручная проверка значения вводимого поля
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
-
- ✯ Ветеран ✯
- Сообщения: 5160
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
EIP. Ручная проверка значения вводимого поля
С10. Поле типа SPIN. Проверяю правильность ввода значения в методе TakeAccepted этого Field Manager'а. Оказалось, что на нажатие мышкой в другое поле этот метод не вызывается. Вызывается при записи, но в этом случае не происходит отказ от записи. Как не дать записаться и продолжить редактирование.
We are hard at work… for you. 

- Игорь Столяров
- Ветеран движения
- Сообщения: 8031
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 96 раз
EIP. Ручная проверка значения вводимого поля
Немного размытое определение "правильность ввода" ...
Если проверяется на диапазон значений, нужно проверить установки SELF.FEQ{PROP:RangeLow} / SELF.FEQ{PROP:RangeHigh}
методе EditInPlace::The:MyField.Init. Потому, что например проверка на 0 (меньше / больше нуля) шаблоном игнорируется
и ее приходится включать "ручками" ... И все работает при любом завершении ввода в поле ...
Или нужна более подробная информация о том, как проверяется "правильность ввода".
Если проверяется на диапазон значений, нужно проверить установки SELF.FEQ{PROP:RangeLow} / SELF.FEQ{PROP:RangeHigh}
методе EditInPlace::The:MyField.Init. Потому, что например проверка на 0 (меньше / больше нуля) шаблоном игнорируется
и ее приходится включать "ручками" ... И все работает при любом завершении ввода в поле ...
Или нужна более подробная информация о том, как проверяется "правильность ввода".

Make Clarion Great Again ! 
-
- ✯ Ветеран ✯
- Сообщения: 5160
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
EIP. Ручная проверка значения вводимого поля
Нет. Мне нужно залезть в базу и проверить значение (есть ли такое уже), и, если есть, то оставить редактирование, банальный ручной код (аналог формы - проверка на нажатие OK и select на проблемное поле). Где это сделать? Пока докопал, что хорошо с этим справляется метод TakeAcceptedAll менеджера. Завтра посмотрю, что там написано в родительском классе. Хочу посмотреть - можно ли возвратить редактирование именно на проблемный столбец.
Стояла нужная проверка на методе TakeAccepted "проблемного" столбца, было всё хорошо (и в хелпе написано - если в этом методе возвращаете 0, то ничего не происходит, редактирование этого поля продолжается). Но, оказалось, что нажатие мышкой в любое место листа или окна не провоцирует вызов этого метода. И то, что контрол - SPIN, оказалось не важно, с Entry тоже самое. Я подумал, что может Alert'ы у Spin'а другие. Ан нет.
Стояла нужная проверка на методе TakeAccepted "проблемного" столбца, было всё хорошо (и в хелпе написано - если в этом методе возвращаете 0, то ничего не происходит, редактирование этого поля продолжается). Но, оказалось, что нажатие мышкой в любое место листа или окна не провоцирует вызов этого метода. И то, что контрол - SPIN, оказалось не важно, с Entry тоже самое. Я подумал, что может Alert'ы у Spin'а другие. Ан нет.
We are hard at work… for you. 

-
- ✯ Ветеран ✯
- Сообщения: 5160
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
EIP. Ручная проверка значения вводимого поля
Если кому надо. Посмотрел родительский класс. И сделал так. В методе EIP менеджера TakeAcceptAll после Parent Call:
Код: Выделить всё
! Проверяем условие
...
if ... ! Условие не выполняется
self.ClearColumn()
self.Column = 1 ! Возвращаю редактирование на первый столбец, у меня первый - "проблемный"
self.Again = 1
self.ResetColumn()
ReturnValue = 0
end
We are hard at work… for you. 
