Visual Basic |
---|
Public Event FormAttributeChange( _ ByVal pForm As TDMSInputForm, _ ByVal pObject As TDMSObject, _ ByVal pAttribute As TDMSAttribute, _ ByRef bCancel As Boolean, _ ByVal pOldAttribute As TDMSAttribute _ ) |
- pForm
- Форма ввода, атрибуты которой редактируются.
- pObject
- Объект, которому принадлежит форма ввода. Если форма открыта методом ThisApplication.InputForms("FRM_ID").Show, значение аргумента pObject = Nothing.
- pAttribute
- Ссылка на атрибут, значение которого было изменено.
- bCancel
- TRUE - отменить изменение значения атрибута.
- pOldAttribute
- Предыдущее значение атрибута (до наступления события).
1. При изменении значения любых атрибутов (кроме табличных) информация в базе данных не обновляется немедленно, а хранится локально. Таким образом, при многократном изменении значения атрибута все промежуточные данные не хранятся, кроме первоначального, предпоследнего и последнего (эти два передаются обработчику в качестве аргументов). Фактическое изменение значения атрибута производится после наступления события ObjectBeforeModify (выполняется проверка уникальности и наличия данных, если требуется, а затем обновляется таблица атрибутов на сервере).
2. Событие является отменяемым: если параметру bCancel присвоено значение TRUE, любое изменение значения атрибута будет немедленно отменено при потере фокуса ввода элементом формы. Т.е. при переходе в любое другое поле предыдущее значение измененного атрибута будет тут же восстановлено.
3. Обработчик может быть размещен в скриптах формы ввода, профиля и/или общесистемном (см. рисунок). Если обработчики определены на всех уровнях, то последовательность их вызова такова:
- скрипт формы ввода;
- скрипт профиля пользователя;
- общесистемный скрипт.
Если на каком-либо уровне событие было отменено (параметру bCancel присвоено значение TRUE), то обработчики события, размещенные на последующих уровнях, вызваны не будут.
4. Схему последовательности генерации событий при редактировании атрибутов объекта в окне свойств см. на рисунке.
5. Для того, чтобы событие генерировалось при работе через API, должен быть включен вызов объектных событий в Окне свойств базы данных (см. рисунок).