Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

[ Image Removed |../../index.htm#lansa/l4wdev07_0085.htm]
現在地:

...

ActiveXコンポーネントのタイプ・ライブラリを構築するやり方によっては、プロパティをVisual LANSA側に返すとき、そのタイプが静的に決まらず、IDispatchタイプになっていることがあります。したがってオブジェクトの具体的なプロパティ、イベント、メソッドは、実行時にしか解決できません。このようなオブジェクトとしては、例えばExcelのWorksheetオブジェクトがあります。 Image Removed

Image Added

オブジェクトのタイプが既知ではないため、そのプロパティ、イベント、メソッドを直接使う次のようなステートメントは、「Component IDispatch does not contain property/method/event X」というエラーになります。例えば、以下のステートメントでエラーが発生します。 invoke method

     invoke method(#va_excel.worksheets.item<'blad2'>.activate)

 
このようなIDispatchインターフェース型オブジェクトを使うためには、オブジェクト定義の際に動的参照である旨を指定しておき、そのプロパティ、メソッド、イベントを使う箇所では参照を明示的に記述する必要があります。  このようなIDispatchインターフェース型オブジェクトを使うためには、オブジェクト定義の際に動的参照である旨を指定しておき、そのプロパティ、メソッド、イベントを使う箇所では参照を明示的に記述する必要があります。

例えばExcelのワークシートをアクティブ化する場合、オブジェクトの定義は次のように記述します。

     Define_

...

Com Class(#VA_EXCEL.Worksheet)

...

 Name(#WorkSheet)

...

 Reference(*Dynamic)

...

 コード中では次のように明示的に参照を設定します。

     Set_Ref Com(#Worksheet)

...

 To(*

...

Dynamic #Excel.Worksheets.Item<'blad2'>)

...

 すると次のようにActiveteメソッドを使えるようになります。

     Invoke Method(#Worksheet.Activate)

 
コンポーネントのヘルプ  コンポーネントのヘルプ (F2) には、オブジェクトのタイプが IDispatch インターフェースであることが表示されます。実際のタイプについては、ActiveXコントロールの付属文書を参照してください。
[ Image Removed |../../index.htm#lansa/l4wdev07_0085.htm]