Форум пользователей Visio http://visio.getbb.ru/ |
|
z-order с помощью DisplayLevel (что не так?) http://visio.getbb.ru/viewtopic.php?f=29&t=1280 |
Страница 1 из 1 |
Автор: | Lankoser [ 29 янв 2018, 22:16 ] |
Заголовок сообщения: | z-order с помощью DisplayLevel (что не так?) |
Добрый день. Есть задача: нужно управлять порядком наложения шейпов (z-order). Вычитал что для этого есть в шейплисте DisplayLevel в разделе Shape Layout. Меняю значения DisplayLevel но визуально ничего не меняется. В чём проблема? |
Автор: | Tumanov [ 29 янв 2018, 23:22 ] |
Заголовок сообщения: | Re: z-order с помощью DisplayLevel (что не так?) |
DisplayLevel он как бы и для этого, но не совсем... Самое правильное - это менять порядок с помощью BringForward и подобных методов. А DisplayLevel назначает некую начальную полосу на момент появления шейпа (например, при добавлении его на страницу). То есть - это начальная установка. Как я понимаю, в основном предназначен для мастер-шейпов. Вроде как определенный признак при размещении. Шейп с более отрицательным значением ляжет ниже. Да и появился DisplayLevel только в последних версиях Visio. В 2007 его не было. В 2010 - не помню. |
Автор: | Гость [ 30 янв 2018, 01:31 ] |
Заголовок сообщения: | Re: z-order с помощью DisplayLevel (что не так?) |
Tumanov писал(а): появился DisplayLevel только в последних версиях Visio. В 2007 его не было. В 2010 - не помню. Уже был в 2010
|
Автор: | god-udach [ 30 янв 2018, 03:53 ] |
Заголовок сообщения: | Re: z-order с помощью DisplayLevel (что не так?) |
Tumanov писал(а): Как я понимаю, в основном предназначен для мастер-шейпов. не совсем такЦитата: Уровень отображения визио на уровне приложения устанавливает эти значения. пользователь может попытаться изменить значение в этой ячейке - значение может измениться на желаемое, визио может подставить другой вариант значения. но по факту изменения порядка следования фигур не происходит в результате действий пользователя по отношению к этой ячейке!
Как правило, в Visio фигуры, добавленные последними, отображаются поверх других фигур на странице. Для изменения порядка отображения пользователи могут применять такие команды, как «Переместить назад» или «Переместить вперед», которые содержатся в группе «Упорядочить» на вкладке «Главная». Поскольку фигуры контейнеров предназначены для размещения позади других фигур, а выноски — поверх других фигур, в Visio 2010 добавлена новая функция, избавляющая пользователя от необходимости постоянно вносить изменения в порядок отображения. Ячейка DisplayLevel в таблице свойств фигуры позволяет определять для фигуры диапазон z-порядка. Visio будет автоматически отображать фигуру позади любой фигуры с более высоким значением DisplayLevel и, соответственно, поверх любой фигуры с более низким значением DisplayLevel. Диапазон значений DisplayLevel варьируется в пределах от -32767 до 32767. По умолчанию для фигур задано значение DisplayLevel, равное «0». Встроенные контейнеры Visio имеют значение DisplayLevel, равное -25000, а встроенные выноски Visio — значение, равное 25000. источник |
Автор: | Tumanov [ 30 янв 2018, 10:34 ] |
Заголовок сообщения: | Re: z-order с помощью DisplayLevel (что не так?) |
Цитата: не совсем так Цитата: визио на уровне приложения устанавливает эти значения Ну, извините, в корне не согласен! Не вижу, как Visio "устанавливает эти значения". Это делает не Visio, а разработчики смарт-шейпов. В том числе и встроенных контейнеров. Сделайте свой контейнер - думаете в нем появится значение -25000? Не появится. Зато если Вы сами внесете в него (в мастер-шейп своего контейнера) такое значение, его копии будут работать аналогично штатным контейнерам. Вот я и говорю, основной сценарий использования этого параметра - воздействие на мастер-шейп (естественно, для придания нужного поведения его копиям). Вы видите какой-то другой сценарий? Покажите. Очень интересно. Фраза в справке Цитата: Visio будет автоматически отображать фигуру позади любой фигуры с более высоким значением DisplayLevel и, соответственно, поверх любой фигуры с более низким значением DisplayLevel. просто некорректна, о чем и заявил топикстартер. Если вы измените значение ячейки в шейпе, уже находящемся на странице, изображение нисколько не изменится! Хотя, это повлияет на его копии в случае дублирования. Но это опять-таки аналогия с мастер-шейпом.
|
Автор: | Tumanov [ 30 янв 2018, 11:36 ] | |||
Заголовок сообщения: | Re: z-order с помощью DisplayLevel (что не так?) | |||
Вот иллюстрация. - создаем 10 шейпов. - дублируем их. Результат - порядок перекрытия сохраняется. - стираем все - создаем 10 шейпов - присваиваем уровень в обратном порядке (9,8,...0). Изображение не изменяется. - дублируем. Новые шейпы размещены в обратном порядке, как определено значением DisplayLevel. Следующий шейп "подсовывается" под предыдущий, потому что его уровень (в прототипе) ниже.
|
Автор: | Tumanov [ 30 янв 2018, 11:40 ] |
Заголовок сообщения: | Re: z-order с помощью DisplayLevel (что не так?) |
Код: 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 |
Автор: | god_udach [ 30 янв 2018, 13:58 ] |
Заголовок сообщения: | Re: z-order с помощью DisplayLevel (что не так?) |
Tumanov писал(а): Не вижу, как Visio "устанавливает эти значения". я просто добавил шейку в контекстное меню действие. В котором использовалась формула Setf("DisplayLevel",33333). После клика по данному пункту меню, у меня в ячейку DisplayLevel почему-то записалось совсем не то!Из этого я сделал вывод, что сам визио каким то образом влияет на значение в этой ячейке. То ли руки кривые, то ли глюк? |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |