Новый созданный пользовательский список не работает в Microsoft Visio 2013 x64

Задача:

Сначала я должен сказать, что я хочу сделать, а затем я опишу то, что я сделал, чтобы достичь своей цели в следующей части (Описания).

Я хочу создать основную форму настраиваемого списка из простого контейнера раздела "Части схемы" на вкладке "Вставка" ленты. Затем я хочу создать другую мастер-форму, которую можно использовать в качестве формы элемента для главной формы созданного пользовательского списка.

Другими словами, я хочу добавить свою созданную мастер-форму в свою мастер-форму пользовательского списка, например, присоединение мастер-форм Member и Separator к мастер-форме класса UML-трафарета.

Итак, я столкнулся с некоторыми проблемами в достижении своей цели, которую я описал в следующих частях.


Описания:

Я создал несколько новых основных фигур в файле Visio Stencil (.vssx) следующим образом:

Новые созданные Master Shapes с использованием Master Shape

Рисунок 1 - Новые созданные мастер-формы с использованием мастер-формы

  1. Основная форма свойства (зеленая коробка): создается из основной формы элемента трафарета класса UML (синяя коробка).
  2. Основная форма объекта (красное поле): создается из простого контейнера раздела "Части схемы" на вкладке "Вставка" ленты.

Мастер-форма свойства создается для использования в качестве формы элемента в главной форме объекта, как и мастер-форма элемента для использования в мастер-форме класса UML-трафарета.

Класс Master Shape с его начальными членами

Рисунок 2 - Master Shape класса с его начальными членами

Основная форма собственности, созданная из главной формы элемента, изменилась следующим образом:

  • Я добавил к нему один Shape Data (рисунок 3).

    Диалоговое окно 'Данные формы' в Property Master Shape

    Рисунок 3 - Диалоговое окно "Данные формы" в Property Master Shape

  • Я добавил к нему один элемент Data Graphic Item (рисунок 4).

    Диалоговые окна 'Графические данные' и 'Графический элемент данных' в основной форме свойства

    Рисунок 4 - Диалоговые окна "Графические данные" и "Графический элемент данных" в основной форме свойства

  • Я изменил формулу "User.MemberName" в разделе " Пользовательские ячейки" окна ShapeSheet следующим образом (рисунок 5):

    =MID(SUBSTITUTE(TRIM(SHAPETEXT(TheText)),"[",""),1,FIND(" ",SUBSTITUTE(TRIM(SHAPETEXT(TheText)),"[",""))-1)

    вместо:

    =SHAPETEXT(TheText)

    Окно 'ShapeSheet' свойства Master Shape

    Рисунок 5 - Окно "ShapeSheet" свойства Master Shape

Основная форма объекта, созданная из простого контейнера, изменилась следующим образом:

  • Я изменил содержимое ячеек в разделах Пользовательские ячейки и События окна ShapeSheet, как показано на рисунке 6:

    Ячейки в разделах Пользовательские ячейки и События окна ShapeSheet после изменения их содержимого

    Рисунок 6 - Ячейки в разделах Пользовательские ячейки и События окна ShapeSheet после изменения их содержимого

    вместо:

    Ячейки в разделах Пользовательские ячейки и События окна ShapeSheet перед изменением их содержимого

    Рисунок 7. Ячейки в разделах "Пользовательские ячейки" и "События" окна ShapeSheet перед изменением их содержимого.


Вопросы:

1-й вопрос:

Почему не являются / не являются экземпляры (ы) главной формы свойства, расположенные и правильно размещенные после добавления их / их к экземплярам (экземплярам) главной формы объекта, подобно добавлению экземпляра (ов) основной формы элемента в экземпляр (ы) Master Shape класса UML-трафарета (рисунок 8)?

Сравнение экземпляра мастер-формы объекта и одного экземпляра мастер-формы свойства с экземпляром мастер-формы класса трафарета UML и его начальных элементов

Рисунок 8. Сравнение экземпляра мастер-формы объекта и одного экземпляра мастер-формы свойства с экземпляром мастер-формы класса трафарета UML и его начальных элементов

2-й вопрос:

Почему экземпляры экземпляров мастер-формы объекта не добавляют свои начальные элементы после присоединения их / их к странице, например, добавление начальных элементов после добавления экземпляров мастер-формы класса трафарета UML к страница (рисунок 9)?

Сравнение экземпляра мастер-формы объекта с экземпляром мастер-формы класса UML-трафарета

Рисунок 9. Сравнение экземпляра мастер-формы объекта с экземпляром мастер-формы класса UML-трафарета

Я добавил следующую формулу для достижения этой цели; Тем не менее, я думаю, что это не работает:

=IF(LISTMEMBERCOUNT()=0,DOCMD(2270),0)

3-й вопрос:

Почему не отображается полоса в экземплярах экземпляра мастер-формы объекта для вставки экземпляров мастер-формы свойства, как при отображении панели в экземплярах мастер-формы класса трафарета UML для вставки его члены (рисунок 10)?

Сравнение экземпляра мастер-формы объекта с экземпляром мастер-формы класса UML-трафарета для отображения панели для вставки связанных элементов

Рисунок 10. Сравнение экземпляра мастер-формы объекта с экземпляром мастер-формы класса UML-трафарета для отображения панели для вставки связанных элементов

4-й вопрос:

Почему экземпляр (ы) мастер-формы объекта принимает экземпляр (-ы) всех мастер-форм, кроме как только экземпляр (ы) мастер-формы свойства, а не экземпляр (-ы) мастер-формы класса Трафарет UML, который принимает только экземпляр (ы) основных форм элементов и разделителей трафарета UML (рисунок 11)?

Сравнение экземпляра мастер-формы объекта, который принимает экземпляры всех мастер-форм, с экземпляром мастер-формы класса UML-трафарета, который принимает только экземпляры мастер-формы члена и разделителя трафарета UML

Рис. 11. Сравнение экземпляра мастер-формы объекта, который принимает экземпляры всех мастер-форм, с экземпляром мастер-формы класса UML-трафарета, который принимает только экземпляры мастер-формы участника и разделителя UML Трафарет

Я поставил =USE("Property") для "User.msvSDListItemMaster" в разделе " Пользовательские ячейки" окна ShapeSheet; Тем не менее, я думаю, что это не работает.

5-й вопрос:

Почему не отображаются / не отображаются параметры для вставки элементов в добавленные экземпляры главной формы свойства в экземпляры основной формы объекта, такие как присоединенные экземпляры основных форм элементов и разделителей UML-трафарет для экземпляра (ов) Master Shape класса UML-трафарета (рисунок 12)?

Сравнение экземпляра мастер-формы объекта и одного экземпляра мастер-формы свойства с экземпляром мастер-формы класса UML-трафарета и его элементов для отображения параметров вставляемых элементов на добавленных элементах

Рисунок 12. Сравнение экземпляра мастер-формы объекта и одного экземпляра мастер-формы свойства с экземпляром мастер-формы класса UML-трафарета и его элементов для отображения параметров вставляемых элементов на добавленных элементах

6-й (последний) вопрос:

Почему экземпляр (ы) мастер-формы объекта ведут себя и действуют как контейнер, а я изменил его / их главный объект в список?

1 ответ

Решение

Ответ на первый вопрос:

Эта проблема всегда заключается в том, чтобы не обращать внимания на слово "Категория". В большинстве случаев люди не обращают внимания на это слово и используют "Основное имя фигуры" вместо "Категория фигуры"; Однако они отличаются друг от друга.

В моем случае мне вводили имя мастера формы ( Property ) для User.msvSDContainerRequiredCategories (Список имен категорий, разделенных точкой с запятой. Другие фигуры должны иметь хотя бы одно совпадающее имя, разрешенное в качестве элементов контейнера.) И User.msvSDListRequiredCategories (Список имен категорий, разделенных точкой с запятой. Другие фигуры должны иметь хотя бы одно совпадающее имя, которое должно быть разрешено в качестве элементов списка.) Вместо Shape Category ( User.msvShapeCategories = Member )

Сравнение

Рисунок 1 - Сравнение "Shape Master Name" с "Shape Category"


Ответ на второй вопрос:

Для решения этой проблемы нам необходимо уделить внимание двум вещам:

Во-первых, мы должны добавить формы, которые мы хотим добавить их автоматически после создания мастер-формы. Таким образом, мы должны добавить строки (ы) для каждой фигуры, которую мы хотим добавить с именем User.msvSDListItemMaster[Index] (Имя или уникальный идентификатор главной фигуры, для которой создается экземпляр для команд вставки. Значение должно быть помещено в функцию USE().).

Как видите, я хочу добавить только одну фигуру. Итак, я должен изменить имя User.msvSDListItemMaster грести User.msvSDListItemMaster1, Если я хочу добавить больше фигур в конкретное время, я должен добавить еще одну строку, как User.msvSDListItemMaster2 , User.msvSDListItemMaster3 и так далее.

Второе и последнее, мы должны добавить формулу в ячейку "EventDrop " раздела "События". Как вы можете видеть, я добавил его в свою форму Custom List Shape, как указано здесь и здесь:

Указание формы вставки

Есть несколько способов добавить фигуру в список: перетаскивание фигуры, щелчок по синему треугольнику вставки, который появляется возле края списка, или щелчок правой кнопкой мыши по существующему элементу и вставка фигуры. Нажав на треугольник вставки и щелкнув правой кнопкой мыши, чтобы вставить фигуру, используйте User.msvSDListItemMaster ячейка, чтобы определить, какую форму добавить в список. Имя мастера помещается в кавычки внутри USE() функция (например, USE("List member master") ). Если в User.msvSDListItemMaster фигура не указана, Visio будет дублировать смежную фигуру в списке при вставке фигуры.

Также возможно автоматическое заполнение списка некоторыми формами элементов, когда список впервые перетаскивается на страницу. Для этого поместите следующую формулу в ячейку EventDrop списка, повторяя DOCMD(2270) один раз для каждого добавляемого участника:

IF(LISTMEMBERCOUNT()=0,DOCMD(2270)+DOCMD(2270)+DOCMD(2270),0)

2270 команда для вставки перед элементом в списке (visUiCmds.visCmdListInsertBefore). Также возможно использовать 2271, команда для вставки после элемента в списке (visUiCmds.visCmdListInsertAfter).

Проблема для 2270 число. Я не знаю, почему это не работает; однако, когда я проверил вышеупомянутую ячейку в разделе "События" в Master Master Shape UML-трафарета, я увидел, что они были использованы 2499 вместо 2270 , Итак, я использовал это число в моей формуле, и это сработало. Если у меня есть более одной формы для User.msvSDListItemMaster[Index] строки, я должен добавить +DOCMD(2499) для каждой фигуры после фигуры 1.


Ответ на третий вопрос:

Эта проблема будет решена, если проблема 1-го вопроса будет решена.


Ответ на 4-й вопрос:

Эта проблема будет решена, если проблема 1-го вопроса будет решена. Как то, что упомянуто здесь и здесь:

Контрольный список членов

Списки имеют свои собственные ячейки для управления членством в списке. Использовать User.msvSDListRequiredCategories а также User.msvSDListExcludedCategories ячейки, чтобы ограничить, какие фигуры могут стать членами списка. Поскольку списки также являются контейнерами, фигуры могут стать контейнерными элементами списка. Стандарт User.msvSDContainerRequiredCategories а также User.msvSDContainerExcludedCategories клетки определяют это поведение. По умолчанию Visio будет пытаться добавить фигуру в список в качестве члена списка, но если это не удастся, она может попытаться добавить ее в качестве члена контейнера. Разница между элементом списка и элементом контейнера заключается в том, что только элементы списка будут упорядочены по списку и будут влиять на его размер. Дизайнеры форм должны управлять обоими наборами ячеек членства, чтобы обеспечить правильные результаты.

Лучше, чтобы мы использовали оба User.msvSDListRequiredCategories а также User.msvSDContainerRequiredCategories ряды, чтобы получить лучшую эффективность.


Ответ на 5-й вопрос:

Эта проблема будет решена, если проблема 1-го вопроса будет решена.


Ответ на 6-й (последний) вопрос:

Ответ ( здесь и здесь):

Пользовательские Списки

Любая форма, которая имеет значение "List" для User.msvStructureType ячейка рассматривается Visio как список. Список автоматически упорядочивает и упорядочивает фигуры. Обратите внимание, что списки также считаются контейнерами, и они имеют аналогичные возможности, такие как автоматическое перемещение, копирование или удаление фигур элементов. Все ранее упомянутые ячейки контейнера применяются к фигурам списка.

Таблица 1. Свойства контейнера ShapeSheet

User.msvSDContainerMargin

      The distance between the container boundary and member shapes.

User.msvSDContainerResize

      The automatic-resize behavior for the shape:
  • 0 = Нет автоматического изменения размера.

  • 1 = расширить при необходимости.

  • 2 = Всегда вписывается в содержание.

User.msvSDContainerStyle

      A one-based index value for the current visual style of the container.

User.msvSDContainerStyleCount

      The total number of visual styles that the container supports.

User.msvSDHeadingStyle

      A one-based index value for the current visual style of the container heading.

User.msvSDHeadingStyleCount

      The total number of visual styles that the container heading supports.

User.msvSDContainerLocked

      A Boolean value that prevents membership changes in the container.

User.msvSDContainerRequiredCategories

      A semicolon-delimited list of category names. Other shapes must have at least one matching name to be allowed as container members.

User.msvSDContainerExcludedCategories

      A semicolon-delimited list of category names. Other shapes with at least one matching name are disallowed as container members.

User.msvSDContainerNoHighlight

      A Boolean value that suppresses the container highlighting when member shapes are selected or added to the container.

User.msvSDContainerNoRibbon

      A Boolean value that hides the Container Tools contextual tab in the ribbon for this container.

User.msvSDContainerHeadingEdge

      A string that designates the location of the interior of the container from the perspective of the container heading. Must be "Left", "Right", "Top", or "Bottom".

User.msvSDMembersOnHiddenLayer

      A Boolean value that determines whether Visio severs container relationships when the container or member is placed on a hidden layer. If True, Visio allows relationships to exist on the hidden layer. If False, Visio severs the relationships.
Другие вопросы по тегам