30.12.2009, 13:13 | #1 |
Участник
|
Давно уже мною было замечен следующий факт:
1.пишем OnLookup триггер для поля выбранной нами таблицы: как самый надежный вариант можно воспользоваться данным шаблоном: Код: WITH Cust DO BEGIN Cust := Rec; Dept.Code := "Department Code"; IF FORM.RUNMODAL(O,Dept) = Action::LookupOK THEN BEGIN "Department Code" := Dept.Code; VALIDATE("Department Code"); Rec := Cust; END; END; 2.В списочной форме для указанной таблицы вызываем фильтр поля (или таблицы) и вызываем, для удобства, опять же - LookUp - 3.Результат такого вызова, в случае предопределенного OnLookup (Fields) Trigger, будет то, что мы изменим значение выбранного поля, а не значение фильтра. Ясно, что данный эффект является нежелательный, и самый простой способ его обойти - переопределять триггеры на формах, а не на таблицах. Но... такое переопределение на табличных триггерах встречается в оригинальном коде, кроме того нигде не сказано, что так делать не совсем корректно. Можно ли как-то правильно обрабатывать вызовы Lookup из форм для фильтров, или хотя бы предотвращать изменение значения поля в этих случаях? |
|