目标:
首先,我要说一下我的目标是什么,然后在下一个(描述)部分中描述我为实现目标所做的事情。
我想从“插入”选项卡中“图表部件”部分的“平面容器”中创建一个自定义列表主形状。然后,我想创建另一个主形状,可以用作创建的自定义列表主形状的成员形状。
换句话说,我想像将成员和分隔符主形状附加到UML模板的类主形状一样,将我的创建的主形状添加到我的自定义列表主形状中。
因此,我在实现我的目标时遇到了一些问题,在下面的部分中进行了描述。
描述:
我已经在“Visio Stencil (.vssx)”文件中创建了一些新的主形状,如下所示:
图1 - 使用主形状创建的新主形状
- 属性主形状(绿色框):从UML类模板(蓝色框)的成员主形状创建。
- 对象主形状(红色框):从“插入”选项卡中“图表部件”部分的平面容器创建。
属性主形状被创建为在对象主形状中用作成员形状,就像成员主形状在UML模板的类主形状中使用一样。
图2 - 具有其初始成员的类主形状
从成员主形状创建的属性主形状已更改如下:
我给它添加了一个 Shape Data(图3)。
图3 - 属性主形状的“形状数据”对话框
我给它添加了一个 Data Graphic Item(图4)。
图4 - 属性主形状的“数据图形”和“数据图形项”对话框
我在 ShapeSheet 窗口的“用户定义单元格”部分更改了“User.MemberName”公式,如下所示(图5):
=MID(SUBSTITUTE(TRIM(SHAPETEXT(TheText)),"[",""),1,FIND(" ",SUBSTITUTE(TRIM(SHAPETEXT(TheText)),"[",""))-1)
而不是:
=SHAPETEXT(TheText)
图5 - 属性主形状的“形状工作表”窗口
由“Plain Container”创建的“Object 主形状”已更改如下:
我更改了 ShapeSheet 窗口中“用户定义单元格和事件部分”的单元格内容,如图6:
图6 - 更改内容后的 ShapeSheet 窗口的“用户定义单元格和事件部分”的单元格
而不是:
图7 - 更改前 ShapeSheet 窗口中“用户定义单元格和事件部分”的单元格内容
问题:
第一个问题:
为什么将 Property 主形状实例添加到 Object 主形状实例时不能像将 Member 主形状实例添加到 UML 模板的 Class 主形状实例一样正确排列和放置(图8)?
图8 - 对比UML模板的类主形状和对象主形状实例以及属性主形状实例,以及其初始成员
第二个问题:
为什么对象主形状的实例在附加到页面后没有添加其初始成员,就像在将类主形状的实例添加到页面后添加初始成员一样(图9)?
图9 - 对比UML模板的类主形状和对象主形状实例
我已经添加了以下公式来达到这个目标; 但是我认为它不起作用:
=IF(LISTMEMBERCOUNT()=0,DOCMD(2270),0)
第三个问题:
为什么对象主形状的实例没有显示插入属性主形状实例的栏,就像在类主形状的实例中显示栏以插入其成员一样(图10)?
图10 - 对比UML模板的类主形状和对象主形状实例,以显示插入相关成员的栏
第四个问题:
为什么对象主形状的实例接受所有主形状的实例,而不仅仅是属性主形状的实例,相反,UML模板的类主形状只接受UML模板的成员和分隔符主形状的实例(图11)?
图11 - 对比对象主形状的实例接受所有主形状的实例,与UML模板的类主形状只接受UML模板的成员和分隔符主形状的实例
图11 - 比较一个接受所有主控形状实例的对象主控形状实例和只接受UML Stencil成员和分隔符主控形状实例的类主控形状实例
我在ShapeSheet窗口的“用户定义单元格”部分中为“User.msvSDListItemMaster”设置了=USE("Property")
,但我认为它没有发挥作用。
第5个问题:
为什么不能像将UML模板的成员和分隔符主控形状的连接实例添加到UML模板的类主控形状实例(图12)中一样,在对象主控形状实例的属性主控形状上添加实例时不显示插入成员的选项?
图12 - 比较接受所有主控形状实例的对象主控形状和一个属性主控形状实例与UML模板的类主控形状及其成员,以显示插入成员的选项
第6个(最后的)问题:
为什么对象主控形状实例的行为和操作类似于容器,即使我已将其/它们的主控对象更改为列表?