このドキュメントでは、次のトピックについて説明します。
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
個々のインターフェイス、そのメソッドおよび使用方法については、別のドキュメントで詳しく説明しています。
このコンポーネントでは、次のインターフェイスが提供されます。