Показать сообщение отдельно
Старый 19.11.2008, 14:08   #4  
TasmanianDevil is offline
TasmanianDevil
Мрачный тип
Аватар для TasmanianDevil
Злыдни
 
885 / 389 (14) ++++++
Регистрация: 24.01.2005
Адрес: Томск
Цитата:
Сообщение от ZVV Посмотреть сообщение
Это не связано с этими темами никак:
И снова про Relation
Вот эта тема, а точнее упоминание gloomie о срабатывании validateField() после изменения значения поля на форме, подвигла на продолжение эксперимента.
На моей форме изначально не было контрола, ассоциированного с изменяемым полем - добавил для чистоты эксперимента и поставил breakpoint'ы на его modified(), validate() и validateField() на таблицу.
Использовал 4 варианта по два раза - с включенными и отключенными breakpoint'ами для отлова вызова :

1) Изменение поля через прямой lookup()
2) Изменение поля прямым ручным вводом в него
3) Изменение поля косвенно через edit-методом
4) Изменение поля косвенно через ручной ввод в поле с edit-методом

Поле менялось всегда - как в самой таблице, так и в контроле во всех случаях, однако только в первых двух случаях срабатывал breakpoint в validateField() на таблице и выдавал следующий стек

[c] \Data Dictionary\Tables\MyTable\Methods\validateField
[c] \Classes\FormDataObject\validate
[c] \Forms\MyForm\Data Sources\MyTable\Fields\MyField\Methods\validate
[c] \Classes\FormStringControl\Modified

В 3 и 4 случаях не срабатывал ни один из breakpoint'ов ...

Т.е. изменение поля внешним прямым воздействием через форму (lookup, ручной ввод) инициирует выполнение у контрола с этим полем метода modified() и дальнейшую цепочку вызовов до validateField() . Но внутреннее изменение значения контрола через изменение его поля в табличной переменной (edit-методом, ручным вводом в поле edit-метода) - не вызывает у контрола с модифицируемым полем modified() и не порождает цепочки вызовов до validateField().

IMHO, баг ...
__________________
Мы летаем, кружимся, нагоняем ужасы ...

Последний раз редактировалось TasmanianDevil; 19.11.2008 в 14:27.