Форум пользователей Visio

Форум по вопросам применения и программирования в Visio
Текущее время: 12 ноя 2018, 21:44

Часовой пояс: UTC + 3 часа [ Летнее время ]


Правила форума


При размещении файлов предпочтительным является формат vsd (а не vsdx/vsdm)



Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Скрыть/отобразить слой через VBA
СообщениеДобавлено: 22 июн 2016, 14:08 
Не в сети

Зарегистрирован: 22 июн 2016, 13:17
Сообщений: 2
Использую Visio c: 2016
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
День добрый.

Видимо сани всё таки едут, а вот со мной что то не так.

Только начал работать с Visio.
Хочу сделать легенду к схеме, в которой можно отоброжать/скрывать слои.

В excel для отображения и скрытия листов использовал одну команду
Sheets(«Лист2»).Visible = False

Но по аналогии со слоями у меня не получилось.

Так как я не особо понимаю, что такое ShapeSheet начал действовать по старинке. А именно сделал запись макроса, в котором я скрываю слой.
В результате получил.

Код:
Private Sub CommandButton1_Click()
   'Enable diagram services
    Dim DiagramServices As Integer
    DiagramServices = ActiveDocument.DiagramServicesEnabled
    ActiveDocument.DiagramServicesEnabled = visServiceVersion140

    Dim UndoScopeID1 As Long
    UndoScopeID1 = Application.BeginUndoScope("Свойства слоя")
    Dim vsoLayer1 As Visio.Layer
    Set vsoLayer1 = Application.ActiveWindow.Page.Layers.Item(6)
    vsoLayer1.CellsC(visLayerVisible).FormulaU = "1"
    Application.EndUndoScope UndoScopeID1, True

    'Restore diagram services
    ActiveDocument.DiagramServicesEnabled = DiagramServices
End Sub

Не совсем понимаю зачем так много строк. И как именно проставить соответствие слой-его номер (почему тот слой который я скрыл оказался именно 6 для меня загадка).

Можно ли как то одной командой скрыть/отобразить слой?

p.S В идеале я ходел бы создать флажки. Поставил галочку - слой появился, убрал галочку - скрылся.

Заранее благодарен за помощь.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Скрыть/отобразить слой через VBA
СообщениеДобавлено: 22 июн 2016, 14:28 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3362
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
Temper писал(а):
Так как я не особо понимаю, что такое ShapeSheet начал действовать по старинке
это аналог таблицы в excel полностью описывающий свойства объекта (под объектом можно понимать документ визио, лист в документе, шейп (фигуру) на листе.
Temper писал(а):
Не совсем понимаю зачем так много строк.
это макро-рекордер столько лишнего написал. например UNDO добавил и т.п.
можно было ограничиться
Код:
Private Sub CommandButton1_Click()
    Dim vsoLayer1 As Visio.Layer
    Set vsoLayer1 = Application.ActiveWindow.Page.Layers.Item(6)
    vsoLayer1.CellsC(visLayerVisible).FormulaU = "1"
End Sub
тема со скрытием слоев у нас крайне популярна.
Surrogate в сообщении #8726 писал(а):
Temper писал(а):
И как именно проставить соответствие слой-его номер (почему тот слой который я скрыл оказался именно 6 для меня загадка).
в шейпшит листа номера слоя порядковые, значит интересующий слой был добавлен таким по счету. в окне свойств слоев, слои отсортированы по именам.
поэтому их очередность не совпадает с порядковыми номерами


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Скрыть/отобразить слой через VBA
СообщениеДобавлено: 22 июн 2016, 14:44 
Не в сети

Зарегистрирован: 22 июн 2016, 13:17
Сообщений: 2
Использую Visio c: 2016
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
С номером слоев понял и на кнопки сделал всё что мне нужно.

Теперь осталось определитсья с флажком. Как именно написать условие, что ему делать при поставленной галочке и при снятой?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Скрыть/отобразить слой через VBA
СообщениеДобавлено: 22 июн 2016, 15:03 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3362
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
Temper писал(а):
Теперь осталось определитсья с флажком
флажком где ?
на листе набрасывать флажки или на UserForm ?
если на листе была тема Скрыть объекты при щелчке на другой объект. В последнем сообщении, последний абзац
Surrogate писал(а):
экспериментировал с таким файлом, жмем Alt+F8 запускаем единственный макрос Porevo_with_layers
Внизу появятся кнопки по количеству слоев + одна (включить все слои). Что характерно работает, даже если фигура принадлежит
нескольким слоям.
если будут добавленны новые слои, ту удалить фигуры в ниже левого края листа

это если интересен вариант с контролами на листе. почему бы их не заменить на кнопки (прямоугольники) ниже листа ?
если речь про userform, то что мешает пользоваться окном свойств слоев ?
Изображение

Статья David J Parker Toggling Layers On and Off


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Вы можете создать форум бесплатно PHPBB3 на Getbb.Ru, Также возможно сделать готовый форум PHPBB2 на Mybb2.ru
Русская поддержка phpBB