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

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

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


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

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



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

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

Код: 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
22.03.2013, 08:35
    #38194222
Malyav
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visio 2010. Как скрыть или показать shape по определенному критерию?
[quot The_Prist]Malyav,

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



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

Код: 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
25.03.2013, 10:13
    #38196903
Malyav
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visio 2010. Как скрыть или показать shape по определенному критерию?
Спасибо. Дело пошло.
Линия скрывается, но текст в ней остается видимым. Его тоже надо скрыть. Я посмотрел в свойстве формат, для текста это можно сделать уменьшением размера шрифта и установкой прозрачности. Я попробовал код (в визио раньше не программировал, пытаюсь определить интуитивно, как это делается)
Код: vbnet
1.
Application.ActiveWindow.Page.Shapes.ItemFromID(4).CellsSRC(visSectionObject, visRowText, visTxtBlkBkgndTrans).FormulaU = "100%"


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

Код: 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
26.03.2013, 08:34
    #38198159
Malyav
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visio 2010. Как скрыть или показать shape по определенному критерию?
Aster32"Скрытие текста" - замена на пустую строку:
Перед "скрытием" текста - сохраните его, например, в глобальную строковую переменную. Для возможности последующего "отображения".

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


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