问题标签 [shapesheet]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4165 浏览

visio - 如何将操作添加到 visio (2003)

在 visio shapesheet 中,可以添加操作。我想创建一个操作来更新另一个单元格的值(控件的位置)。怎么可能做到这一点。是需要单独的宏,还是可以直接指定?如何?

0 投票
1 回答
5561 浏览

vba - 如何在 VBA 中的形状之间复制 Visio shapesheet 部分

是否有一种方法可用于使用 VBA 将形状中的部分复制到另一个形状?我特别想将所有自定义属性和用户单元格从一个页面复制到另一个页面。

0 投票
2 回答
1062 浏览

xml - 打开不受信任的 visio 文档时如何强制 visio 重新评估公式

我有一个在 Visio 外部创建 Visio 文件 (VDX) 的模块。根据 SDK,这指的是“不受信任”的 XML。我通过从我的模具中复制 Masters 创建了我的 xml 文件,然后使用 XML 稀疏文件引用它们。

在我的稀疏 xml 中,我以这种方式覆盖形状的位置和大小:

我的形状是一个有子形状的组。

它可以工作,Visio 能够打开它,但子形状具有主形状的默认宽度和高度。形状之间的链接也没有正确路由。

如果我复制/粘贴到同一个新文件中,那么我会得到预期的结果。

我试图强制子形状的宽度和高度。我遇到同样的问题。

我尝试通过显式调用 Cell 类的 trigger() 方法在打开文档时使用 VBA 代码,我得到了预期的结果。它也可以,我打开形状表。该值是黑色的,我只是在单元格上按 Enter 键,我也得到了预期的结果。

我对这个问题的理解是,当我打开文档时,visio 不会评估我的子形状的公式。

不幸的是,我不能依靠宏来强制和更新单元格。我想知道是否有办法在我打开文档时强制重新评估我的子形状的公式。

提前致谢。

埃里克

0 投票
1 回答
649 浏览

hyperlink - 检查 Visio ShapeSheet 部分是否为空的公式

仅当至少有一个超链接(“超链接”部分非空)时,我才需要在形状上下文菜单中启用一项操作。

有这个公式吗?

0 投票
1 回答
679 浏览

vba - Visio VBA 获取文本的边界框

我在 Visio 中有一个形状,它是一个组。组形状可以编辑其文本,并且在编辑时,我希望其中一个子形状位于组形状中文本的右侧。

为此,我创建了一个将组形状作为参数的 VBA 函数,并在 shapesheet 上的 TextText 事件中调用它。

因此,例程只需在组形状上调用 BoundingBox(visBBoxUprightText) 以获取文本的边界并将子形状定位到 bbox 的右侧。但边界似乎是错误的。他们有时会回到最后一个字符的左侧或右侧。

visBBoxUprightText 标志是否应该意味着除了在呈现的文本字符周围获取矩形坐标之外的其他含义?

编辑:再看一看,我看到 BoundingBox 方法查看 shape.type 属性以确定边界框包含的内容。如果形状类型是 visGroup ,那么它也将包括子形状,并且似乎没有标志来强制它将组视为简单形状。

所以我想现在的问题是,有没有办法获得文本的边界框,忽略子形状?我尝试放置一个单独的子形状来保存文本,现在它就像一个魅力。

0 投票
1 回答
1945 浏览

shape - 如何在模具中隐藏 visio 形状组

我有一个复杂的模板,有许多小形状(sheet.6 到 43),分组为一组(sheet.44)。里面也有子群。

我想使用 shapesheet 公式隐藏该组以使用用户属性。

在一个简单的形状上我会设置:Geometry1.NoShow=sheet.44!user.isHidden Miscellaneous.HideText=sheet.44!user.isHidden

但是如何让它在所有子形状中继承呢?用 vba 吗?

用答案编辑:

感谢 Jon 确认除了 VBA 之外别无他法。这是我的 VBA 代码,适用于所有遇到同样问题的人。

再见!

0 投票
1 回答
2918 浏览

vba - 如何在 Visio 中使用 VBA 将形状添加到组

如何在不取消分组的情况下将形状添加到 visio 中的现有组中,因为我的组 shapesheet 中有许多自定义属性。我不希望使用它的子公式被破坏。

这是我的 VBA 代码的开头,但我找不到在组中添加形状的方法。

谢谢大家的答案。

0 投票
1 回答
3883 浏览

visio - 使用形状表为 Visio 形状创建唯一 ID

我对 Visio 和编程并不陌生,但我对在 Visio 中进行开发并不陌生。我正在使用 2007 并正在使用形状数据创建自己的自定义形状。我想在绘图的上下文中为我的所有形状创建一个 UniqueID。我创建了一个名为“Shape UniqueID”的形状数据元素。(ShapeSheet Prop.Shape_Unique_ID)我尝试使用下面的公式语法在属性的 ShapeSheet“值”单元格中生成唯一 ID(Shape.UniqueID 属性):
=UniqueID(visGetOrMakeGUID) 和 =UniqueID(1) 但 Visio不认为这是一个有效的公式..

我也尝试使用 DATA1(): =Guard(Data1()) 这给了我一个唯一的值但是如果你复制形状它不会更新。

我已下载 2007 SDK,但找不到用于读取属性的 Shapesheet 函数。

我还看到您可以设置页面,以便 UniqueID 始终位于使用的形状上,但我不知道如何打开它。

我的“偏好”是使用形状数据元素并设置它但是......

任何想法,将不胜感激?谢谢...斯科特

0 投票
3 回答
12191 浏览

visio - 在 Visio 组中保持纵横比和相对位置

我目前正在 Visio 2010 中创建自定义容器形状,但在获得正确的大小调整行为时遇到了一些问题。我的容器由一个主矩形和右上角的一个小三角形组成(见图)。这两个形状都是分组的。

由矩形和三角形组成的自定义容器

调整该组的大小时,我希望调整矩形的大小,但三角形应保持其原始大小和纵横比,并保持“附加”到矩形的一侧。

当我将三角形的调整大小行为设置为“使用组设置”(默认)时,调整大小时它会变形:

三角形变形

当我将三角形的调整大小行为设置为“仅重新定位”时,它不会保持附加到矩形:

三角形分离

有什么办法可以得到想要的行为?

0 投票
1 回答
3491 浏览

visio - Visio Page ShapeSheet reference in shape shapesheet formula

I'm trying to set the text field of a shape to the name of the layer it is on (Visio 2010). I should be able to set the formula to this:

=ThePage!Layers.Name[LayerMember]

but that doesn't work because LayerMember is a string and a shape can be on multiple layers, i.e., LayerMember = "3" if it is only on the 3rd layer but can be "3;2;5" if it is on three different layers. So, using LEFT(LayerMember, 1) gets the first value in the list but putting that in the index field of the above formula doesn't work either. Putting a static value in the index field works just fine but I want to be able to change the layer of a shape and have the text on the shape change to the layer name.

Using LEFT(LayerMember,1) returns a string. I can't find a way to convert the string value to a number to get the layer name value from the page's shapesheet.

I'm new at Visio but for some reason I can't figure this one out.