В рамках проверки схемы при наличии вопросов в документе 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