MRS*_*367 5 visio shape shapes shapesheet stencils
首先,我应该说我想做什么,然后在下一部分(描述)中描述为实现我的目标而要做的事情。
我想从功能区“插入”选项卡中“图零件”部分的“ 普通容器”中创建“ 自定义列表主形状”。然后,我想创建另一个Master Shape,它可以用作Created Custom List Master Shape的成员形状。
换句话说,我想将“ 创建的主形状”添加到“ 自定义列表”主形状中,例如将“ 成员”和“分隔符”主形状附加到UML模具的“ 类”主形状中。
因此,在实现我的目标时遇到了一些问题,我将在下一部分中对其进行描述。
我在“ Visio模具(.vssx)”文件中创建了一些新的Master Shape,如下所示:

图1-使用旧的主形状新建的主形状
已创建属性主形状,以用作对象主形状中的成员形状,就像在UML模具的类主形状中使用的成员主形状一样。

图2-具有初始成员的类主形
从成员主形创建的属性主形已更改如下:
我向其中添加了一个形状数据(图3)。

图3-Property Master Shape的“ Shape Data”对话框
我向其中添加了一个数据图形项(图4)。

图4-属性主形的“数据图形”和“数据图形项”对话框
我更改了ShapeSheet窗口的“用户定义的单元格”部分中的“ User.MemberName”公式,如下所示(图5):
=MID(SUBSTITUTE(TRIM(SHAPETEXT(TheText)),"[",""),1,FIND(" ",SUBSTITUTE(TRIM(SHAPETEXT(TheText)),"[",""))-1)
代替:
=SHAPETEXT(TheText)

图5-属性主形状的“ ShapeSheet”窗口
从普通容器创建的对象主形状已更改如下:
我在ShapeSheet窗口的“用户定义的单元格”和“事件”部分中更改了单元格的内容,如图6所示:

图6-更改内容后,ShapeSheet窗口的“用户定义的单元格”和“事件”部分中的单元格
代替:

图7-ShapeSheet窗口的“用户定义的单元格”和“事件”部分中的单元格,然后更改其内容
第一个问题:
在将属性主形状的实例添加到对象主形状的实例之后,为什么不正确地布置和放置属性主形状的实例,例如将成员主形状的实例添加到对象主形状的实例中UML模具的类主形的实例(图8)?

图8-比较对象主形状的一个实例和属性主形状的一个实例与UML模具及其初始成员的类主形状的实例
第二个问题:
为什么在将对象主形状的实例附加到页面后不添加其初始成员,如在将UML模具的类主形状的实例添加至页面之后添加初始成员一样,为什么不添加其初始成员?页(图9)?

图9-比较对象主形状的实例和UML模具的类主形状的实例
我为实现该目标添加了以下公式:但是,我认为它不起作用:
=IF(LISTMEMBERCOUNT()=0,DOCMD(2270),0)
第三个问题:
为什么不在对象主形状的实例中显示条以插入属性主形状的实例,如在要插入的UML模具的类主形状的实例中显示条其成员(图10)?

图10-比较对象主形的实例和UML模具的类主形的实例,以显示用于插入相关成员的钢筋
第四个问题:
为什么对象主形的实例接受所有主形的实例,而不是仅接受属性主形的实例,而不接受对象主形的类的实例?仅接受UML模具的“成员”和“分隔符主形状”实例的UML模具(图11)?

图11-将接受所有Master Shape实例的Object Master Shape实例与仅接受Member实例的Object Master和Separator Master Shapes的UML Stencil的Class Master Shape实例进行比较。 UML模具
我已经设置=USE("Property")为“User.msvSDListItemMaster”在用户定义的细胞部分 ShapeSheet窗口的; 但是,我认为这是行不通的。
第五题:
为什么不/未显示用于将属性主形状的已添加实例上的成员插入到对象主形状的实例中的选项,例如成员的附加实例和分隔符形状的插入实例UML模具到UML模具的类主形实例(图12)?

图12-比较对象主形的一个实例和属性主形的一个实例与UML模具及其成员的类主形的一个实例,以在添加的成员上显示插入成员的选项
第六(最后)题:
当我将其主对象更改为列表时,为什么对象主形状的实例的行为和行为类似于容器?
这个问题总是因为不注意“类别”这个词。在大多数情况下,人们不会注意到这个词,而是使用“形状大师名称”而不是“形状类别”;然而,它们彼此不同。
就我而言,我输入的形状主名称( Property)为(以分号分隔的类别名称列表。其他形状必须至少有一个匹配名称才能被允许作为容器成员。)和(以分号分隔的类别名称列表。类别名称。其他形状必须至少有一个匹配的名称才能被允许作为列表成员。)而不是Shape Category ( )。User.msvSDContainerRequiredCategories User.msvSDListRequiredCategories User.msvShapeCategories = Member

图 1 - 比较“形状主名称”与“形状类别”
为了解决这个问题,我们必须注意两件事:
首先,我们必须添加我们想要在实例化主形状后自动添加的形状。因此,我们必须为要添加名称的每个形状添加行User.msvSDListItemMaster[Index] (主形状的名称或 UniqueID,以创建插入命令的实例)。该值必须放置在 USE() 函数内.) .
如您所见,我只想添加一种形状。因此,我必须将该行的名称更改User.msvSDListItemMaster为User.msvSDListItemMaster1. 如果我想在实例化时间内添加更多形状,我必须添加另一行User.msvSDListItemMaster2,例如 ,User.msvSDListItemMaster3等等。
第二件事也是最后一件事,我们必须向“Events”部分的“EventDrop ”单元格添加一个公式。如您所见,我已将其添加到我的自定义列表形状中,如此处和此处所述:
指定插入形状
将形状添加到列表的方法有多种:拖放形状、单击列表边缘附近出现的蓝色插入三角形,或右键单击现有成员并插入形状。单击插入三角形和右键单击插入形状都使用
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数量上。我不知道为什么它不起作用;然而,当我检查UML Stencil 的 Class Master Shape 的“Events”部分中的上述单元格时,我看到已被使用2499而不是2270. 所以,我在公式中使用了这个数字,并且它起作用了。如果我有多个User.msvSDListItemMaster[Index]行形状,我必须+DOCMD(2499)为形状 1 之后的每个形状添加。
如果第一个问题的问题解决了,这个问题就解决了。
如果第一个问题的问题解决了,这个问题就解决了。正如这里和这里提到的:
控制列表成员资格
列表有自己的单元格来管理列表成员资格。使用
User.msvSDListRequiredCategories和User.msvSDListExcludedCategories单元格来限制哪些形状可以成为列表成员。 因为列表也是容器,所以形状有可能成为列表的容器成员。标准User.msvSDContainerRequiredCategories和User.msvSDContainerExcludedCategories细胞决定了这种行为。 默认情况下,Visio 将尝试将形状作为列表成员添加到列表中,但如果失败,它可能会尝试将其添加为容器成员。 列表成员和容器成员之间的区别在于,只有列表成员才会按列表排列并影响其大小。形状设计师应该管理两组成员单元以确保正确的结果。
最好同时使用User.msvSDListRequiredCategories和User.msvSDContainerRequiredCategoriesrows以获得最佳效率。
如果第一个问题的问题解决了,这个问题就解决了。
自定义列表
"List"Visio 将单元格值为 的任何形状User.msvStructureType视为列表。 列表会自动排序和排列其成员形状。 请注意,列表也被视为容器,它们具有类似的功能,例如自动移动、复制或删除成员形状。前面提到的所有容器单元都适用于列表形状。表 1. ShapeSheet 容器属性
用户.msvSDContainerMargin
Run Code Online (Sandbox Code Playgroud)The distance between the container boundary and member shapes.用户.msvSDContainerResize
Run Code Online (Sandbox Code Playgroud)The automatic-resize behavior for the shape:
0 = 不自动调整大小。
1 = 根据需要扩展。
2 = 始终适合内容。
用户.msvSDContainerStyle
Run Code Online (Sandbox Code Playgroud)A one-based index value for the current visual style of the container.User.msvSDContainerStyleCount
Run Code Online (Sandbox Code Playgroud)The total number of visual styles that the container supports.User.msvSDHeadingStyle
Run Code Online (Sandbox Code Playgroud)A one-based index value for the current visual style of the container heading.User.msvSDHeadingStyleCount
Run Code Online (Sandbox Code Playgroud)The total number of visual styles that the container heading supports.用户.msvSDContainerLocked
Run Code Online (Sandbox Code Playgroud)A Boolean value that prevents membership changes in the container.User.msvSDContainerRequiredCategories
Run Code Online (Sandbox Code Playgroud)A semicolon-delimited list of category names. Other shapes must have at least one matching name to be allowed as container members.User.msvSDContainerExcludedCategories
Run Code Online (Sandbox Code Playgroud)A semicolon-delimited list of category names. Other shapes with at least one matching name are disallowed as container members.User.msvSDContainerNoHighlight
Run Code Online (Sandbox Code Playgroud)A Boolean value that suppresses the container highlighting when member shapes are selected or added to the container.用户.msvSDContainerNoRibbon
Run Code Online (Sandbox Code Playgroud)A Boolean value that hides the Container Tools contextual tab in the ribbon for this container.User.msvSDContainerHeadingEdge
Run Code Online (Sandbox Code Playgroud)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
Run Code Online (Sandbox Code Playgroud)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.