Document.ShapeAdded 事件 (Visio)
在将一个或多个形状添加到文档之后,发生此事件。
语法
表达式。Shape 添加 (形状)
表达 一个代表 Document 对象的变量。
参数
名称 | 必需/可选 | 数据类型 | 说明 |
---|---|---|---|
Shape | 必需 | [IVSHAPE] | 已添加到文档的形状或形状组。 |
备注
如果形状的 Type 属性是 visTypeGroup (2) 或 visTypePage (1) ,Shape 对象可以用作 ShapeAdded 事件的源对象。
SelectionAdded 和 ShapeAdded 事件的相似之处在于它们都在创建形状之后触发。 它们的区别在于,当单个操作添加多个形状时它们的行为方式不同。 假定一个 Paste 操作创建三个新建形状。 ShapeAdded 事件触发三次并分别作用于三个对象中的每个对象。 SelectionAdded 事件触发一次,并作用于所选的三个新建形状所在的 Selection 对象。
若要确定 ShapeAdded 事件是由要添加到页面的新形状或形状组触发的,还是由分组的现有形状集触发的,还是由粘贴操作触发的,可以使用 Application.IsInScope 属性。 如果在传递 visCmdObjectGroup 时 IsInScope 返回 True,则 ShapeAdded 事件由分组操作触发。 如果 IsInScope 在传递 visCmdUFEditPaste 或 visCmdEditPasteSpecial 时返回 True,则 ShapeAdded 事件由粘贴操作触发。 如果在传递所有这些参数时 IsInScope 返回 False,则该事件必然由添加到页中的新建形状触发。
如果您使用 Microsoft Visual Basic 或 Visual Basic for Applications (VBA),则此主题中的语法描述的是一种通用而有效的事件处理方法。
如果要创建自己的 Event 对象,请使用 Add 或 AddAdvise 方法。
若要创建可运行加载项的 Event 对象,请使用 Add 方法,因为它适用于 EventList 集合。
若要创建可接收通知的 Event 对象,请使用 AddAdvise 方法。
若要查找要创建的事件的事件代码,请参阅事件代码。
示例
此 VBA 示例说明了如何对添加到绘图中的、基于名为“正方形”的主控形状的形状进行计数。 将代码粘贴到 Visio 中活动文档的项目中。
DocumentSaved 事件处理程序在保存活动文档时运行。 处理程序初始化整数变量 intNumberOfSquares ,该变量用于存储计数。
每当向绘图页中添加形状时(无论该形状是从模具中拖动、使用绘图工具绘制还是从剪贴板中粘贴),都会运行 ShapeAdded 事件处理程序。 处理程序检查新形状的 Master 属性,如果形状基于 平方 母版,则递增 intNumberOfSquares。
Dim intNumberOfSquares As Integer
Private Sub Document_DocumentSaved(ByVal vsoDocument As Visio.IVDocument)
'Initialize number of squares added.
intNumberOfSquares = 0
End Sub
Private Sub Document_ShapeAdded(ByVal vsoShape As Visio.IVShape)
Dim vsoMaster As Visio.Master
'Get the Master property of the shape.
Set vsoMaster = vsoShape.Master
'Check whether the shape has a master. If not,
'the shape was created locally.
If Not (vsoMaster Is Nothing) Then
'Check whether the master is "Square".
If vsoMaster.Name = "Square" Then
'Increment the count for the number of squares added.
intNumberOfSquares = intNumberOfSquares + 1
End If
End If
MsgBox "Number of squares: " & intNumberOfSquares, vbInformation, _
"Document Created Example"
End Sub
支持和反馈
有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。