バージョン 6.3.3
 —  プログラミングガイド  —

ActiveX コンポーネント SoftwareAG.NaturalX.Utilities

このドキュメントでは、次のトピックについて説明します。


目的

ActiveX コンポーネントの SoftwareAG.NaturalX.Utilities は、NaturalX および Natural スタジオプラグインのコンテキストで役立つ数多くの方法を提供します。

例えば、Natural アプリケーションでのこのコンポーネントの一般的な使用方法は、次のようになります。

define data
local
1 #util handle of object
1 #studio handle of object
end-define
*
* First create an instance of the class SoftwareAG.NaturalX.Utilities.
create object #util of 'SoftwareAG.NaturalX.Utilities.4'
if #util eq null-handle
  escape routine
end-if
*
* Now call the individual methods of the component, for instance
* to get access to the Natural Studio Automation Interface.
*
send 'GetThisNaturalStudio' to #util return #studio
if #studio eq null-handle
  escape routine
end-if
*
end

この例が正常に実行されるのは、Natural スタジオセッションで実行された場合のみです。 Natural ランタイムセッションや Natural デバッガの下で実行された場合は、GetThisNaturalStudio に対する呼び出しで NULL-HANDLE が返されます。 これは、Natural スタジオセッションのみに INatAutoStudio インターフェイスがあるためです。 プログラムが Natural デバッガの下で実行中である場合は、Natural スタジオ外部の Natural ランタイムセッションで効率的に実行されるため、GetThisNaturalStudio に対する呼び出しではやはり NULL-HANDLE が返されます。

この例を Natural デバッガの下でも実行されるようにするには、次のように修正して、Natural スタジオセッションの INatAutoStudio インターフェイスを取得する必要があります。

define data
local
1 #util handle of object
1 #studio handle of object
1 #rot handle of object
1 #ro (a) dynamic
end-define
*
* First create an instance of the class SoftwareAG.NaturalX.Utilities.
create object #util of 'SoftwareAG.NaturalX.Utilities.4'
if #util eq null-handle
  escape routine
end-if
*
* Now call the individual methods of the component, for instance
* to get access to the Natural Studio Automation Interface.
*
send 'GetThisNaturalStudio' to #util return #studio
if #studio eq null-handle
* We might be in a debugging session.
* Try to locate the Natural Studio session
* from which the debugger has been started.
* Retrieve the running objects table.
  send 'GetRunningObjects' to #util return #rot
  if #rot eq null-handle
    escape routine
  end-if
* Iterate across the running objects table.
  repeat
    send 'Next' to #rot return #ro
    if #ro eq ' '
      escape bottom
    end-if
*   If we hit a running Natural Studio session, we access it.
    if substring(#ro,1,13) eq 'NaturalStudio'
      send 'BindToObject' to #util
      with #ro (ad=o) return #studio
      escape bottom
    end-if
  end-repeat
end-if
*
end

Top of page

インターフェイス

個々のインターフェイス、そのメソッドおよび使用方法については、別のドキュメントで詳しく説明しています。

このコンポーネントでは、次のインターフェイスが提供されます。

Top of page