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プログラム

Dim DADiSP As Object

''' Connect to DADiSP
Set DADiSP = CreateObject("DADiSP.Application")

VbVar = DADiSP.Getdata("W2")

この例で、VBはクライアント、DADiSPは、ActiveXサーバとして動作します。

Dim DADiSP As Object
これは、DADiSPをActiveXのオブジェクトとして宣言します。

Set DADiSP = CreateObject("DADiSP.Application")
VBは、DADiSPと接続を確立します。

VbVar = DADiSP.Getdata("W2")
これは、W2のシリーズまたはテーブルをVBの配列VbVarにコピーします。


例2:VBの配列を生成して、その配列をDADiSPに転送するプログラム

''' Create VB Data Array
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("DArray", VBData)
Call DADiSP.PutData("DNum", 12.3)

Vb1 = DADiSP.GetData("DArray")
Vb2 = DADiSP.GetData("DNum"


例4:2つのウィンドのワークシートを生成し、DADiSP内に1000点のランダム シリーズを発生させる

''' Create a 2 Window Worksheet (unconditional)
Call DADiSP.Execute("NewWorksheet(2, 0)")

''' Generate Random Data
Call DADiSP.Execute("Grand(1000,.01)")


例5:VBが以下のようにDADiSPをコントロールする

  1. VB内にデータを生成
  2. それをDADiSPに転送
  3. DADiSPを使ってそのデータを処理
  4. DADiSPから処理結果をVBに取り込む
Sub DSPTest()
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を出現させるには、“Visibility”プロパティを以下のように設定します。
DADiSP.Visible = 1

また、次のDADiSP SETVISIBLE関数も使えます。
DADiSP.Execute("SetVisible(1)")

上に戻る

DADiSP オートメーション クライアントの例

例1:DADiSPをWordに接続し、DADiSP上にWordを出現させるSPLプログラム

/* start and display Word using ActiveX */
ShowWord()
{
local word;

// start Word
word = CreateObject("Word.Application");

// let's see it!
word.Visible = 1;
}


例2:DADiSPワークシートを生成して、WordにコピーするSPLプログラム

この例は、DADiSPワークシートを作成し、その結果をWordに読み込み、Wordを出現させるSPLプログラムです。

// SPL Code: DADiSP to MS Word ActiveX calls
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;
}

上に戻る