Создание настраиваемых правил проверки: Использование API для работы с окном «Вопросы»


В рамках проверки схемы при наличии вопросов в документе Visio открывает окно Вопросы. Окно Вопросы открывается после событий RuleSetValidated, и в нем отображаются вопросы, добавленные Visio и собственным кодом разработчика.  Если нужно, чтобы пользователи могли обращаться к окну Вопросы в любое другое время, его можно открывать и закрывать с помощью API.

 Представленный ниже код VBA проверяет активный документ на наличие вопросов. При наличии вопросов открывается окно Вопросы. В противном случае это окно закрывается.

VBA                                                                                                                         Скопировать код
Set vsoDocument = Visio.Activedocument
Set vsoWindow = vsoDocument.Application.ActiveWindow    

'Display the Issues window if there is at least one validation issue
    If vsoDocument.Validation.Issues.Count = 0 Then
        vsoWindow.Windows.ItemFromID(Visio.VisWinTypes.visWinIDValidationIssues).Visible = False
    Else
        vsoWindow.Windows.ItemFromID(Visio.VisWinTypes.visWinIDValidationIssues).Visible = False
    End If

Следующий код VBA определяет вопрос vsoValidationIssue, который выбран в окне Вопросы. Обратите внимание, что можно выбрать несколько вопросов. В этом случае Visio возвращает вопрос с фокусом клавиатуры или, если вопрос с фокусом клавиатуры отсутствует, первый выбранный вопрос.

VBA                                                                                                                         Скопировать код
Set vsoIssuesWindow = Application.ActiveWindow.Windows.ItemFromID(Visio.VisWinTypes.visWinIDValidationIssues)
    
'Find the selected issue if the Issues window is visible
    If vsoIssuesWindow.Visible Then
       Set vsoValidationIssue = vsoIssuesWindow.SelectedValidationIssue
    End If
    
 'Check for the case when there are no validation issues selected
    If vsoValidationIssue Is Nothing Then
        MsgBox "Please select an issue."
    End If


Comments (0)

Skip to main content