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