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

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

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


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


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

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



Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: в группе фигур отключать видимой одной определенной фигуры
СообщениеДобавлено: 19 янв 2018, 00:40 
у меня вот такой вопрос. Я сгрупировал фигуру состояющую из многих фигур.
В свойствах сгрупированной фигуры соствавил список и при выборе определенного значения из списка должна отключатся одна определенная фируга из группы (Geometry1.NoShow).

Есть ли возможность это реализовать без макросов? Внутри свойств одной фигуры это просто, а в вот в группе фигур не могу сообразить возможно ли это.

Спасибо!


Пожаловаться на это сообщение
Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: в группе фигур отключать видимой одной определенной фигуры
СообщениеДобавлено: 19 янв 2018, 01:25 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
Почти так же, но ссылка должна идти наверх, к шейпу-группе. Типа так:
Sheet.ID!CellName
где Sheet.ID - родительская группа.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: в группе фигур отключать видимой одной определенной фигуры
СообщениеДобавлено: 20 янв 2018, 18:51 
спасибо за ответ, но у меня не получается внести такую формулу в ячейку Geometry1.NoShow.
может опишите более подробно, что то я не мойти дойти до решения

фирура из группы по умолчанию имеет слудущую установку
Geometry1.NoShow = FALSE

группа фигур имеет список
Prop.FigureWahl, Format = "фигура1;фигура2;фигура3"

как отлючить видимость фигуры 1 если выбрали в списке "фигура1"?


Пожаловаться на это сообщение
Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: в группе фигур отключать видимой одной определенной фигуры
СообщениеДобавлено: 20 янв 2018, 19:38 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 534
Использую Visio c: 2008
Очков репутации: 107

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

(Sheet.10 это имя группы)

Так у меня почему то не работает, хотя должно.
Prop.FigureWahl, Format = "фигура1;фигура2;фигура3" - это в ячейке группы
Geometry1.NoShow = IF(Sheet.10!Prop.FigureWahl="фигура1",TRUE,FALSE) - это в ячейке субфигуры

А вот так работает.
Prop.FigureWahl, Format = 1;2;3 - это в ячейке группы
Geometry1.NoShow = IF(Sheet.10!Prop.FigureWahl=1,TRUE,FALSE) - это в ячейке субфигуры

_________________
GitHub
Yandex-диск с набором полезных утилит


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: в группе фигур отключать видимой одной определенной фигуры
СообщениеДобавлено: 20 янв 2018, 20:19 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
Для строк сравнение немного не так делается.
=IF(STRSAME(Sheet.10!Prop.FigureWahl,"фигура1"),TRUE,FALSE)


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: в группе фигур отключать видимой одной определенной фигуры
СообщениеДобавлено: 20 янв 2018, 21:24 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 534
Использую Visio c: 2008
Очков репутации: 107

Добавить очки репутацииУменьшить очки репутации
Да, забыл про это функцию.
Тогда еще проще:
Geometry1.NoShow = STRSAME(Sheet.10!Prop.FigureWahl,"фигура1") - это в ячейке субфигуры

_________________
GitHub
Yandex-диск с набором полезных утилит


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: в группе фигур отключать видимой одной определенной фигуры
СообщениеДобавлено: 21 янв 2018, 00:28 
Все гениальное просто! Спасибо огромное! Работает!


Пожаловаться на это сообщение
Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: в группе фигур отключать видимой одной определенной фигуры
СообщениеДобавлено: 12 фев 2018, 01:39 
добрый вечер,
у меня возникла проблема с более сложными фигурами.
Я ставлю свойство Geometry1.NoShow = TRUE, но фигура (точнение группированные фигуры) остаются видимыми.
Почему это может происходить? Как сделать чтобы фигура становилась невидимой?


Пожаловаться на это сообщение
Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: в группе фигур отключать видимой одной определенной фигуры
СообщениеДобавлено: 12 фев 2018, 09:18 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 534
Использую Visio c: 2008
Очков репутации: 107

Добавить очки репутацииУменьшить очки репутации
Пример нужон.

_________________
GitHub
Yandex-диск с набором полезных утилит


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: в группе фигур отключать видимой одной определенной фигуры
СообщениеДобавлено: 13 фев 2018, 01:15 
вот я загрузил пример на GoogleDrive:
https://drive.google.com/open?id=1brOjlviE9FaKtpsYhr7ts9xB96inlxIa

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

Вторая фигура состоит из трех групп фигур, которые также в зависимости от выбора: Typ1 и Typ2 должны становится невидимыми. Но к сожалению это не работает для меня непонятным причинам. Пытался без успешно найти ответ также в интернете. В общем без помощи профессионала по-моему тут не обойтись. Спасибо заранее!


Пожаловаться на это сообщение
Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: в группе фигур отключать видимой одной определенной фигуры
СообщениеДобавлено: 13 фев 2018, 09:24 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 534
Использую Visio c: 2008
Очков репутации: 107

Добавить очки репутацииУменьшить очки репутации
Правила форума
При размещении файлов предпочтительным является формат vsd (а не vsdx/vsdm)

_________________
GitHub
Yandex-диск с набором полезных утилит


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: в группе фигур отключать видимой одной определенной фигуры
СообщениеДобавлено: 13 фев 2018, 10:28 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
Цитата:
Вторая фигура состоит из трех групп фигур

Второй случай отличается тем, что скрывать нужно группы.
Тут геометрией не поможешь. Вернее, поможешь, но воздействовать нужно уже не только на группу, но и на все входящие. А это значит - замучаешься формулы прописывать.
Но я вижу, что Вы пытались играться с слоями. Это тоже действенный метод. Если для переключаемых групп назначить отдельные слои и управлять их видимостью, то эффект будет схожим.
Но слои относятся уже не к отдельному шейпу, а к странице. То есть, гася слой из-за одного шейпа, можно повлиять на другой (если там используется такой же слой).
Короче, тут уже важно знать, сколько и каких шейпов ожидается на странице в будущем.
Или изобретать другие уловки, типа сжатия группы в точку.
----
Кстати, в главной группе далеко не три входящих шейпа. Там еще и несколько десятков простых (несгруппированных) шейпов. Может это тоже была когда-то группа...


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: в группе фигур отключать видимой одной определенной фигуры
СообщениеДобавлено: 13 фев 2018, 12:38 
спасибо за ответ! вторая фигура имела еще больше групп, которые я удалил. Идея выключать слои подходит мне, я начал со слоев потому-то не знал что можно через shape data выключать видимость.
Теперь конечно напрашивается слудующий вопрос: как влючать/выключать видимость слоя через свойства фигуры?
Идеально было бы это делать без макросов. Если ли решение также к этой задаче?


Пожаловаться на это сообщение
Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: в группе фигур отключать видимой одной определенной фигуры
СообщениеДобавлено: 13 фев 2018, 13:12 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 534
Использую Visio c: 2008
Очков репутации: 107

Добавить очки репутацииУменьшить очки репутации
Вставить в шейп раздел Actions.
В ячейке Action прописать:
=SETF( GETREF(ThePage!Layers.Visible[5]), 0)
Число 5 для примера. Нужно вписать свое. Порядковый номер слоя на странице.

В ячейке Menu:
="Отключить слой Х"

_________________
GitHub
Yandex-диск с набором полезных утилит


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: в группе фигур отключать видимой одной определенной фигуры
СообщениеДобавлено: 13 фев 2018, 13:23 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
Цитата:
Число 5 для примера. Нужно вписать свое. Порядковый номер слоя на странице.

Вот это, к сожалению, не такой простой элемент. Должна быть гарантия, что слои будут именно таким и расположены именно в таком порядке.
Поэтому я рекомендовал бы рассмотреть также метод "сжатия в точку".
Суть метода в том, что, установив Width и Height группы в 0, мы практически делаем ее невидимой. Это, конечно, подходит не для всех групп, но в данном случае скорее всего будет работать.
И формулы проще. В Width будет If, который в зависимости от условия подставит либо 0, либо реальный размер. Чуть сложнее, чем в примере с геометрией.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: в группе фигур отключать видимой одной определенной фигуры
СообщениеДобавлено: 14 фев 2018, 00:37 
вот выложил мой пример в рекомендуемом формаете
https://drive.google.com/open?id=1-gF9Eg3Q_bpyRuh1z2nhsowizalR3SyB

в общем я итегрировал метод сжимания до точки, работает отлично но с один "но". При сжатии второй группы состоящей также из кругов остается видна одна линия, от которой я никак не смог избавится.

Так как в моем проекте будет много сложных групп, то наверное этот метот не совсем идеально будет работать.

Метод со слоями тоже подходит. Единственное я не понял как работает эта формула.
=SETF(GetRef(ThePage!Layers.Visible[5]),0)

Я включил раздел Actions и ввел ее в ячейку Action. Сделал в Shape Data выбор: fest или gleitend. И хотелось бы, если было выбрано "fest" то отключается слой #4, если иначе то слой #5. Как правильно это сделать? Спасибо огромное заранее!


Пожаловаться на это сообщение
Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: в группе фигур отключать видимой одной определенной фигуры
СообщениеДобавлено: 14 фев 2018, 09:51 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 534
Использую Visio c: 2008
Очков репутации: 107

Добавить очки репутацииУменьшить очки репутации
Ну во первых. Где ты смотришь порядковые номера слоев?

_________________
GitHub
Yandex-диск с набором полезных утилит


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: в группе фигур отключать видимой одной определенной фигуры
СообщениеДобавлено: 14 фев 2018, 10:01 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 534
Использую Visio c: 2008
Очков репутации: 107

Добавить очки репутацииУменьшить очки репутации
Порядковые номера слоев надо смотреть именно в shapesheet страницы.
В ячейку Menu(в секции Actions) напиши что нибудь! Например "Переключение слоев".
Вот тебе формула для ячейки Action:
=SETF(GetRef(ThePage!Layers.Visible[4]),1)+SETF(GetRef(ThePage!Layers.Visible[5]),1)+IF(STRSAME(Prop.Rohrboden,"fest",TRUE),SETF(GetRef(ThePage!Layers.Visible[4]),0),SETF(GetRef(ThePage!Layers.Visible[5]),0))
Сначала выбираешь значение Тип дна, потом запускаешь свое меню - "Переключение слоев".
Ну как то так. :)

_________________
GitHub
Yandex-диск с набором полезных утилит


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: в группе фигур отключать видимой одной определенной фигуры
СообщениеДобавлено: 14 фев 2018, 10:17 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 534
Использую Visio c: 2008
Очков репутации: 107

Добавить очки репутацииУменьшить очки репутации
Как писал выше Туманов, структуру слоев менять нельзя. Как минимум с 1 по 5. Новые добавлять можно.
Ну и можно добавить еще строку Actions:
Menu = "Включить все слои"
Action = SETF(GetRef(ThePage!Layers.Visible[4]),1)+SETF(GetRef(ThePage!Layers.Visible[5]),1)
Можно добавить и другие слои для включения, по тому же принципу.

_________________
GitHub
Yandex-диск с набором полезных утилит


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: в группе фигур отключать видимой одной определенной фигуры
СообщениеДобавлено: 14 фев 2018, 11:35 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 534
Использую Visio c: 2008
Очков репутации: 107

Добавить очки репутацииУменьшить очки репутации
А слои вроде надо переключать 5 и 9. Ну это сам поправишь.
Если хочешь чтобы слои переключались при изменении Типа дна, то:
В ячейке User.Row_3(или User.Row_4) измени формулу на:
=IF(STRSAME(Prop.Rohrboden,"fest"),1,0)+SETF(GetRef(ThePage!Layers.Visible[4]),1)+SETF(GetRef(ThePage!Layers.Visible[5]),1)+IF(STRSAME(Prop.Rohrboden,"fest",TRUE),SETF(GetRef(ThePage!Layers.Visible[4]),0),SETF(GetRef(ThePage!Layers.Visible[5]),0))

_________________
GitHub
Yandex-диск с набором полезных утилит


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

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



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

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


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

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