Новая созданная форма пользовательского списка не работает в Microsoft Visio 2013 x64

Цель:

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

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

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

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


Описания:

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

Новые созданные основные формы с использованной основной формой

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

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

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

Форма мастера класса с его начальными членами

Рисунок 2. Мастер-форма класса с его начальными элементами

Мастер-форма свойства, созданная из Мастер-форма участника, изменилась следующим образом:

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

    Диалоговое окно

    Рисунок 3. Диалоговое окно "Данные формы" главной фигуры свойств

  • Я добавил к нему один графический элемент данных (рис. 4).

    Диалоговые окна

    Рисунок 4. Диалоговые окна «Графика данных» и «Элемент графики данных» формы мастера свойств

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

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

    вместо:

    =SHAPETEXT(TheText)

    Окно ShapeSheet формы мастера свойств

    Рисунок 5. Окно "ShapeSheet" формы мастера свойств

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

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

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

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

    вместо:

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

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


Вопросы:

1-й вопрос:

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

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

Рис. 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" в разделе Определяемые пользователем ячейки окна таблицы свойств фигуры;< /em> Однако я думаю, что это не работает.

5-й вопрос:

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

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

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

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

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


person MRS1367    schedule 05.03.2015    source источник


Ответы (1)


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

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

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

Сравнение имени мастера формы с категорией формы

Рис. 1. Сравнение имени мастера формы с категорией формы


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

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

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

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

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

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

Существует несколько способов добавить фигуру в список: перетащить фигуру, щелкнуть синий треугольник вставки, который появляется рядом с краем списка, или щелкнуть правой кнопкой мыши существующий элемент и вставить фигуру. Нажатие треугольника вставки и щелчок правой кнопкой мыши для вставки фигуры используют ячейку User.msvSDListItemMaster, чтобы определить, какую фигуру добавить в список. Имя мастера помещается в кавычки< /strong> внутри функции 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. Я не знаю, почему это не работает; однако, когда я проверил вышеупомянутую ячейку в разделе События главной фигуры класса трафарета UML, я увидел, что использовались 2499 вместо 2270. Я использовал это число в своей формуле, и оно сработало. Если у меня есть несколько фигур для User.msvSDListItemMaster[Index] строк, я должен добавить +DOCMD(2499) для каждой фигуры после фигуры 1.


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

Эта проблема будет решена, если будет решена проблема 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.
person MRS1367    schedule 19.06.2015