Visio ShapeSheet ShapeData:保持两行同步

Visio ShapeSheet ShapeData: keep two rows in sync

我有一个形状的 ShapeSheet 的两个形状数据行:

Shape Data  Label    Prompt   Type Format                                                                                                                 Value                       Invisible
Prop.Type   "Type"   ""         4 "Alpha;Beta;Gamma;Delta;Epsilon;Zeta;Eta;Theta;Iota;Kappa" INDEX(4,Prop.Type.Format)   False
Prop.Abbrev "Abbrev" No Formula 4 "A;B;G;D;E;Z;E;T;I;K"                                      INDEX(4,Prop.Abbrev.Format) True

我打算使用它的方式是让用户 select 类型,比如 Epsilon,然后让缩写自动切换到 Prop.Abbrev.Format 中的相应值。

注意:此处使用的值是我的应用程序实际值的占位符,此处未显示,因此它们不会分散我需要的真正答案,即如何将 select 离子保留在选择或更改第一个时同步。

感谢您的帮助!

我这台机器上没有 Visio,所以我无法复制和粘贴有效的解决方案。该方法有点复杂,但非常灵活。

将您的列表保存在 User 部分,而不是 Prop - 这将成为在属性中使用的基础数据。如果您使用的是主模板,那么这也有助于管理字段。

您现在也可以在数据中存储索引 - 该索引指向数组中的适当值。您可以使用操作和侧边菜单来设置索引,当正确引用时,这意味着您可以在侧边菜单中使用全名 and/or 缩写,而 ShapeSheet 会在下面完成所有工作。

您要查看的功能是:

  • Index(例如 INDEX(1,User.Type) 将 return "Beta"。(基于 0)
  • Lookup(例如 LOOKUP("D", User.Abbrev) 将 return“3”。(基于 0)
  • GetAtRef
  • SetAtRef
  • SetAtRefExpr
  • SetF

我有一个类似的业务问题,它依赖于根据形状数据的值设置背景颜色。您的最终解决方案最终可能包含如下公式:=SETF(GetRef(Prop.Type),"GUARD(INDEX(LOOKUP(Prop.X,Prop.X.Format),User.Type))").

有关更深入的讨论 - 查看 https://superuser.com/questions/1277331/fillforegnd-in-shapesheet-using-wrong-data and the extended discussion at http://visguy.com/vgforum/index.php?topic=8205.15 - 后者 link 还包括一个带有工作形状表的示例文件(嗯,工作到他们暴露我的问题的程度)。