關於在應用程式中使用 Visio Drawing Control
Visio 包含 ActiveX 控制項 Visio Drawing Control。
您可以使用此控制項,將 Visio 繪圖介面的完整功能內嵌至應用程式。 您可以利用完整的 Visio 物件模型 (API) ,也可以挑選您想要公開的 Visio 使用者介面層面,以更順暢地將 Visio 整合到應用程式的使用者介面中。
注意 您可以在 Visual Basic 6.0、Visual C++ 6.0、Visual Studio 和其他 ActiveX 控制項容器中內嵌 Visio Drawing Control。 不過,您無法在另一個 Visio 繪圖、另一個 ActiveX 控制項、Visual Basic for Applications (VBA) 表單或 Visio 解決方案視窗中內嵌 Visio 繪圖控制項。
快速入門
若要安裝 Visio Drawing Control,請安裝 Visio。 當您安裝 Visio 時,可以選擇不同的安裝選項,包括 [最小安裝] 選項。 如果您想要將電腦上 Visio 的安裝檔案大小降至最低,您可以選擇 [ 最小安裝],只安裝所需的最低 Visio 元件,包括 Visio 繪圖應用程式和 Visio Drawing Control。 此安裝選項不包含包含自動化參考和 ShapeSheet 參考) 的 Visio 解決方案或 Visio 說明 (。
若要將 Visio Drawing Control 新增至 Visual Basic 6.0 中的 [工具箱 ],請在 [ 專案 ] 功能表上按一下 [ 元件],然後在 [ 控制項] 清單中選取 [Microsoft Visio 15.0 繪圖控制項型別程式庫]。 若要在其他開發環境中提供控制項,請參閱開發產品隨附的檔。
在 Visual Basic 中開啟 標準 EXE 專案並將控制項新增至 [工具箱] 之後,按兩下控制項的圖示,將控制項的實例新增至應用程式中的表單。 您可以新增控制項的多個實例,但它們會共用相同的基礎 Visio Application 物件。 因此,與控制項的一個實例相關聯的可程式性物件和設定將會反映在其他實例中。 例如,Application物件的Documents集合會包含與控制項的每個實例相關聯的Document物件。
在控制項開啟 Visio 繪圖
根據預設,控制項會開啟空白的 Visio 檔 (繪圖) 。 不過,您可以在設計階段或執行時間指定控制項載入現有的 Visio 檔。 您指定的檔必須可供使用者使用,可能是因為您將它與您的應用程式一起提供,或因為該檔存在於他們可存取的網路共用、內部網路網站或網頁上。 若要在設計階段指定檔,請在 Visual Basic 專案中的 [屬性] 視窗中設定Src屬性。 這是慣用的方法。 若要在執行時間指定繪圖,請在程式碼中設定 Src 屬性,通常是在 Form_Load () 程式中。 本主題稍後和本自動化參考中的 Src 屬性主題提供使用 Visio Drawing Control 自訂屬性的詳細資訊。
當您設定 SRC 屬性將檔案載入 Visio Drawing Control 時,控制項會開啟檔案複本,而不會保持開啟原始檔案來寫入。 因此,您無法使用 Document.Save 方法,將變更儲存至載入 Visio Drawing Control 的檔案。 要儲存檔案的變更,請先使用 SRC 屬性,將檔案載入 Visio Drawing Control,然後將 SRC 設定成空字串 ("")。 要將修改的檔案儲存至磁碟,請使用 Document.SaveAs 方法。
如果您在將繪圖載入 Visio Drawing Control 之後未將 SRC 屬性設定為空字串,則每次關閉並重新開啟應用程式時,都會載入原始繪圖,而且您或您的使用者所做的任何修改都將遺失。
依預設,控制項不會在啟動時顯示 Visio 啟動畫面或 [可用範本] 索引標籤。 此外,根據預設,控制項不會在啟動時顯示停駐的樣板窗格,但如果您使用 Src 屬性來指定已經顯示停駐樣板窗格的繪圖,該窗格將會顯示在 [Visio 繪圖控制項] 視窗中。 若要在空白繪圖顯示樣板窗格,請使用 Visio 物件模型中的 Document.OpenStencilWindow 方法。
根據預設,Visio 功能表或 Visio 工具列都不會顯示在控制項 (,雖然快捷方式功能表) 。 不過,您可以使用控制項的 NegotiateMenus 和 NegotiateToolbars 屬性,來顯示這些項目。 使用 Visio Drawing Control 自訂屬性的相關資訊,將於本主題稍後以及<自動化參考>中的 NegotiateMenus 屬性和 NegotiateToolbars 屬性主題中描述。
注意 從 Microsoft Visio 2010 開始,Office Fluent 使用者介面 (UI) 取代先前的階層式功能表、工具列和工作窗格系統。 您用來在舊版 Visio 中自訂使用者介面的 VBA 物件和成員仍可在 Visio 2013 中使用,但其運作方式不同。
您可以在應用程式插入多個 Visio Drawing Control 的例項。 不過,控制項的每個實例只能顯示一個繪圖視窗和一份檔。
取得 Visio 物件模型的存取權
要取得 Visio 物件模型的存取權,請使用 Visio Drawing Control 的 Window 或 Document 屬性。 使用下列程式碼,取得 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 Drawing Control 會內嵌在其他應用程式,所以它不會在 Visio 公開 Visual Basic 編輯器。 因此,在控制項開啟的現有 Visio 繪圖中的 Visual Basic for Applications (VBA) 巨集將不會執行。
此外,Visio Drawing Control 不會在使用者介面公開 Visio ShapeSheet。 不過,您可以使用 [自動化],取得和設定 ShapeSheet 儲存格中的值和公式。
使用 Visio Drawing Control 的自訂屬性
以下表格描述 Visio Drawing Control 公開的自訂屬性。
屬性 | 描述 |
---|---|
Document | 唯讀。 會傳回與 Visio Drawing Control 實例相關聯的 Visio Document 物件。 |
HostID | 讀取/寫入。 字串 。 傳回或設定分派至登錄機碼的 GUID 或其他字串,可識別主機容器應用程式 (您的可執行程式)。 預設值是空字串。 |
NegotiateMenus | 讀取/寫入。 布林值 。 指定控制項是否可以將功能表合併到這些主機容器應用程式。 預設值是 False。 |
NegotiateToolbars | 讀取/寫入。 布林值 。 指定控制項是否可以合併工具列與主機容器應用程式的工具列。 預設值是 False。 |
PageSizingBehavior | 可讀寫。 列舉的類型 VisPageSizingBehavior。 指定當現有 Visio 繪圖載入控制項的例項時,頁面的大小調整方式以及圖形的大小和位置調整方式。 |
Src | 讀取/寫入。 字串 。 指定在執行階段載入控制項例項的現有 Visio 繪圖之路徑和檔案名稱。 預設值是空字串。 |
Window | 唯讀。 會傳回與 Visio Drawing Control 實例相關聯的 Visio Window 物件。 Window 屬性只有在控制項是就地作用中時,才可以存取。 |
如需上述任何自訂屬性的詳細資訊,以及檢視示範如何使用它們的程式碼範例,請參閱此自動化參考中與這些屬性相關聯的特定主題。
在 Visio 繪圖控制項使用鍵盤和滑鼠事件
從 Visio 2003 開始,新增至 Visio 物件模型的新鍵盤和滑鼠事件可讓您的程式回應控制項中的使用者鍵盤和滑鼠輸入。 例如,您可以接聽控制項中的滑鼠點選特定圖形,並撰寫程式碼來處理它們。 (如需如何使用這些事件在主應用程式中驅動動作的詳細資訊,請參閱本主題中的下一節。)
以下是可用的新事件:
KeyDown
KeyPress
KeyUp
MouseDown
MouseMove
MouseUp
這些事件類似於名稱相同的 Visual Basic 事件,雖然它們使用的引數不同。 若要檢視語法,以及有關這些事件的其他資訊,請參閱此自動化參考中與其相關聯的特定主題。 如需關於 Visual Basic 事件的詳細資訊,請參閱 Visual Basic 說明。
將 Visio Drawing Control 整合到應用程式的使用者介面
使用主應用程式中的事件或狀態變更來修改 Visio Drawing Control 中的繪圖。 此外,您可以在 Visio Drawing Control 使用事件,以在主機應用程式驅動動作或變更。 例如,您可以在 Visio Drawing Control 使用滑鼠事件或鍵盤事件,以顯示使用者介面元素,例如主機應用程式中的表單和訊息方塊。 下列程式碼顯示如何在 Visio Drawing Control 處理 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 支援與意見反應。