EIP. Ручная проверка значения вводимого поля

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
kreator
✯ Ветеран ✯
Сообщения: 5160
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

EIP. Ручная проверка значения вводимого поля

Сообщение kreator »

С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 (меньше / больше нуля) шаблоном игнорируется
и ее приходится включать "ручками" ... И все работает при любом завершении ввода в поле ...

Или нужна более подробная информация о том, как проверяется "правильность ввода". ;)
Make Clarion Great Again ! 😎
kreator
✯ Ветеран ✯
Сообщения: 5160
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

EIP. Ручная проверка значения вводимого поля

Сообщение kreator »

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

EIP. Ручная проверка значения вводимого поля

Сообщение kreator »

Если кому надо. Посмотрел родительский класс. И сделал так. В методе 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. :)
Ответить