DIAdemでカスタムのダイアログボックスを作成する

更新しました Apr 22, 2021

環境

ソフトウェア

  • DIAdem

DIAdemではカスタムのダイアログボックスを作成する事ができます。ダイアログボックス上に挙動を追加するにはVBスクリプトを使用します。ここではVBScriptを使用してコンボボックスを持つダイアログボックスを作成し、コンボボックスで指定した内容をDIAdemのVBScriptで認識する方法について確認します。

DIAdemでダイアログボックスを作成する方法の基礎・サンプルについてはこちらの資料で確認できます。

1. DIAdemを起動し、VBScriptを開きます。
ダイアログボックスを作成するにはユーザダイアログボックスを作成を選択し、DIAdemダイアログエディタを開きます。
 
1OpenDIAdem.png

2. VBScriptとダイアログボックスファイルの作成
ダイアログボックスとなる*.sudファイルと、それを呼び出す*.vbsファイルを作成します。VBScriptからダイアログボックスを呼び出す際に、同じフォルダの*.sudファイルを呼び出す方法を使用する為、この2点は同じフォルダに作成します。
 
2ScriptSUD.png

DIAdemのVBScriptは下記の物を使用します。
 
Option Explicit

class cSUDPara
  dim sObject
end class

Dim oSUDPara
set oSUDPara = new cSUDPara
oSUDPara.sObject    = "Red"
call SUDDlgShow("Dlg1", CurrentScriptPath & "SudExample", oSUDPara)
msgbox oSUDPara.sObject

上記のスクリプトではダイアログボックスのパスをVBScriptファイルを保存したフォルダに存在するSudExample.sudとしています。ダイアログボックスの*.sudファイルはSudExample.sudという名前でVBScriptファイルと同じフォルダに保存すると上記のスクリプトをそのまま使用する事ができます。

3. ダイアログボックスの作成
ダイアログボックスを配置します。
 
3combobox.png

ボタンを配置します。
 
4button.png

ボタンを下記の様に編集し、Button Typeを4 - OKに変更します。
 
5mod.png

コンボボックスをクリックし、ObjectCodeをcb1にします。
 
5modcomb.png

コンボボックスをダブルクリックし、スクリプトの編集を行います。イベントの項目のEventInitializeとEventTerminateをダブルクリックし、下記の様にイベントハンドラを作成します。
 
6eventh.png

上記のスクリプトを下記の様に編集します。
 
Option Explicit

Dim oSUDPara

Sub Dialog_EventInitialize(ByRef This) '作成されたイベントハンドラー
  Set oSUDPara = Dialog.GetArgument
  
  Call cb1.Items.RemoveAll
  Call cb1.Items.add("Red", 0)
  Call cb1.Items.add("Green", 1)
  Call cb1.Items.add("Yellow", 2)
    
  select case oSUDPara.sObject
    case "Red" cb1.Value = 0
    case "Green"   cb1.Value = 1
    case "Yellow"  cb1.Value = 2
  end select

End Sub

Sub Dialog_EventTerminate(ByRef This) '作成されたイベントハンドラー
  oSUDPara.sObject    = cb1.Text
  call Dialog.SetArgument(oSUDPara)
End Sub

上記の編集を行い、保存した後、DIAdem Scriptで作成したVBScriptを実行すると、下記の様にコンボボックスの挙動を確認できます。
 
7combo.png

次のステップ

複数の値をDIAdem、ダイアログボックス間でやり取りする

DIAdemのVBScriptからダイアログボックスを起動し、値の受け渡しを行う場合、複数の情報のやり取りが必要な場合があります。そのような場合、複数の情報を組み合わせたデータ形式(クラス)をあらかじめ作成し、データの受け渡しを行う方法があります。

例えば、AttachmentsのSampleSUD2.zipのVBS、SUDファイルを確認すると、VBSファイルにおいてcSUDParaというクラスを定義し、その中にsUserとsOrgという2つのデータを用意しています。次のこの形式をとるoSUDParaを作成し、sUser, sOrgにそれぞれ値を代入し、SUDの実行と共にoSUDParaによりこれらの値をダイアログボックスに受け渡しています。
 
21class.png

ダイアログボックスでは緑枠のInitializeのイベントにおいて、値の読み込みを行い、青枠のTerminationのイベントでDIAdemに値を返すための書き込みを行っています。