【发布时间】:2012-06-27 13:23:31
【问题描述】:
我在 Visio 中有一个形状,它是一个组。组形状可以编辑其文本,并且在编辑时我希望其中一个子形状位于组形状中文本的右侧。
为此,我创建了一个 VBA 函数,它将组形状作为参数,并在 shapesheet 上的 TextText 事件中调用。
因此例程只需在组形状上调用 BoundingBox(visBBoxUprightText) 即可获取文本的边界并定位到 bbox 右侧的子形状。但边界似乎是错误的。它们有时会回到最后一个字符的左侧或右侧。
visBBoxUprightText 标志是否应该意味着除了在呈现的文本字符周围获取矩形坐标之外的其他含义?
编辑: 进一步研究它,我发现 BoundingBox 方法查看 shape.type 属性以确定边界框包含的内容。如果形状类型是 visGroup,那么它也将包含子形状,并且似乎没有标志强制它将组视为简单形状。
所以我想现在的问题是,有没有办法获得文本的边界框,忽略子形状?我尝试放置一个单独的子形状来保存文本,现在它就像一个魅力。
【问题讨论】:
-
进一步看,当子形状没有文本时,它似乎更接近正确。所以我想知道我是否必须以某种方式只指定父形状,而不是子形状。或者,或者,强制文本处于子形状,而不是组形状
-
乔恩,您可能想看看使用使用 TEXTWIDTH shapesheet 函数的 shapesheet 公式在功能上实现此功能。
-
谢谢@PatLeahy 几天前我确实这样做了,但我把问题留了下来,以确保有办法处理小组的事情,尽管我想这可能不是一件很常见的事情需要。
标签: vba visio shapesheet