このドキュメントでは、次のトピックについて説明します。
Natural は、以下の OLE テクノロジをサポートします。
OLE ドキュメント
OLE ビジュアル編集(インプレースアクティベーション)
ActiveX コントロール
OLE に詳しくない場合は、Microsoft Win32 ソフトウェア開発キットのドキュメントを始めとする各種資料の 1 つを参照して、まず基本的な知識を得ることを強くお勧めします。
OLE ドキュメントとは、エンドユーザーが異なるアプリケーションの操作に気をとられずにデータに集中できるように、異なる Windows アプリケーションをシームレスに統合するテクノロジです。 OLE を使用すると、例えば Natural のダイアログに Word for Windows のドキュメントを埋め込むことができます。 エンドユーザーがドキュメントを編集するためにテキストコンテナに入ると、Word 機能全体が使用できます。 したがって、エンドユーザーが Word を起動する必要はありません。
OLE ドキュメントサポートは Natural のダイアログエレメント OLE コンテナコントロールによって提供されます。
OLE ドキュメントテクノロジは、コンテナアプリケーションおよびサーバーアプリケーションを定義します。 コンテナアプリケーションとは、サーバーアプリケーションによって作成されたオブジェクトを使用できるアプリケーションです。 これらのオブジェクトはオブジェクトのリンクまたは埋め込みによって使用されます。 ダイアログエディタは OLE コンテナコントロールを提供するので、この意味で Natural はコンテナアプリケーションです。 典型的なサーバーアプリケーションは Microsoft Word で、Word ドキュメントは Natural によって使用されるオブジェクトになります。
リンクとは、外部ファイルへのリンクを介してドキュメントの内容にアクセスすることを意味します。 このファイルは、サーバーの形式で保存されます(例えば、.rtf 形式のファイルは Natural 外のファイルシステムに保存されます。外部ファイルシステムに存在するサーバーとしては Microsoft Word などがあります。)
埋め込みとは、ドキュメントの内容がコンテナアプリケーションで管理され、コンテナの内部形式で保存されることを意味します。 埋め込みドキュメントは、以下のいずれかの方法で作成されます。
ドキュメントを新規にコンテナアプリケーションに構築する。
外部ドキュメントをロードする。
埋め込みオブジェクトはビジュアル編集("インプレースアクティベーション")で編集されます。これに対して、リンクオブジェクトを編集するには特別のサーバーウィンドウを開く必要があります。
Natural は、ドキュメントの埋め込みおよびリンクのためのダイアログエレメントとして OLE コンテナコントロールを提供します。 さらに、埋め込みドキュメントを内部 Natural 形式で保存およびロードするためのアクションも提供します。 デフォルトでは、内部形式で埋め込まれるオブジェクトは、%NATGUI_BMP% ディレクトリにデフォルト拡張子 .neo(Natural Embedded Object)で保存されます。
ダイアログの開始時に埋め込みオブジェクトを OLE コンテナに表示するには
コンテナコントロールの属性ウィンドウを起動します。
[タイプ]エントリを[既存 OLE オブジェクト]に設定します。
[名前]フィールドでファイル指定を選択します。
ランタイム時に埋め込みオブジェクトをダイナミックに表示するには
PROCESS GUI
ステートメントの OLE-READ-FROM-FILE
アクションを使用します。
ダイアログの開始時にリンクオブジェクトを OLE コンテナに表示するには
コンテナコントロールの属性ウィンドウを起動します。
[タイプ]エントリを[OLE サーバー]に設定します。
表示された[Select OLE Server or Document]ダイアログで、[ファイルから作成]を選択してファイル指定を選択します。
ランタイム時にリンクオブジェクトをダイナミックに表示するには
SERVER-OBJECT
属性に外部ドキュメントのファイル指定を割り当てます。
インプレースアクティベーションとは、エンドユーザーがコンテナアプリケーションのウィンドウでサーバーアプリケーションを起動できることを意味します。 このサーバーアプリケーションは、Natural ダイアログの OLE コンテナコントロールに埋め込まれるオブジェクトに関連付けられます。 OLE コンテナコントロールをダブルクリックすると、サーバーアプリケーションが起動されます。 Natural ダイアログのツールバーおよびメニューバーコントロールはサーバーアプリケーションのツールバーおよびメニューとマージされます。 その結果、ダイアログに、サーバーの機能を使用したオブジェクトの編集を可能にするツールバー項目およびメニュー項目が組み込まれます。
ActiveX コントロールサポートによって、Natural プログラマは Natural ダイアログ内で多くのサードパーティ製 ActiveX コントロールを使用できます。 Natural では、ActiveX コントロールのプロパティおよびメソッドに直接アクセスすることも、ActiveX コントロールのイベントをプログラムすることもできます。
ActiveX コントロールサポートは Natural のダイアログエレメント "ActiveX コントロール" によって提供されます。 詳細については、「ActiveX コントロールの操作」を参照してください。
以下では次のトピックについて説明します。
OLE コンテナコントロールは、ダイアログエディタでスタティックに作成することも、ランタイム時にダイナミックに作成することもできます。
OLE コンテナコントロールを使用することによって、サーバーアプリケーションを統合できます。 サーバーアプリケーションは、OLE コンテナコントロールの属性ウィンドウの[タイプ]エントリに指定する[オブジェクト情報]グループフレームによって、以下の 3 つの方法で統合できます。
タイプ:[新規 OLE オブジェクト]。 挿入可能なオブジェクトのためのプレースホルダの働きをする OLE コンテナコントロールを作成します。 ランタイム時にサーバーアプリケーションを開始することによって埋め込みオブジェクトを作成できます。 埋め込みオブジェクトを Natural の埋め込みオブジェクト(.neo ファイル)として保存できます。
タイプ:[既存 OLE オブジェクト]。 OLE コンテナコントロール内の既存の埋め込みオブジェクトを変更します。 埋め込みオブジェクトは Natural の埋め込みオブジェクト(.neo ファイル)として保存されます。
タイプ:[OLE サーバー]。 アプリケーション内にネイティブな OLE オブジェクトを作成するか、外部オブジェクトへのリンクを作成します。
ダイアログエディタで OLE コンテナコントロールを作成するには
ダイアログエディタのメインメニューを 、 の順に選択します。
マウスの右ボタンを押したまま縦/横方向にドラッグすることによって矩形を描画し、適切なところでボタンから手を離します。
空の OLE コンテナが作成されます。
ダイアログの開始時に OLE コンテナにドキュメントを表示するには
OLE コンテナコントロールをダブルクリックして属性ウィンドウを開きます。
[タイプ]選択ボックスで、外部ドキュメントをリンクするために[OLE サーバー]を選択します。 または、埋め込みオブジェクトを読み取るために[既存 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 コンテナコントロールのハンドル変数を宣言します。
01 #OCT-1 HANDLE OF OLECONTAINER
OLE コンテナコントロールを消去(含まれるドキュメントを削除)する例は、以下のとおりです。
PROCESS GUI ACTION CLEAR WITH #OCT-1
OLE コンテナコントロールを削除する例は、以下のとおりです。
PROCESS GUI ACTION DELETE WITH #OCT-1
メニュー項目の属性 MENU-ITEM-OLE
は、サーバーのインプレースアクティベーション中に当該メニュー項目を表示するかどうかと表示場所を決める 4 つの異なる値を取ることができます。
また、メニュー項目の属性 MENU-ITEM-TYPE
も値 MT-OBJECTVERBS
を持ちます。 これにより、OLE コンテナコントロールが使用できるサーバーアクション(コマンド)をこのメニュー項目に表示するようにできます。
OLE コンテナコントロールにドキュメントを表示中に OLE コンテナコントロールの矩形内をダブルクリックすると、サーバーのデフォルトコマンドを起動できます。 これは、PROCESS GUI
ステートメントの OLE-ACTIVATE
アクションを実行することと同等です。 さらに、エンドユーザーは、ポップアップメニューを表示して、そこからサーバーコマンドを選択することもできます。 ポップアップメニューは、OLE コンテナ内でマウスの右ボタンをクリックすると表示されます。 そこで希望するコマンドを選択してからマウスの右ボタンを離します。
OLE コンテナコントロールの MODIFIABLE
属性に FALSE
を設定すると、コンテナをダブルクリックしてもサーバーのデフォルトコマンドは起動されません。また、マウスの右ボタンをクリックしても使用可能なサーバーコマンドを含んだポップアップメニューは表示されません(「標準化されたプロシージャの実行」も参照)。
ビジュアル編集(インプレースアクティベーション)中、サーバーはドキュメントの編集に Natural ダイアログを使用します。 サーバーが自分のタスクとして実行するのではなく、Natural 処理が続きます。 したがって、イベントコードを実行して、例えばタイマのイベントセクションで
PROCESS GUI ACTION
OLE-DEACTIVATE
, WITH #OCT-1
を指定することによってビジュアル編集を一定時間に制限できます(「標準化されたプロシージャの実行」も参照)。
以下のセクションに、OLE コンテナコントロールに特別に適用されるすべての属性、イベント、および PROCESS GUI
ステートメントアクションをリストします。
OLE コンテナコントロールに提供されている OLE 固有の属性は、以下のとおりです。
サーバーアプリケーションが起動されると、以下の OLE 固有のイベントが発生します。
OLE コンテナコントロールに提供されている OLE 固有の PROCESS GUI
ステートメントアクションは、以下のとおりです。