Document.ShapeAdded 事件 (Visio)

在将一个或多个形状添加到文档之后,发生此事件。

语法

表达式Shape 添加 (形状)

表达 一个代表 Document 对象的变量。

参数

名称 必需/可选 数据类型 说明
Shape 必需 [IVSHAPE] 已添加到文档的形状或形状组。

备注

如果形状Type 属性是 visTypeGroup (2) 或 visTypePage (1) ,Shape 对象可以用作 ShapeAdded 事件的源对象。

SelectionAddedShapeAdded 事件的相似之处在于它们都在创建形状之后触发。 它们的区别在于,当单个操作添加多个形状时它们的行为方式不同。 假定一个 Paste 操作创建三个新建形状。 ShapeAdded 事件触发三次并分别作用于三个对象中的每个对象。 SelectionAdded 事件触发一次,并作用于所选的三个新建形状所在的 Selection 对象。

若要确定 ShapeAdded 事件是由要添加到页面的新形状或形状组触发的,还是由分组的现有形状集触发的,还是由粘贴操作触发的,可以使用 Application.IsInScope 属性。 如果在传递 visCmdObjectGroupIsInScope 返回 True,则 ShapeAdded 事件由分组操作触发。 如果 IsInScope 在传递 visCmdUFEditPastevisCmdEditPasteSpecial 时返回 True,则 ShapeAdded 事件由粘贴操作触发。 如果在传递所有这些参数时 IsInScope 返回 False,则该事件必然由添加到页中的新建形状触发。

如果您使用 Microsoft Visual Basic 或 Visual Basic for Applications (VBA),则此主题中的语法描述的是一种通用而有效的事件处理方法。

如果要创建自己的 Event 对象,请使用 AddAddAdvise 方法。

若要创建可运行加载项的 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 支持和反馈,获取有关如何接收支持和提供反馈的指南。