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
- Объект, которому принадлежит форма ввода. Если форма открыта методом TDMSInputForm.Show Метод, значение аргумента pObject = Nothing.
- pAttribute
- Ссылка на атрибут, значение которого было изменено.
- bCancel
- TRUE - отменить изменение значения атрибута.
- pOldAttribute
- Предыдущее значение атрибута (до наступления события).
1. При изменении значения любых атрибутов (кроме табличных) информация в базе данных не обновляется немедленно, а хранится локально. Таким образом, при многократном изменении значения атрибута все промежуточные данные не хранятся, кроме первоначального, предпоследнего и последнего (эти два передаются обработчику в качестве аргументов). Фактическое изменение значения атрибута производится после наступления события TDMSApplication.ObjectBeforeModify Событие (выполняется проверка уникальности и наличия данных, если требуется, а затем обновляется таблица атрибутов на сервере).
2. Событие является отменяемым: если параметру bCancel присвоено значение TRUE, любое изменение значения атрибута будет немедленно отменено при потере фокуса ввода элементом формы. Т.е. при переходе в любое другое поле предыдущее значение измененного атрибута будет тут же восстановлено.
3. Обработчик может быть размещен в скриптах формы ввода, профиля и/или общесистемном. Если обработчики определены на всех уровнях, то последовательность их вызова такова:
- скрипт формы ввода;
- скрипт профиля пользователя;
- общесистемный скрипт.
Если на каком-либо уровне событие было отменено (параметру bCancel присвоено значение TRUE), то обработчики события, размещенные на последующих уровнях, вызваны не будут.
4. Схему последовательности генерации событий при редактировании атрибутов объекта в окне свойств см. на рисунке:
5. Для того, чтобы событие генерировалось при работе через API, должен быть включен вызов объектных событий в Окне свойств базы данных (см. рисунок).
VB Script (Visual Basic) | ![]() |
---|---|
'====================================================================== 'Текст обработчика может быть размещен в скрипте формы, профиля или 'общесистемном скрипте. Sub Form_AttributeChange(Form, Obj, Attribute, Cancel, OldAttribute) 'Запросить подтверждение изменения атрибута msg = "Вы действительно хотите заменить значение атрибута " & Attribute.Description & _ Chr(13) & " со старого значения """ & OldAttribute.Value & """ на новое """ & _ Attribute.Value & """?" If ((MsgBox(msg, vbYesNo + vbQuestion, "Подтверждение изменений")) <> VbYes) Then Cancel = True End If End Sub '====================================================================== |