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

Форум по вопросам применения и программирования в Visio
Текущее время: 28 мар 2024, 19:08

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


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


При размещении файлов предпочтительным является формат vsd (а не vsdx/vsdm)
Размещая ваши вложения на форуме не используйте имена файлов содержащих кириллицу, в противном случае файл будет иметь имя .<расширение файла> !

Для форматирования ваших сообщений используйте BBCodes, описание используемых на форуме BBCodes.



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: z-order с помощью DisplayLevel (что не так?)
СообщениеДобавлено: 29 янв 2018, 22:16 
Не в сети

Зарегистрирован: 17 янв 2018, 00:15
Сообщений: 5
Использую Visio c: 2017
Уровнь квалификации: Новичок
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Добрый день.
Есть задача: нужно управлять порядком наложения шейпов (z-order). Вычитал что для этого есть в шейплисте DisplayLevel в разделе Shape Layout. Меняю значения DisplayLevel но визуально ничего не меняется. В чём проблема?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: z-order с помощью DisplayLevel (что не так?)
СообщениеДобавлено: 29 янв 2018, 23:22 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 2253
Очков репутации: 100626

Добавить очки репутацииУменьшить очки репутации
DisplayLevel он как бы и для этого, но не совсем...
Самое правильное - это менять порядок с помощью BringForward и подобных методов.
А DisplayLevel назначает некую начальную полосу на момент появления шейпа (например, при добавлении его на страницу). То есть - это начальная установка. Как я понимаю, в основном предназначен для мастер-шейпов. Вроде как определенный признак при размещении.
Шейп с более отрицательным значением ляжет ниже.
Да и появился DisplayLevel только в последних версиях Visio. В 2007 его не было. В 2010 - не помню.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: z-order с помощью DisplayLevel (что не так?)
СообщениеДобавлено: 30 янв 2018, 01:31 
Tumanov писал(а):
появился DisplayLevel только в последних версиях Visio. В 2007 его не было. В 2010 - не помню.
Уже был в 2010


Пожаловаться на это сообщение
Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: z-order с помощью DisplayLevel (что не так?)
СообщениеДобавлено: 30 янв 2018, 03:53 
Не в сети
Новичок

Зарегистрирован: 01 янв 2010, 05:46
Сообщений: 45
Откуда: ЕАО, Россия
Использую Visio c: 2010
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Tumanov писал(а):
Как я понимаю, в основном предназначен для мастер-шейпов.
не совсем так
Цитата:
Уровень отображения

Как правило, в Visio фигуры, добавленные последними, отображаются поверх других фигур на странице. Для изменения порядка отображения пользователи могут применять такие команды, как «Переместить назад» или «Переместить вперед», которые содержатся в группе «Упорядочить» на вкладке «Главная». Поскольку фигуры контейнеров предназначены для размещения позади других фигур, а выноски — поверх других фигур, в Visio 2010 добавлена новая функция, избавляющая пользователя от необходимости постоянно вносить изменения в порядок отображения.

Ячейка DisplayLevel в таблице свойств фигуры позволяет определять для фигуры диапазон z-порядка. Visio будет автоматически отображать фигуру позади любой фигуры с более высоким значением DisplayLevel и, соответственно, поверх любой фигуры с более низким значением DisplayLevel. Диапазон значений DisplayLevel варьируется в пределах от -32767 до 32767. По умолчанию для фигур задано значение DisplayLevel, равное «0». Встроенные контейнеры Visio имеют значение DisplayLevel, равное -25000, а встроенные выноски Visio — значение, равное 25000.
источник
визио на уровне приложения устанавливает эти значения. пользователь может попытаться изменить значение в этой ячейке - значение может измениться на желаемое, визио может подставить другой вариант значения. но по факту изменения порядка следования фигур не происходит в результате действий пользователя по отношению к этой ячейке!


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: z-order с помощью DisplayLevel (что не так?)
СообщениеДобавлено: 30 янв 2018, 10:34 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 2253
Очков репутации: 100626

Добавить очки репутацииУменьшить очки репутации
Цитата:
не совсем так

Цитата:
визио на уровне приложения устанавливает эти значения

Ну, извините, в корне не согласен!
Не вижу, как Visio "устанавливает эти значения".
Это делает не Visio, а разработчики смарт-шейпов. В том числе и встроенных контейнеров.
Сделайте свой контейнер - думаете в нем появится значение -25000? Не появится. Зато если Вы сами внесете в него (в мастер-шейп своего контейнера) такое значение, его копии будут работать аналогично штатным контейнерам.
Вот я и говорю, основной сценарий использования этого параметра - воздействие на мастер-шейп (естественно, для придания нужного поведения его копиям).
Вы видите какой-то другой сценарий? Покажите. Очень интересно.
Фраза в справке
Цитата:
Visio будет автоматически отображать фигуру позади любой фигуры с более высоким значением DisplayLevel и, соответственно, поверх любой фигуры с более низким значением DisplayLevel.
просто некорректна, о чем и заявил топикстартер. Если вы измените значение ячейки в шейпе, уже находящемся на странице, изображение нисколько не изменится! Хотя, это повлияет на его копии в случае дублирования. Но это опять-таки аналогия с мастер-шейпом.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: z-order с помощью DisplayLevel (что не так?)
СообщениеДобавлено: 30 янв 2018, 11:36 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 2253
Очков репутации: 100626

Добавить очки репутацииУменьшить очки репутации
Вот иллюстрация.
- создаем 10 шейпов.
- дублируем их.
Результат - порядок перекрытия сохраняется.
- стираем все
- создаем 10 шейпов
- присваиваем уровень в обратном порядке (9,8,...0). Изображение не изменяется.
- дублируем.
Новые шейпы размещены в обратном порядке, как определено значением DisplayLevel. Следующий шейп "подсовывается" под предыдущий, потому что его уровень (в прототипе) ниже.


Вложения:
z.vsd [19.5 Кб]
Скачиваний: 134
z.gif
z.gif [ 198.62 Кб | Просмотров: 502 ]
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: z-order с помощью DisplayLevel (что не так?)
СообщениеДобавлено: 30 янв 2018, 11:40 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 2253
Очков репутации: 100626

Добавить очки репутацииУменьшить очки репутации
Код:
Sub CreateShapes()
    x0 = 1
    y0 = 3
    For i = 1 To 10
        Set shp = ActivePage.DrawRectangle(x0, y0, x0 + 1, y0 + 1)
        shp.Text = i
        x0 = x0 + 0.75
        y0 = y0 + 0.2
    Next
End Sub

Sub Reverse()
    For i = ActivePage.Shapes.Count To 1 Step -1
        ActivePage.Shapes(i).BringToFront
    Next
End Sub

Sub SetLevel()
    For i = 1 To ActivePage.Shapes.Count
        Set shp = ActivePage.Shapes(i)
        shp.Cells("DisplayLevel") = 10 - i
    Next
End Sub

Sub SetDouble()
    For i = 1 To ActivePage.Shapes.Count
        Set shp = ActivePage.Shapes(i)
        shp.Duplicate
    Next
End Sub


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: z-order с помощью DisplayLevel (что не так?)
СообщениеДобавлено: 30 янв 2018, 13:58 
Tumanov писал(а):
Не вижу, как Visio "устанавливает эти значения".
я просто добавил шейку в контекстное меню действие. В котором использовалась формула Setf("DisplayLevel",33333). После клика по данному пункту меню, у меня в ячейку DisplayLevel почему-то записалось совсем не то!
Из этого я сделал вывод, что сам визио каким то образом влияет на значение в этой ячейке.
То ли руки кривые, то ли глюк?


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

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



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

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


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

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