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

オブジェクトのリンクおよび埋め込み - OLE

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


Natural における OLE とは

Natural は、以下の OLE テクノロジをサポートします。

OLE に詳しくない場合は、Microsoft Win32 ソフトウェア開発キットのドキュメントを始めとする各種資料の 1 つを参照して、まず基本的な知識を得ることを強くお勧めします。

Top of page

OLE ドキュメントサポート

OLE ドキュメントとは、エンドユーザーが異なるアプリケーションの操作に気をとられずにデータに集中できるように、異なる Windows アプリケーションをシームレスに統合するテクノロジです。 OLE を使用すると、例えば Natural のダイアログに Word for Windows のドキュメントを埋め込むことができます。 エンドユーザーがドキュメントを編集するためにテキストコンテナに入ると、Word 機能全体が使用できます。 したがって、エンドユーザーが Word を起動する必要はありません。

OLE ドキュメントサポートは Natural のダイアログエレメント OLE コンテナコントロールによって提供されます。

OLE ドキュメントテクノロジは、コンテナアプリケーションおよびサーバーアプリケーションを定義します。 コンテナアプリケーションとは、サーバーアプリケーションによって作成されたオブジェクトを使用できるアプリケーションです。 これらのオブジェクトはオブジェクトのリンクまたは埋め込みによって使用されます。 ダイアログエディタOLE コンテナコントロールを提供するので、この意味で Natural はコンテナアプリケーションです。 典型的なサーバーアプリケーションは Microsoft Word で、Word ドキュメントは Natural によって使用されるオブジェクトになります。

Top of page

埋め込みとリンク

埋め込みオブジェクトはビジュアル編集("インプレースアクティベーション")で編集されます。これに対して、リンクオブジェクトを編集するには特別のサーバーウィンドウを開く必要があります。

Natural は、ドキュメントの埋め込みおよびリンクのためのダイアログエレメントとして OLE コンテナコントロールを提供します。 さらに、埋め込みドキュメントを内部 Natural 形式で保存およびロードするためのアクションも提供します。 デフォルトでは、内部形式で埋め込まれるオブジェクトは、%NATGUI_BMP% ディレクトリにデフォルト拡張子 .neo(Natural Embedded Object)で保存されます。

Start of instruction set ダイアログの開始時に埋め込みオブジェクトを OLE コンテナに表示するには

  1. コンテナコントロールの属性ウィンドウを起動します。

  2. [タイプ]エントリを[既存 OLE オブジェクト]に設定します。

  3. [名前]フィールドでファイル指定を選択します。

Start of instruction setランタイム時に埋め込みオブジェクトをダイナミックに表示するには

Start of instruction setダイアログの開始時にリンクオブジェクトを OLE コンテナに表示するには

  1. コンテナコントロールの属性ウィンドウを起動します。

  2. [タイプ]エントリを[OLE サーバー]に設定します。

  3. 表示された[Select OLE Server or Document]ダイアログで、[ファイルから作成]を選択してファイル指定を選択します。

Start of instruction setランタイム時にリンクオブジェクトをダイナミックに表示するには

Top of page

ビジュアル編集 - インプレースアクティベーション

インプレースアクティベーションとは、エンドユーザーがコンテナアプリケーションのウィンドウでサーバーアプリケーションを起動できることを意味します。 このサーバーアプリケーションは、Natural ダイアログの OLE コンテナコントロールに埋め込まれるオブジェクトに関連付けられます。 OLE コンテナコントロールをダブルクリックすると、サーバーアプリケーションが起動されます。 Natural ダイアログのツールバーおよびメニューバーコントロールはサーバーアプリケーションのツールバーおよびメニューとマージされます。 その結果、ダイアログに、サーバーの機能を使用したオブジェクトの編集を可能にするツールバー項目およびメニュー項目が組み込まれます。

Top of page

ActiveX コントロールサポート

ActiveX コントロールサポートによって、Natural プログラマは Natural ダイアログ内で多くのサードパーティ製 ActiveX コントロールを使用できます。 Natural では、ActiveX コントロールのプロパティおよびメソッドに直接アクセスすることも、ActiveX コントロールのイベントをプログラムすることもできます。

ActiveX コントロールサポートは Natural のダイアログエレメント "ActiveX コントロール" によって提供されます。 詳細については、「ActiveX コントロールの操作」を参照してください。

Top of page

OLE コンテナコントロール

以下では次のトピックについて説明します。

OLE コンテナコントロールの作成

OLE コンテナコントロールは、ダイアログエディタでスタティックに作成することも、ランタイム時にダイナミックに作成することもできます。

ダイアログエディタで OLE コンテナコントロールを作成する

OLE コンテナコントロールを使用することによって、サーバーアプリケーションを統合できます。 サーバーアプリケーションは、OLE コンテナコントロールの属性ウィンドウの[タイプ]エントリに指定する[オブジェクト情報]グループフレームによって、以下の 3 つの方法で統合できます。

Start of instruction setダイアログエディタで OLE コンテナコントロールを作成するには

  1. ダイアログエディタのメインメニューを[挿入][OLE コンテナ]の順に選択します。

  2. マウスの右ボタンを押したまま縦/横方向にドラッグすることによって矩形を描画し、適切なところでボタンから手を離します。

    空の OLE コンテナが作成されます。

Start of instruction set ダイアログの開始時に OLE コンテナにドキュメントを表示するには

  1. OLE コンテナコントロールをダブルクリックして属性ウィンドウを開きます。

  2. [タイプ]選択ボックスで、外部ドキュメントをリンクするために[OLE サーバー]を選択します。 または、埋め込みオブジェクトを読み取るために[既存 OLE オブジェクト]を選択します。

  3. [..]ボタンを押して、外部または埋め込みオブジェクトファイルを選択します。

ランタイム時に OLE コンテナをダイナミックに作成する

イベントハンドラセクションで例を入力する前に、ダイアログのローカルデータエリアで OLE コンテナコントロールのハンドル変数を宣言します。

01 #OCT-1 HANDLE OF OLECONTAINER

ランタイム時に OLE コンテナコントロールを作成して外部ドキュメントにリンクする例は、以下のとおりです。

PROCESS GUI ACTION ADD WITH 
PARAMETERS 
   HANDLE-VARIABLE = #OCT-1 
   TYPE = OLECONTAINER 
   SERVER-OBJECT = 'PICTURE.BMP' 
   RECTANGLE-X = 56 
   RECTANGLE-Y = 32 
   RECTANGLE-W = 336 
   RECTANGLE-H = 160 
   PARENT = #DLG$WINDOW 
   SUPPRESS-CLICK-EVENT = SUPPRESSED 
   SUPPRESS-DBL-CLICK-EVENT = SUPPRESSED 
   SUPPRESS-CLOSE-EVENT = SUPPRESSED 
   SUPPRESS-ACTIVATE-EVENT = SUPPRESSED 
   SUPPRESS-CHANGE-EVENT = SUPPRESSED 
END-PARAMETERS GIVING *ERROR

ランタイム時に OLE コンテナコントロールを作成して Natural 埋め込みオブジェクトを埋め込む例は、以下のとおりです。

PROCESS GUI ACTION ADD WITH 
PARAMETERS 
   HANDLE-VARIABLE = #OCT-1 
   TYPE = OLECONTAINER 
   EMBEDDED-OBJECT = 'SLIDE.NEO' 
   RECTANGLE-X = 56 
   RECTANGLE-Y = 32 
   RECTANGLE-W = 336 
   RECTANGLE-H = 160 
   PARENT = #DLG$WINDOW 
   SUPPRESS-CLICK-EVENT = SUPPRESSED 
   SUPPRESS-DBL-CLICK-EVENT = SUPPRESSED 
   SUPPRESS-CLOSE-EVENT = SUPPRESSED 
   SUPPRESS-ACTIVATE-EVENT = SUPPRESSED 
   SUPPRESS-CHANGE-EVENT = SUPPRESSED 
   END-PARAMETERS GIVING *ERROR

ランタイム時に OLE コンテナを消去または削除する

このセクションでは、ランタイム時に OLE コンテナを消去または削除する例について説明します。

イベントハンドラセクションで例を入力する前に、ダイアログのローカルデータエリアで OLE コンテナコントロールのハンドル変数を宣言します。

01 #OCT-1 HANDLE OF OLECONTAINER

OLE コンテナコントロールを消去(含まれるドキュメントを削除)する例は、以下のとおりです。

PROCESS GUI ACTION CLEAR WITH #OCT-1

OLE コンテナコントロールを削除する例は、以下のとおりです。

PROCESS GUI ACTION DELETE WITH #OCT-1

OLE コンテナコントロールとダイアログのメニューバー

メニュー項目の属性 MENU-ITEM-OLE は、サーバーのインプレースアクティベーション中に当該メニュー項目を表示するかどうかと表示場所を決める 4 つの異なる値を取ることができます。

また、メニュー項目の属性 MENU-ITEM-TYPE も値 MT-OBJECTVERBS を持ちます。 これにより、OLE コンテナコントロールが使用できるサーバーアクション(コマンド)をこのメニュー項目に表示するようにできます。

その他の OLE コンテナコントロールの機能

OLE コンテナコントロールにドキュメントを表示中に OLE コンテナコントロールの矩形内をダブルクリックすると、サーバーのデフォルトコマンドを起動できます。 これは、PROCESS GUI ステートメントの OLE-ACTIVATE アクションを実行することと同等です。 さらに、エンドユーザーは、ポップアップメニューを表示して、そこからサーバーコマンドを選択することもできます。 ポップアップメニューは、OLE コンテナ内でマウスの右ボタンをクリックすると表示されます。 そこで希望するコマンドを選択してからマウスの右ボタンを離します。

OLE コンテナコントロールMODIFIABLE 属性に FALSE を設定すると、コンテナをダブルクリックしてもサーバーのデフォルトコマンドは起動されません。また、マウスの右ボタンをクリックしても使用可能なサーバーコマンドを含んだポップアップメニューは表示されません(「標準化されたプロシージャの実行」も参照)。

ビジュアル編集(インプレースアクティベーション)中、サーバーはドキュメントの編集に Natural ダイアログを使用します。 サーバーが自分のタスクとして実行するのではなく、Natural 処理が続きます。 したがって、イベントコードを実行して、例えばタイマのイベントセクションで PROCESS GUI ACTION OLE-DEACTIVATE, WITH #OCT-1 を指定することによってビジュアル編集を一定時間に制限できます(「標準化されたプロシージャの実行」も参照)。

Top of page

属性、イベント、および PROCESS GUI ステートメントアクション

以下のセクションに、OLE コンテナコントロールに特別に適用されるすべての属性、イベント、および PROCESS GUI ステートメントアクションをリストします。

属性

OLE コンテナコントロールに提供されている OLE 固有の属性は、以下のとおりです。

イベント

サーバーアプリケーションが起動されると、以下の OLE 固有のイベントが発生します。

PROCESS GUI ステートメントアクション

OLE コンテナコントロールに提供されている OLE 固有の PROCESS GUI ステートメントアクションは、以下のとおりです。

Top of page