Создание настраиваемых правил проверки: Использование 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