ActiveX サポート
ActiveX
DADiSPは、ActiveXをサポートしています。
ActiveXは、マイクロソフト社が開発したインターネット関連技術の総称で、広範囲な意味を持っています。マイクロソフト社のバイナリー標準と言われるもので、一般的にプログラム間、あるいはコンポネント間のコードとデータの共有を図るものです。プロトコルは、COM (Component Object Model)によって規定されています。COMは、OLEとして発表されて以来、数々のアップグレード、改善がなされました。
1.ActiveX オートメーション
COMの重要な特長は、オートメーションです。このオートメーションにより、クライアントプログラムは、サーバあるいはコンポネントをコントロールし、あたかもコンポネント機能がクライアントに組み込まれたかのように動作します。例えば、DADiSPは、Wordをコントロールして、Word文書内にDADiSPワークシートを置き、DADiSP内のすべての結果をプリントできます。同様に、VBのプログラムは、DADiSPにデータを渡し、ユーザーがDADiSPを意識することなく、DADiSPで処理することができます。この場合、DADiSPは、AxtiveXをサポートしているプログラムに対して、データ解析ライブラリーのように動作します。
ActiveXのコンポネントは、一般的に次の3つの基本要素から構成されています。
- プロパティ
- イベント
- メッソード
プロパティは、色、フォント、サイズ等を設定します。イベントは、コンポネントがクライアントに対しておこなう通知です。このイベントは、『マウスがクリックされた』、『画面の大きさが変更された』、『ボタンが押された』等の通知です。クライアントは、これら通知を受けると適切に反応します。メッソードは、クライアントがコンポネントに実行指示する機能です。
2.DADiSP オートメーション サーバ
ActiveXサーバ、またはコンポネントとしてのDADiSPは、種々の強力な手段を提供します。例えば、次の機能も含まれます。
- Getdata(window or variable)
- Putdata(window or variable, data)
- Execute("command string")
Getdataは、DADiSPウィンドからのデータまたは変数を取り出し、クライアント渡します。具体例は、DADiSP オートメーション サーバをご参照ください。
DADiSP オートメーション サーバの例
例1:DADiSPワークシートW2にあるシリーズを取り出し、VBの変数に渡すVBプログラム
''' Connect to DADiSP
Set DADiSP = CreateObject("DADiSP.Application")
VbVar = DADiSP.Getdata("W2")
Dim DADiSP As Object
これは、DADiSPをActiveXのオブジェクトとして宣言します。
Set DADiSP = CreateObject("DADiSP.Application")
VBは、DADiSPと接続を確立します。
VbVar = DADiSP.Getdata("W2")
これは、W2のシリーズまたはテーブルをVBの配列VbVarにコピーします。
例2:VBの配列を生成して、その配列をDADiSPに転送するプログラム
For i = 0 To 999
VBData(i) = Rnd()
Next i
''' Connect to DADiSP
Set DADiSP = CreateObject("DADiSP.Application")
''' Put Array to DADiSP
Call DADiSP.PutData("W1", VBData)
例3:VBによるDADiSPに対する“get”,”put”データ
配列とスカラー データをDADiSPの変数DArrayとDNumに転送、次にDADiSPからデータ取り出しVBに返します。
Call DADiSP.PutData("DNum", 12.3)
Vb1 = DADiSP.GetData("DArray")
Vb2 = DADiSP.GetData("DNum"
例4:2つのウィンドのワークシートを生成し、DADiSP内に1000点のランダム シリーズを発生させる
Call DADiSP.Execute("NewWorksheet(2, 0)")
''' Generate Random Data
Call DADiSP.Execute("Grand(1000,.01)")
例5:VBが以下のようにDADiSPをコントロールする
- VB内にデータを生成
- それをDADiSPに転送
- DADiSPを使ってそのデータを処理
- DADiSPから処理結果をVBに取り込む
Dim DADiSP As Object
Dim VBData(1000) As Double
''' Create VB Data Array
For i = 0 To 999
VBData(i) = Rnd()
Next i
''' Connect to DADiSP
Set DADiSP = CreateObject("DADiSP.Application")
''' Create a 2 Window Worksheet (unconditional)
Call DADiSP.Execute("NewWorksheet(2, 0)")
''' Put Array to DADiSP
Call DADiSP.PutData("W1", VBData)
''' Label W1
Call DADiSP.Execute("Label('Data from VB')")
''' Moveto W2
Call DADiSP.Execute("Moveto(W2)")
''' Calculate Power Spectrum
Call DADiSP.Execute("PSD(Hamming(W1))")
''' Add Y Log and Grids
Call DADiSP.Execute("SetyLog(1);GridSol;GridHV")
''' Show DADiSP
DADiSP.Visible = 1
''' Get PSD from DADiSP
newdata = DADiSP.GetData("W2")
End Sub
DADiSP.Visible = 1
また、次のDADiSP SETVISIBLE関数も使えます。
DADiSP.Execute("SetVisible(1)")
DADiSP オートメーション クライアントの例
例1:DADiSPをWordに接続し、DADiSP上にWordを出現させるSPLプログラム
ShowWord()
{
local word;
// start Word
word = CreateObject("Word.Application");
// let's see it!
word.Visible = 1;
}
例2:DADiSPワークシートを生成して、WordにコピーするSPLプログラム
この例は、DADiSPワークシートを作成し、その結果をWordに読み込み、Wordを出現させるSPLプログラムです。
msw()
{
local word, doc;
// new 2 Window worksheet
if (newworksheet(2) == 0) return;
// generate noisy sine in W1
gnorm(1000,.01) * 0.1 + gsin(1000,.01);
// set units to Volts
setvunits("V");
// add a nice label
label("Noisy Sinewave");
// moveto W2
moveto(w2);
// set log scales
setxlog(1);
setylog(1);
// calculate the PSD
psd(w1);
// copy worksheet into clipboard
copyworksheet();
// start Word
word = CreateObject("Word.Application");
// get "Document" object
doc = word.Documents;
// Add a new Document and get range object
range = doc.Add().Range();
// paste worksheet as Enhanced Metafile
word.Selection.PasteSpecial(0, 0, 0, 0, 9);
// let's see it!
word.Visible = 1;
}