powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Visio 2010. Как скрыть или показать shape по определенному критерию?
13 сообщений из 13, страница 1 из 1
Visio 2010. Как скрыть или показать shape по определенному критерию?
    #38191586
Malyav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть несколько шейпов, которые представляют из себя соединительные линии. У каждой линии есть своя текстовая метка (свойство text). Я программно (VBA) перебираю все шейпы и проверяю это свойство. Те, которые имеют в этом свойстве определенный набор символов, надо скрыть. Потом снова вернуть им видимость. Какими свойствами/методами шейпа это можно сделать?
Также у каждой линии есть цвет и толщина. Можно ли их программно менять и как?
...
Рейтинг: 0 / 0
Visio 2010. Как скрыть или показать shape по определенному критерию?
    #38191806
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Malyav,

А свойство Visible чем не устраивает?
Код: vbnet
1.
2.
oShape.Visible = 0'скрываем
oShape.Visible = 1'показываем
...
Рейтинг: 0 / 0
Visio 2010. Как скрыть или показать shape по определенному критерию?
    #38192507
Malyav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это первое, что я пытался сделать. Но! Нет такого свойства.

Код: vbnet
1.
2.
3.
        If InStr(1, vsoShapes.Item(intCounter).Text, "XYZ") <> 0 Then
            vsoShapes.Item(intCounter).Visible = 1
        End If


При написании этого кода всплывающая подсказка не предлагает свойство Visible а при выполнении выдает ошибку "Объект не поддерживает это свойство или метод."
...
Рейтинг: 0 / 0
Visio 2010. Как скрыть или показать shape по определенному критерию?
    #38193144
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Malyav,

У метода Item нет такого свойства. А вот у объекта Shape - есть.
Код: vbnet
1.
2.
vsoShapes(intCounter).Visible = 1'что у Вас в vsoShapes - я не знаю
ActiveSheet.Shapes(1).Visible = True'работает без проблем



А лучше выкладывайте более полный код. Вы где все это пишите вообще?
...
Рейтинг: 0 / 0
Visio 2010. Как скрыть или показать shape по определенному критерию?
    #38193151
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_PristMalyav,

У метода Item нет такого свойства. А вот у объекта Shape - есть.
Да, у объекта Shapes нет свойства Item. Отсюда и мой комментарий, что неизвестно, что Вы в vsoShapes пишите.
...
Рейтинг: 0 / 0
Visio 2010. Как скрыть или показать shape по определенному критерию?
    #38194214
Malyav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выкладываю код

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Public Sub Shapes_Example()

    Dim intCounter As Integer
    Dim intShapeCount As Integer
    Dim vsoShapes As Visio.Shapes

    Set vsoShapes = ActiveDocument.Pages.Item(1).Shapes
    
    intShapeCount = vsoShapes.Count
    If intShapeCount > 0 Then
        For intCounter = 1 To intShapeCount
            Debug.Print " "; vsoShapes.Item(intCounter).Name
            Debug.Print " "; vsoShapes.Item(intCounter).Text
            If InStr(1, vsoShapes.Item(intCounter).Text, "XYZ") = 0 Then
'                vsoShapes.Item(intCounter).Visible = False
            End If
        Next intCounter
    Else
        Debug.Print "No Shapes On Page"
    End If
End Sub



Требуется скрыть все shapes, которые в свойстве текст не имеют определенного набора символов.
Неработающая строка кода закомментирована.
Пишу на VBA в редакторе макросов MS Visio премиум 2010.
Прикладываю скриншот схемы.
...
Рейтинг: 0 / 0
Visio 2010. Как скрыть или показать shape по определенному критерию?
    #38194222
Malyav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot The_Prist]Malyav,

У метода Item нет такого свойства. А вот у объекта Shape - есть.
Код: vbnet
1.
2.
vsoShapes(intCounter).Visible = 1'что у Вас в vsoShapes - я не знаю
ActiveSheet.Shapes(1).Visible = True'работает без проблем



Объекта ActiveSheet мой визио в упор не видит.
...
Рейтинг: 0 / 0
Visio 2010. Как скрыть или показать shape по определенному критерию?
    #38194643
Aster32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет у объекта Shape свойства Visible.
Для скрытия линии прописывайте в поле LinePattern секции Line Format шейп-листа соответствующей линии значение "0". Для обратного отображения - значение "1".
...
Рейтинг: 0 / 0
Visio 2010. Как скрыть или показать shape по определенному критерию?
    #38194964
Malyav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как добраться до этого LinePattern?
Я уже в Watches просмотрел все ветки шейпа - ничего не нашел. По правому клику на шейпе через формат линии можно поменять толщину. Значит и программно можно. Был бы рекордер макросов...
Вот все, что я нашел по LinePattern в списке объектов, одни константы.
...
Рейтинг: 0 / 0
Visio 2010. Как скрыть или показать shape по определенному критерию?
    #38195033
Aster32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скрытие:

Код: vbnet
1.
Application.ActiveWindow.Page.Shapes.ItemFromID(1).CellsSRC(visSectionObject, visRowLine, visLinePattern).FormulaU = "0"



Отображение:

Код: vbnet
1.
2.
Application.ActiveWindow.Page.Shapes.ItemFromID(1).CellsSRC(visSectionObject, visRowLine, visLineColor).FormulaU = "THEMEGUARD(RGB(0,0,0))" 'устанавливаем цвет линии
Application.ActiveWindow.Page.Shapes.ItemFromID(1).CellsSRC(visSectionObject, visRowLine, visLinePattern).FormulaU = "1" 'устанавливаем паттерн линии (1-сплошная, 2-пунктир и т.д.)
...
Рейтинг: 0 / 0
Visio 2010. Как скрыть или показать shape по определенному критерию?
    #38196903
Malyav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо. Дело пошло.
Линия скрывается, но текст в ней остается видимым. Его тоже надо скрыть. Я посмотрел в свойстве формат, для текста это можно сделать уменьшением размера шрифта и установкой прозрачности. Я попробовал код (в визио раньше не программировал, пытаюсь определить интуитивно, как это делается)
Код: vbnet
1.
Application.ActiveWindow.Page.Shapes.ItemFromID(4).CellsSRC(visSectionObject, visRowText, visTxtBlkBkgndTrans).FormulaU = "100%"


но он не работает.
Будьте любезны, подскажите код для уменьшения размера символов и установки полной прозрачности текста в линии. Или как его можно скрыть лучше, чем такой способ?
...
Рейтинг: 0 / 0
Visio 2010. Как скрыть или показать shape по определенному критерию?
    #38197736
Aster32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Назначение размера символов в тексте линии:

Код: vbnet
1.
Application.ActiveWindow.Page.Shapes.ItemFromID(1).CellsSRC(visSectionCharacter, 0, visCharacterSize).FormulaU = "14 pt"



"Скрытие текста" - замена на пустую строку:

Код: vbnet
1.
Application.ActiveWindow.Page.Shapes.ItemFromID(1).Characters.Text = ""



Перед "скрытием" текста - сохраните его, например, в глобальную строковую переменную. Для возможности последующего "отображения".

Либо можно установить цвет текста = цвет фона. Но это плохо, т.к. будут видны фрагменты текста непосредственно на теле линии.
...
Рейтинг: 0 / 0
Visio 2010. Как скрыть или показать shape по определенному критерию?
    #38198159
Malyav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aster32"Скрытие текста" - замена на пустую строку:
Перед "скрытием" текста - сохраните его, например, в глобальную строковую переменную. Для возможности последующего "отображения".

Спасибо, это наилучший способ скрыть текст. Но надо сделать так, чтобы линии не остались без текста насовсем в случае закрытия файла с сохранением. С этим я справлюсь.
Благодарю за помощь.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Visio 2010. Как скрыть или показать shape по определенному критерию?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]