Страница 1 из 1

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

Добавлено: 13 Сентябрь 2016, 14:38
kreator
С10. Поле типа SPIN. Проверяю правильность ввода значения в методе TakeAccepted этого Field Manager'а. Оказалось, что на нажатие мышкой в другое поле этот метод не вызывается. Вызывается при записи, но в этом случае не происходит отказ от записи. Как не дать записаться и продолжить редактирование.

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

Добавлено: 13 Сентябрь 2016, 18:32
Игорь Столяров
Немного размытое определение "правильность ввода" ...
Если проверяется на диапазон значений, нужно проверить установки SELF.FEQ{PROP:RangeLow} / SELF.FEQ{PROP:RangeHigh}
методе EditInPlace::The:MyField.Init. Потому, что например проверка на 0 (меньше / больше нуля) шаблоном игнорируется
и ее приходится включать "ручками" ... И все работает при любом завершении ввода в поле ...

Или нужна более подробная информация о том, как проверяется "правильность ввода". ;)

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

Добавлено: 13 Сентябрь 2016, 22:18
kreator
Нет. Мне нужно залезть в базу и проверить значение (есть ли такое уже), и, если есть, то оставить редактирование, банальный ручной код (аналог формы - проверка на нажатие OK и select на проблемное поле). Где это сделать? Пока докопал, что хорошо с этим справляется метод TakeAcceptedAll менеджера. Завтра посмотрю, что там написано в родительском классе. Хочу посмотреть - можно ли возвратить редактирование именно на проблемный столбец.
Стояла нужная проверка на методе TakeAccepted "проблемного" столбца, было всё хорошо (и в хелпе написано - если в этом методе возвращаете 0, то ничего не происходит, редактирование этого поля продолжается). Но, оказалось, что нажатие мышкой в любое место листа или окна не провоцирует вызов этого метода. И то, что контрол - SPIN, оказалось не важно, с Entry тоже самое. Я подумал, что может Alert'ы у Spin'а другие. Ан нет.

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

Добавлено: 14 Сентябрь 2016, 10:45
kreator
Если кому надо. Посмотрел родительский класс. И сделал так. В методе EIP менеджера TakeAcceptAll после Parent Call:

Код: Выделить всё

! Проверяем условие
  ...
if ...	! Условие не выполняется
    self.ClearColumn()
    self.Column = 1		! Возвращаю редактирование на первый столбец, у меня первый - "проблемный"
    self.Again = 1
    self.ResetColumn()
    ReturnValue = 0
end