2.28.2.8 ActiveXコントロールの使い方

アプリケーションに埋め込んだActiveXコントロールは、Visual LANSAに固有のコントロールと同じように操作できます。

ここでは例として、「Microsoft Web Browser」というActiveXコントロールを使ってみましょう。これは、Microsoft Internet Explorerが動作するPCにはインストール済みであるはずです。

まず、次のようなフォームを作成してください。エディター上で、リポジトリタブのリソースノードにあるActiveX コントロールを開きます。するとVA_WEBCTLというコントロールがあるので、その最上部のデザインタブ部分をフォームにドラッグ・アンド・ドロップしてください。

これでフォーム上でブラウザー機能が使えるようになりました。

フォームのソースタブに切り替えてみると、「Microsoft Web Browser」コントロールを定義する、次のようなDEFINE_COMの定義が追加されているはずです。

DEFINE_COM CLASS(#VA_WEBCTL.WebBrowser) NAME(#VA_WEBCTL) DISPLAYPOSITION(1) HEIGHT(200) LEFT(32) PARENT(#COM_OWNER) TABPOSITION(1) TOP(8) WIDTH(100)

これにより、詳細タブに切り替えたとき、メソッドやイベント、Visual LANSAプロパティにアクセスできるようになりました。

コンポーネントのヘルプウィンドウを開くと、プロパティ、イベント、メソッドに関する簡単な説明があります。

これを見ると、URLを表示するためのNavigateというメソッドがあることがわかります。

次のステートメントを、フォームの初期化イベントに追加してください。

invoke method(#VA_WEBCTL.navigate) url(www.lansa.com)

  

フォームをコンパイル、実行してみると、ブラウザーが起動し、LANSAのWebページが表示される様子がわかります。

設計時のプロパティ設定

ActiveXコントロールのプロパティは、LANSA付属のコントロールの場合と同様にして使えます。

なお、Webブラウザー・コントロールのプロパティの中には、Internet Explorerでしか有効でないものもあるので注意してください。例えばAddressBarプロパティは、アドレス・バーのないWebブラウザーでは当然効果がありません。

Webブラウザー・コントロールの幅は、WidthまたはWidth_COMプロパティのどちらで設定してもかまいません。

ブラウザ・コントロールからURLを検索

ここではブラウザー・コントロールのプロパティ値を取得する手順を説明します。

ブラウザ・コントロールには、現在画面に表示しているリソースのURLを表す、LocationURLというプロパティがあります。

これを使ってURLを表示してみましょう。フォーム上にボタンとフィールドを追加してください。

ボタンおよびフィールドに、次のプロパティを設定してください。

ボタン・コントロール

caption('Get URL')

フィールド(STD_TEXTS)

caption('URL:') labeltype(Caption) marginleft(50)

ボタンのClickイベントに応じてURLを検索、表示するよう、次のコードを追加してください。

EVTROUTINE HANDLING(#PHBN_1.Click)

change field(#std_texts ) to(#VA_WEBCTL.LocationURL) 

ENDROUTINE

 

フォームをコンパイルし、実行します。LANSAのWebサイトを表示してGet URLボタンを押したとき、次のようにURLが表示されます。

イベント

ここではActiveXコントロールのイベントの使い方を説明します。

ブラウザ・コントロールに定義されているイベントを確認するには、機能(F2)を表示し、イベントのリストを展開します。

ブラウザ・コントロールにはDocumentCompleteというイベントが定義されています。これは、ページが見つかり、ダウンロードが完了した時点で発生します。これを利用して、ダウンロード終了時にメッセージが表示されるようにしてみましょう。次のコードをフォームに追加します。

EVTROUTINE HANDLING(#VA_WEBCTL.DocumentComplete) OPTIONS(*NOCLEARMESSAGES *NOCLEARERRORS)
use builtin(MESSAGE_BOX_SHOW) with_args(OK OK Information 'Page Ready' 'The web page has been downloaded.')
 

ENDROUTINE

 

フォームをコンパイルし、実行します。LANSAのWebサイトのダウンロードが終了した時点で、メッセージが現れます。

ActiveXコントロールの初期化に関する注意

画面表示を伴うActiveXコントロールであっても、実際に画面上で使えるようにするためには、Visual LANSAのCreateInstanceイベントを送る必要があります。画面表示を伴わないコンポーネントであればその必要はありません。

CreateInstanceイベント内で画面表示を伴うActiveXコントロールの機能を使おうとすると、実行時エラーが生じる場合があるので、代わりにInitializeの方を使ってください。