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

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

Define_

...

Com Class(#VA_EXCEL.Worksheet)

...

Name(#WorkSheet)

...

Reference(*Dynamic)

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

Set_

...

Ref Com(#Worksheet)

...

To(*

...

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

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

Invoke Method(#Worksheet.Activate)

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