关于在应用程序中使用 Visio 绘图控件

Visio 包括一个 ActiveX 控件,即 Visio 绘图控件。

使用该控件可将 Visio 绘图版面的全部功能嵌入您的应用程序中。 可以利用完整的 Visio 对象模型 (API) 并且可以选择要公开的 Visio 用户界面的各个方面,以便更好地将 Visio 无缝集成到应用程序的用户界面中。

注意 可以在 Visual Basic 6.0、Visual C++ 6.0、Visual Studio 和其他 ActiveX 控件容器中嵌入 Visio 绘图控件。 但是,不能将 Visio 绘图控件嵌入另一个 Visio 绘图、另一个 ActiveX 控件、Visual Basic for Applications (VBA) 窗体或 Visio 解决方案窗口中。

入门

若要安装 Visio 绘图控件,请安装 Visio。 安装 Visio 时,您可以选择各种安装选项,包括“最小安装”选项。 如果要最大程度地减少计算机上的 Visio 安装文件大小,可以选择“ 最小安装”,它仅安装所需的最小 Visio 组件,包括 Visio 绘图应用程序和 Visio 绘图控件。 此安装选项不包括 Visio 解决方案或“Visio 帮助”(其中包括“自动化参考”和“ShapeSheet 参考”)。

若要将 Visio 绘图控件添加到 Visual Basic 6.0 中的 工具箱 ,请在“ 项目 ”菜单上单击“ 组件”,然后在“ 控件 ”列表中选择“ Microsoft Visio 15.0 绘图控件类型库”。 若要使控件在其他开发环境中可用,请参阅开发产品附带的文档。

在 Visual Basic 中打开 标准 EXE 项目并将控件添加到 “工具箱”后,双击控件的图标,将控件的实例添加到应用程序中的窗体中。 您可以添加多个控件实例,但是它们将共享同一个基础 Visio Application 对象。 因此,与控件的一个实例关联的可编程性对象和设置将反映在其他实例中。 例如,Application 对象的 Documents 集合将包括与控件的每个实例关联的 Document 对象。

在 Visio 绘图控件中打开 Visio 绘图

默认情况下,该控件将打开一个空白 Visio 文档(绘图)。 但是,您可以在设计时或运行时指定控件加载现有的 Visio 文档。 指定的文档必须可以被您的用户使用,不管是通过下列哪种方法:将文档随应用程序一起提供,或将文档放在用户可以访问的网络共享上(Intranet 网站或网站上)。 若要在设计时指定文档,请在 Visual Basic 项目的“属性”窗口中设置 Src 属性。 这是首选方法。 若要在运行时指定绘图,请在代码中设置 Src 属性,通常在 Form_Load () 过程中。 有关使用 Visio 绘图控件的自定义属性的详细信息,将在本主题中稍后以及本“自动化参考”的 Src 属性主题中介绍。

当您将 SRC 属性设置为将文件加载到 Visio 绘图控件中时,该控件将打开文件的副本,但是不会让原始文件保持打开状态来进行写入。 因此,不能使用 Document.Save 方法保存对加载到 Visio 绘图控件中的文件的更改。 要保存文件中的更改,请首先使用 SRC 属性将文件加载到 Visio 绘图控件中,然后将 SRC 设置为空字符串 ("")。 要将修改的文件保存到磁盘上,请使用 Document.SaveAs 方法。

如果在将绘图加载到 Visio 绘图控件后未将 SRC 属性设置为空字符串,则每次关闭并重新打开应用程序时,都会加载原始绘图,并且你或你的用户所做的任何修改都将丢失。

默认情况下,该控件启动时不显示 Visio 启动屏幕或“可用模板”选项卡。 此外,默认情况下,控件在启动时不显示停靠模具窗格,但如果使用 Src 属性指定已显示固定模具窗格的绘图,该窗格将在 Visio 绘图控件窗口中可见。 若要在空白绘图中显示模具窗格,请使用 Visio 对象模型中的 Document.OpenStencilWindow 方法。

默认情况下,尽管快捷菜单) 可用,但控件中不会显示 Visio 菜单和 Visio 工具栏 (。 但是,使用控件的 NegotiateMenusNegotiateToolbars 属性可显示这些项。 有关使用 Visio 绘图控件的自定义属性的详细信息,将在本主题中稍后以及本“自动化参考”的 NegotiateMenus 属性和 NegotiateToolbars 属性主题中介绍。

注意 从 Microsoft Visio 2010 开始,Office Fluent 用户界面 (UI) 替换以前的分层菜单、工具栏和任务窗格系统。 用于在以前版本的 Visio 中自定义用户界面的 VBA 对象和成员在 Visio 2013 中仍可用,但它们的功能不同。

您可以在应用程序中插入多个 Visio 绘图控件实例。 但是,控件的每个实例只能显示一个绘图窗口和一个文档。

获取对 Visio 对象模型的访问

若要获取对 Visio 对象模型的访问,请使用 Visio 绘图控件的 WindowDocument 属性。 您可以使用以下代码获取 Visio Window 对象:

Dim vsoWindow As Visio.Window
Set vsoWindow = DrawingControl1.Window

使用以下代码获取 Visio Document 对象:

Dim vsoDocument As Visio.Document
Set vsoDocument = DrawingControl1.Document

获取其中的一个对象后,就可以使用任意对象的 Application 属性获取 Visio Application 对象:

vsoWindow.Application
vsoDocument.Application

借助于这些对象便可访问 Visio 对象模型的其他所有对象。 例如,如果您要修改 Visio 用户界面以便仅显示白色 Visio 绘图版面,而不包括网格、滚动条、标尺和页标签,可在 Form_Load() 过程中使用以下代码:

Dim vsoWindow As Visio.Window
Set vsoWindow = DrawingControl1.Window
vsoWindow.ShowGrid = False
vsoWindow.ShowPageTabs = False
vsoWindow.ShowRulers = False
vsoWindow.ShowScrollBars = False

Visio 事件(包括键盘和鼠标事件)均可直接作为 DrawingControl 对象的成员使用。

一旦您可以访问 Visio 对象模型,便可使用该模型的所有标准对象、方法、属性和事件在您的程序中自动化和自定义控件。 有关使用 Visio 对象模型的对象和成员的详细信息,请参阅本“自动化参考”中的特定对象或成员主题。

由于旨在嵌入另一个应用程序中使用,Visio 绘图控件未在 Visio 中显示 Visual Basic 编辑器。 因此,控件中已打开的现有 Visio 绘图的 Visual Basic for Applications (VBA) 宏将不会运行。

此外,Visio 绘图控件未在用户界面中显示 Visio ShapeSheet。 但是,您可以使用自动化来获取和设置 ShapeSheet 单元格中的值和公式。

使用 Visio 绘图控件的自定义属性

下表说明了 Visio 绘图控件所显示的自定义属性。

属性 说明
Document 只读。 返回与 Visio 绘图控件实例关联的 Visio Document 对象。
HostID 读/写。 字符串 。 返回或设置分配给注册表项的 GUID 或其他字符串,该注册表项标识主机容器应用程序 (可执行程序) 。 默认值为空字符串。
NegotiateMenus 读/写。 Boolean 类型的值 。 指定控件是否可以将菜单与主机容器应用程序的菜单合并。 默认值为 False
NegotiateToolbars 读/写。 Boolean 类型的值 。 指定控件是否可以将工具栏与主机容器应用程序的工具栏合并。 默认值为 False
PageSizingBehavior 读/写。 枚举类型 VisPageSizingBehavior。 指定在将现有 Visio 绘图加载到控件实例时如何调整页面的大小以及形状的大小和位置。
Src 读/写。 字符串 。 指定在运行时加载到控件实例的现有 Visio 绘图的路径和文件名。 默认值为空字符串。
Window 只读。 返回与 Visio 绘图控件实例关联的 Visio Window 对象。 Window 属性仅当该控件已就位并处于活动状态时才可访问。

有关其中任何自定义属性的详细信息,以及查看演示如何使用这些属性的代码示例,请参阅此自动化参考中与这些属性关联的特定主题。

使用 Visio 绘图控件的键盘和鼠标事件

从 Visio 2003 开始,添加到 Visio 对象模型的新键盘和鼠标事件使程序能够响应控件中的用户键盘和鼠标输入。 例如,可以侦听控件中特定形状的鼠标单击,并编写代码来处理它们。 (有关如何使用这些事件在主机应用程序中推动操作的详细信息,请参阅本主题中的下一部分。)

下列新增事件可供使用:

  • KeyDown

  • KeyPress

  • KeyUp

  • MouseDown

  • MouseMove

  • MouseUp

这些事件类似于同名的 Visual Basic 事件,虽然它们所带的参数不同。 若要查看语法以及有关这些事件的其他信息,请参阅此自动化参考中与其关联的特定主题。 有关 Visual Basic 事件的详细信息,请查阅“Visual Basic 帮助”。

将 Visio 绘图控件集成到应用程序的用户界面中

使用主机应用程序中的事件或状态更改修改 Visio 绘图控件中的绘图。 此外,您可以使用 Visio 绘图控件中的事件驱动宿主应用程序中的操作或更改。 例如,您可以使用 Visio 绘图控件中的鼠标事件或键盘事件在宿主应用程序中显示用户界面元素,如窗体和消息框。 以下代码显示如何处理 Visio 绘图控件中的 MouseDown 事件(一次鼠标单击)以在 Visual Basic 6.0 应用程序中显示消息框。

Private Sub DrawingControl1_MouseDown(ByVal Button As Long, ByVal KeyButtonState As Long, ByVal x As Double, ByVal y As Double, CancelDefault As Boolean)
 
  MsgBox "You have clicked the mouse.", , "Drawing Control Event"
 
End Sub

支持和反馈

有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。