Справочное руководство по TDMS 7.0 API
ObjectPropertiesDlgShow Событие
Смотри также  Пример  Отправить замечание
pObject
Объект, окно свойств которого должно быть показано.
bCancel
TRUE отменяет вывод на экран окна свойств объекта.
pForms
Коллекция форм (за исключением формы "Все атрибуты"), которые будут показаны в Окне свойств.
TDMSApplication Объект : ObjectPropertiesDlgShow Событие

Glossary Item Box

Описание

Генерируется перед выводом на экран Окна свойств объекта.

Опеделение

Visual Basic
Public Event ObjectPropertiesDlgShow( _
   ByVal pObject As TDMSObject, _
   ByRef bCancel As Boolean, _
   ByVal pForms As TDMSInputForms _
)

Параметры

pObject
Объект, окно свойств которого должно быть показано.
bCancel
TRUE отменяет вывод на экран окна свойств объекта.
pForms
Коллекция форм (за исключением формы "Все атрибуты"), которые будут показаны в Окне свойств.

Заметки

Использование обработки события может быть полезным, когда необходимо добавить/удалить формы в Окне свойств или отменить вывод окна на экран по какому-либо условию.

1. Событие является отменяемым: присвоением параметру bCancel значения TRUE можно отменить вывод на экран диалога свойств объекта.

2. Обработчик может быть размещен в скриптах объекта, профиля и/или общесистемном. Если обработчики определены на всех уровнях, то последовательность их вызова такова:

  • скрипт объекта;
  • скрипт профиля пользователя;
  • общесистемный скрипт.

Если на каком-либо уровне событие было отменено (параметру bCancel присвоено значение TRUE), то обработчики события, размещенные на последующих уровнях, вызваны не будут.

3. Схему последовательности генерации событий при редактировании атрибутов объекта в окне свойств см. на рисунке:

4. Событие генерируется перед выводом диалога свойств объекта на экран. Событие не наступает при показе свойств объекта на Панели свойств главного окна приложения. Для того, чтобы событие генерировалось при работе через API (например, при вызове метода EditObjectDlg.Show Метод), должен быть включен вызов объектных событий в Окне свойств базы данных (см. рисунок).

Пример

VB Script (Visual Basic)Скопировать код
'======================================================================
'Текст обработчика может быть размещен в скрипте объекта, 
'профиля или общесистемном скрипте.

Sub Object_PropertiesDlgShow(Obj, Cancel)
        
        'В этот момент можно изменить любые свойства объекта, 
        'а также отменить вывод окна свойств на экран
        msg = "Запретить редактирование атрибутов объекта?" 
        RetVal = MsgBox(msg, vbYesNoCancel + vbQuestion, "Открытие окна свойств объекта")
        
        If RetVal = vbYes Then
                'Мы хотим отключить все элементы управления формы, но через frm.Controls
                'этого сделать нельзя - требуется использование спец. переменной ThisForm. 
                'Временно заменим скрипт формы, сохранив старый; в момент открытия формы, после
                'того как элементы управления будут отключены, он будет восстановлен
                Set frm = Obj.ObjectDef.InputForms(0)
                Set Dict = ThisApplication.Dictionary 'глобальная переменная, которая будет хранить
                                                    'старый скрипт формы
                Dict("SavedScript") = frm.Script
                
                'Создадим новый скрипт формы
                Script = "Sub Form_BeforeShow(Form, Obj)" & Chr(13) & _
                        "                For Each ctrl In ThisForm.Controls"  & Chr(13) & _ 
                        "                        ctrl.ReadOnly = TRUE"  & Chr(13) & _
                        "                Next"  & Chr(13) & _
                        "            Set Dict = ThisApplication.Dictionary"   & Chr(13) & _
                        "            ThisForm.Script = Dict(""SavedScript"")" & _
                        Chr(13) & "End Sub"
                
                'Теперь присвоим форме новый скрипт. В момент обработки события Form_BeforeShow
                'элементы управления формы будут отключены
                frm.Script = Script 
                frm.Refresh
                Exit Sub
                
        ElseIf RetVal = vbCancel Then
                'Отменить вывод формы на экран
                Cancel = True
                Exit Sub
                
        Else:
                'Просто разрешить открытие окна свойств в обычном режиме
                Exit Sub
        End If                
End Sub
'======================================================================

Смотри также

© 2023 CSoft Development. Все права защищены.