Форум пользователей Visio
http://visio.getbb.ru/

Кнопки переключения слоев
http://visio.getbb.ru/viewtopic.php?f=29&t=987
Страница 1 из 1

Автор:  yanooks [ 13 июл 2016, 17:47 ]
Заголовок сообщения:  Кнопки переключения слоев

Добрый день! Имеется схема коммутации серверной стойки, к примеру в стойке установлено 6 приборов, от прибора "1" (главный прибор) проложены соединительные линии к прибору "2" (вынесено на слой 1). Линии соединения прибора "1" с прибором "3" вынесены на слой 2 и т.д. Задача: вынести на лист кнопки по активации которых происходило включение и отключение видимости слоев 1,2,3,.... Управление слоями через меню "Свойства слоя" не удобное и не информативное, возможно решить такую задачу? подскажите как или пните в нужном направлении. Спасибо!

Автор:  Tumanov [ 13 июл 2016, 19:20 ]
Заголовок сообщения:  Re: Кнопки переключения слоев

Цитата:
...Управление слоями через меню "Свойства слоя" не удобное и не информативное...

То есть галочки нужно заменить на кнопочки? Или я чего-то не понял.
В принципе, чтобы включить-выключить слой нужна одна команда. Типа такой.
Код:
ActivePage.Layers(1).CellsC(4) = True

Нажатие кнопки может вызывать макрос, который и выполнит нужное действие.
Дальше все зависит от того, сколько у Вас слоев, как Вы будете сопоставлять кнопки и слои при изменении их количества и т.д.

Автор:  Tumanov [ 13 июл 2016, 19:25 ]
Заголовок сообщения:  Re: Кнопки переключения слоев

Кстати, уже был аналогичный вопрос.
viewtopic.php?f=6&t=973

Автор:  Shishok [ 13 июл 2016, 19:28 ]
Заголовок сообщения:  Re: Кнопки переключения слоев

Так что - ли?

Вложения:
Layers.vsd [48 Кб]
Скачиваний: 274

Автор:  yanooks [ 13 июл 2016, 19:47 ]
Заголовок сообщения:  Re: Кнопки переключения слоев

Shishok писал(а):
Так что - ли?

Именно так.
А если еще расскажите как сделать вообще отлично будет)))

Автор:  Shishok [ 13 июл 2016, 21:37 ]
Заголовок сообщения:  Re: Кнопки переключения слоев

Ну как - то так:
Индекс нужного слоя (то что в примере исправлено на - 10), смотреть в Shapesheet листа.

Изображение

Автор:  Shishok [ 13 июл 2016, 21:44 ]
Заголовок сообщения:  Re: Кнопки переключения слоев

А лучше код в файле заменить на такой:
Код:
Option Explicit

Private Sub CommandButton1_Click()
    Call On_Off_Layers(1)
End Sub

Private Sub CommandButton2_Click()
    Call On_Off_Layers(2)
End Sub

Private Sub CommandButton3_Click()
    Call On_Off_Layers(3)
End Sub

Private Sub On_Off_Layers(arg)
    Dim vsoLayer As Visio.Layer
    Set vsoLayer = Application.ActiveWindow.Page.Layers.Item(arg)
   
    With vsoLayer.CellsC(visLayerVisible)
        If .FormulaU = "1" Then
            .FormulaU = "0"
        Else
            .FormulaU = "1"
        End If
    End With
End Sub

Автор:  Surrogate [ 14 июл 2016, 03:40 ]
Заголовок сообщения:  Re: Кнопки переключения слоев

Вопрос задан в ветке Общие вопросы, таким образом предполагает ответ - как сделать это штатными средствами! Штатными средствами - только через это меню
Цитата:
...Управление слоями через меню "Свойства слоя" не удобное и не информативное...
полученные ответы, уместны в ветке Программирование!
не первый пользователь задает подобные вопросы и мечтает плодить сущности (квадратики или кнопочки) без крайней на то необходимости (IMHO)!
Рассказали бы хоть, чем меню не удобно? Потом, чем не информативно?

Автор:  Surrogate [ 18 июл 2016, 13:24 ]
Заголовок сообщения:  Re: Кнопки переключения слоев

Surrogate писал(а):
Рассказали бы хоть, чем меню не удобно? Потом, чем не информативно?
просто хочется получить аргументированный ответ !

Автор:  Shishok [ 18 июл 2016, 19:26 ]
Заголовок сообщения:  Re: Кнопки переключения слоев

Для удобства можно вынести кнопку на панель быстрого доступа. Только выносить надо не кнопку Слой, а кнопку Свойства слоя.

Изображение

Автор:  Alex_ST [ 14 ноя 2016, 17:54 ]
Заголовок сообщения:  Re: Кнопки переключения слоев

Shishok писал(а):
With vsoLayer.CellsC(visLayerVisible)
If .FormulaU = "1" Then
.FormulaU = "0"
Else
.FormulaU = "1"
End If
End With

Похоже, что не обязательно указывать свойство .FormulaU
Достаточно написать простую логическую инверсию:
Код:
vsoLayer.CellsC(visLayerVisible) = Not(vsoLayer.CellsC(visLayerVisible))

Страница 1 из 1 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/