FAQ
VBフォームにApplicationオブジェクトを渡す方法

ナレッジ番号:5460 | 登録日:2023/07/27 | 更新日:2024/11/21

【概要】

フォームを含んだVB ActiveX DLLプロジェクトを開発する場合、
フォームがArcMapを認識する必要があります。このような場合、
フォームにApplicationオブジェクトを渡す必要があります。


【手順】

ステップ1でVisual Basic ActiveX DLLプロジェクトを作成する際、以下のように設定します。

・クラス名:clsApp

・プロジェクト名:AoDemo

・プロジェクト プロパティの「プロジェクトの説明」に"ArcObjects Application"と入力

・クラスモジュール・ファイル:clsApp.cls

・プロジェクト・ファイル:AoDemo_clsApp.vbp

・DLLファイル:AoDemo_clsApp.dll


  1. ICommandをインプリメントしたVisual Basic ActiveX DLLプロジェクトを作成します。これを行うには、下記の関連情報「Visual BasicでICommandをインプリメントする方法」をご覧下さい。

  2. プロジェクトにフォームを追加し、フォーム名をfrmAppにします。

  3. frmAppコード・モジュールの一般宣言セクションでApplicationを参照するモジュール・レベル変数を宣言します。

    
    Option Explicit
    
    Private m_pApp As IApplication
  4. frmApp内にApplicationに対するPublic Get PropertyプロシージャおよびSet Propertyプロシージャを追加します。

    
    Public Property Set Application(ByVal pApp As IApplication)
      Set m_pApp = pApp
      ' *************************
      ' ここにカスタム・コードを追加します。
      ' *************************
    End Property                      
    
    
    
    
    
    Public Property Get Application() As IApplication
      Set Application = m_pApp
    End Property
    
    
    
  5. clsAppクラスモジュール内のICommand_Oncreateメソッドに対するコードを書き換えます。

    
    Private Sub ICommand_OnCreate(ByVal hook As Object)
      Set frmApp.Application = hook
    
    
    
    
    End Sub
    
    
    
  6. clsAppクラスモジュール内のClass_Terminate内でアプリケーションへの参照を解放します。

    
    Private Sub Class_Terminate()
      Set frmApp.Application = Nothing
      Unload frmApp
    End Sub
    
    

■関連情報

Visual BasicでICommandをインプリメントする方法

メタデータ

種類

製品