アプリケーションに埋め込んだ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の方を使ってください。