Справочное руководство по TDMS 7.0 API
Has Метод
Смотри также  Пример  Отправить замечание
SignDef
Порядковый номер, ссылка на объект TDMSSignDef Объект, дескриптор TDMSSignDef.Handle Свойство, системное имя TDMSSignDef.SysName Свойство или описание TDMSSignDef.Description Свойство типа подписи.
TDMSSignDefs Коллекция : Has Метод

Glossary Item Box

Описание

Проверить наличие типа подписи в коллекции.

Опеделение

Visual Basic
Public Function Has( _
   ByVal SignDef As Variant _
) As Boolean

Параметры

SignDef
Порядковый номер, ссылка на объект TDMSSignDef Объект, дескриптор TDMSSignDef.Handle Свойство, системное имя TDMSSignDef.SysName Свойство или описание TDMSSignDef.Description Свойство типа подписи.

Тип возврата

TRUE - тип подписи найден в коллекции.

Пример

Example (VBScript)Скопировать код
Option Explicit
Call WorkWithSignDefs()




'==============================================================================
' Выполнить выбранные пользователем действия над коллекцией типов подписей.
' Выполнять скрипт может только системный администратор
'==============================================================================
Sub WorkWithSignDefs()
        
        Dim SelDlg, RetVal, strAction, ArActions, SignDefsCol
        
        ArActions = Array("Создать тип подписи", "Удалить тип подписи", _
                                "Вывести информацию обо всех типах подписей в приложении")
        
        'Предоставить пользователю выбрать действие 
        Set SelDlg = ThisApplication.Dialogs.SelectDlg
        SelDlg.SelectFrom = ArActions 
        SelDlg.Prompt = "Выберите действие:"
        RetVal = SelDlg.Show
        
        'Если пользователь отменил диалог или ничего не выбрал, закончить работу.
        'Диалог вернул массив, поскольку был инициализирован строковым массивом
        If (RetVal <> TRUE) Or (UBound(SelDlg.Objects)<0) Then Exit Sub
        
        'ПОлучить ссылку на коллекцию всех типов подписей, созданных в приложении
        Set SignDefsCol = ThisApplication.SignDefs
        
        'Если нет информации о типах подписей, выйти из процедуры
        If SignDefsCol.Count = 0 Then 
                MsgBox "Типы подписей в системе отсутствуют.", _
                        vbInformation, "Информация о текущей настройке"
                Exit Sub
        End If
        
        'Выполнить все заданные действия
        For Each strAction In SelDlg.Objects
                If StrComp(strAction, ArActions(0))=0 Then
                                                                                            Call CreateSignDef(SignDefsCol)
                ElseIf StrComp(strAction, ArActions(1))=0 Then
                                                                                            Call RemoveSignDef(SignDefsCol)
                ElseIf StrComp(strAction, ArActions(2))=0 Then
                                                                                            Call ShowInfo(SignDefsCol)
                End If
        Next
End Sub
'==============================================================================


'==============================================================================
'Создать новый тип подписи
'==============================================================================
Sub CreateSignDef(SignDefsCol)
        Dim NewSignDef, StrSysName, StrDescr, SelDlg, RetVal 
        
        'Запросить описание нового типа
        StrDescr = InputBox("Введите описание нового типа подписи:")
        'Если ничего не введено, выйти из процедуры
        If StrDescr="" Then Exit Sub
        
        'Проверить, существует ли системное имя типа; если да - запросить повторный ввод
        StrSysName = "SGN_TEST"
        While (SignDefsCol.Has(StrSysName))
                    StrSysName = InputBox("Введите другое сист. имя (" & StrSysName & " уже есть):",_
                                        , StrSysName)
                    'Если диалог отменен или введена пустая строка, выйти из процедуры
                    If StrSysName = "" Then Exit Sub
        Wend
        
        'Включим собственный перехват ошибок
        On Error Resume Next                        
        
        'Создать новый тип подписи в коллекции
        Set NewSignDef = SignDefsCol.Create
        'Задать значения свойствам нового типа
        With NewSignDef
                .Description = StrDescr
                .SysName = StrSysName
                .ShortDescription = "Test"
                .Comments(0) = "Тестовый первый комментарий"
                'Дадим право инициализации новой подписи роли "Разработчик" (RoleDefs это встроенная коллекция ролей, использующих подпись)
                .RoleDefs.Add ThisApplication.RoleDefs("ROLE_DEVELOPER")
        End With
        
        'В логах отладчика выводим идентификатор
        ThisApplication.DebugPrint("Идентификатор нового определения подписи - " & NewSignDef.Handle)
        'Если была ошибка...
        If Err<>0 Then         MsgBox "Ошибка создания типа подписи " & StrSysName & "." &_
                                Chr(13) & "Код ошибки: " & Err, vbExclamation
End Sub
'==============================================================================


'==============================================================================
'Удалить тип подписи из приложения.
'==============================================================================
Sub RemoveSignDef(SignDefsCol)
        Dim StrRet, index, SDef, RetVal
        
        'Запросить индекс типа подписи для удаления. Он не должен превышать количество 
        'типов, созданных в приложении
        StrRet = InputBox("Введите индекс типа подписи, который должен быть удален:" & Chr(13) &_
                         "(от 0 до " & SignDefsCol.Count-1 & "):")
        
        'Если введено не-число или диалог отменен, выйти из процедуры
        If (StrRet="") Or (Not IsNumeric(StrRet)) Then Exit Sub
        
        'Получить введенный индекс
        index = CLng(StrRet)
        
        'Возможно, введенное число выходит за границы допустимого диапазона
        If Not SignDefsCol.Has(index) Then
                MsgBox "Задан недопустимый индекс.", vbExclamation
                Exit Sub
        End If
        
        'Запросить подтверждение удаления
        Set SDef = SignDefsCol.Item(index)
        RetVal =     MsgBox("Удалить тип подписи """ & SDef.Description & """?", vbQuestion + vbYesNo)    
        
        'Если подтверждения нет, выйти из процедуры
        If RetVal <> vbYes Then Exit Sub
        
        'Попытаться удалить тип подписи. Включим собственный перехват ошибок
        On Error Resume Next
        
        'Удалить тип подписи из приложения
        MsgBox("Будет произведено удаление типа подписи № " & SignDefsCol.Index(Sdef))
        SignDefsCol.Remove(SDef)
        
        'Если ошибка, сообщить об этом
        If Err<>0 Then        MsgBox "Ошибка удаления типа подписи """ & SDef.Description & """." _
                            & Chr(13)    & "Код ошибки: " & Err, vbExclamation     
End Sub
'==============================================================================

'==============================================================================
' Вывести информацию обо всех типах подписей приложения
'==============================================================================
Sub ShowInfo(SignDefsCol)
        Dim StrInfo, SDef, RoleDef
        
        For Each SDef In SignDefsCol
        With SDef
                StrInfo = .Description & Chr(13)
                StrInfo = StrInfo & "Краткое описание: " & .ShortDescription & Chr(13)
                StrInfo = StrInfo & "Системное имя: " & .SysName & Chr(13)
                StrInfo = StrInfo & "Каким ролям разрешена инициализация: " & Chr(13)
                
                For Each RoleDef In .RoleDefs
                        StrInfo = StrInfo & RoleDef.Description & Chr(13)
                Next
                
                'Вывести информацию в окно сообщений
                ThisApplication.AddNotify(StrInfo)
        End With
        Next
        
End Sub
'==============================================================================

Смотри также

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