Новый созданный пользовательский список не работает в Microsoft Visio 2013 x64
Задача:
Сначала я должен сказать, что я хочу сделать, а затем я опишу то, что я сделал, чтобы достичь своей цели в следующей части (Описания).
Я хочу создать основную форму настраиваемого списка из простого контейнера раздела "Части схемы" на вкладке "Вставка" ленты. Затем я хочу создать другую мастер-форму, которую можно использовать в качестве формы элемента для главной формы созданного пользовательского списка.
Другими словами, я хочу добавить свою созданную мастер-форму в свою мастер-форму пользовательского списка, например, присоединение мастер-форм Member и Separator к мастер-форме класса UML-трафарета.
Итак, я столкнулся с некоторыми проблемами в достижении своей цели, которую я описал в следующих частях.
Описания:
Я создал несколько новых основных фигур в файле Visio Stencil (.vssx) следующим образом:
Рисунок 1 - Новые созданные мастер-формы с использованием мастер-формы
- Основная форма свойства (зеленая коробка): создается из основной формы элемента трафарета класса UML (синяя коробка).
- Основная форма объекта (красное поле): создается из простого контейнера раздела "Части схемы" на вкладке "Вставка" ленты.
Мастер-форма свойства создается для использования в качестве формы элемента в главной форме объекта, как и мастер-форма элемента для использования в мастер-форме класса UML-трафарета.
Рисунок 2 - Master Shape класса с его начальными членами
Основная форма собственности, созданная из главной формы элемента, изменилась следующим образом:
Я добавил к нему один Shape Data (рисунок 3).
Рисунок 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)
Рисунок 5 - Окно "ShapeSheet" свойства Master Shape
Основная форма объекта, созданная из простого контейнера, изменилась следующим образом:
Я изменил содержимое ячеек в разделах Пользовательские ячейки и События окна ShapeSheet, как показано на рисунке 6:
Рисунок 6 - Ячейки в разделах Пользовательские ячейки и События окна ShapeSheet после изменения их содержимого
вместо:
Рисунок 7. Ячейки в разделах "Пользовательские ячейки" и "События" окна ShapeSheet перед изменением их содержимого.
Вопросы:
1-й вопрос:
Почему не являются / не являются экземпляры (ы) главной формы свойства, расположенные и правильно размещенные после добавления их / их к экземплярам (экземплярам) главной формы объекта, подобно добавлению экземпляра (ов) основной формы элемента в экземпляр (ы) Master Shape класса UML-трафарета (рисунок 8)?
Рисунок 8. Сравнение экземпляра мастер-формы объекта и одного экземпляра мастер-формы свойства с экземпляром мастер-формы класса трафарета UML и его начальных элементов
2-й вопрос:
Почему экземпляры экземпляров мастер-формы объекта не добавляют свои начальные элементы после присоединения их / их к странице, например, добавление начальных элементов после добавления экземпляров мастер-формы класса трафарета UML к страница (рисунок 9)?
Рисунок 9. Сравнение экземпляра мастер-формы объекта с экземпляром мастер-формы класса UML-трафарета
Я добавил следующую формулу для достижения этой цели; Тем не менее, я думаю, что это не работает:
=IF(LISTMEMBERCOUNT()=0,DOCMD(2270),0)
3-й вопрос:
Почему не отображается полоса в экземплярах экземпляра мастер-формы объекта для вставки экземпляров мастер-формы свойства, как при отображении панели в экземплярах мастер-формы класса трафарета UML для вставки его члены (рисунок 10)?
Рисунок 10. Сравнение экземпляра мастер-формы объекта с экземпляром мастер-формы класса UML-трафарета для отображения панели для вставки связанных элементов
4-й вопрос:
Почему экземпляр (ы) мастер-формы объекта принимает экземпляр (-ы) всех мастер-форм, кроме как только экземпляр (ы) мастер-формы свойства, а не экземпляр (-ы) мастер-формы класса Трафарет UML, который принимает только экземпляр (ы) основных форм элементов и разделителей трафарета UML (рисунок 11)?
Рис. 11. Сравнение экземпляра мастер-формы объекта, который принимает экземпляры всех мастер-форм, с экземпляром мастер-формы класса UML-трафарета, который принимает только экземпляры мастер-формы участника и разделителя UML Трафарет
Я поставил =USE("Property")
для "User.msvSDListItemMaster" в разделе " Пользовательские ячейки" окна ShapeSheet; Тем не менее, я думаю, что это не работает.
5-й вопрос:
Почему не отображаются / не отображаются параметры для вставки элементов в добавленные экземпляры главной формы свойства в экземпляры основной формы объекта, такие как присоединенные экземпляры основных форм элементов и разделителей UML-трафарет для экземпляра (ов) Master Shape класса UML-трафарета (рисунок 12)?
Рисунок 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.