1.
|
[ファイル]>[新規作成]>[アプリケーション](Macintoshの場合は[ファイル]>[新規]>[アプリケーションの新規作成])を選択します。
|
3.
|
[ファイル]>[名前を付けて保存]を選択し、ファイルをJMPソースファイルとして保存します。拡張子は.jmpappsourceです。
|
2.
|
オブジェクトを[Module1]タブにドラッグします(または、オブジェクトをダブルクリックします)。
|
3.
|
4.
|
オブジェクトにスクリプトを追加します。詳細は、第 “スクリプトの記述”の節を参照してください。
|
5.
|
(オプション)アプリケーションの実行時にモジュールが起動しないようにするには、「オブジェクト」ペインでモジュールを選択し、[Auto Launch]の選択を解除します (モジュールのうち1つだけをテストする場合などに便利)。
|
6.
|
アプリケーションビルダーの赤い三角ボタンメニューから[アプリケーションの実行]を選択し、アプリケーションをテストします。
|
1.
|
[構成]>[モジュールの追加]を選択します。
|
2.
|
「プロパティ」ペインで、「Module Type」を指定します。
|
–
|
–
|
–
|
ヒント: アプリケーションの実行時に表示されるウィンドウのタイトルは、データテーブルの名前にハイフンとアプリケーション名を加えたものとなります。アプリケーション名を変更するには、JMP Appオブジェクトの「Name」プロパティのテキストを変更します。
「Variable Name」プロパティを変更します。
[構成]>[モジュールの削除]を選択します。
データテーブルオブジェクトを選択し、右クリックして[削除]を選択します。
•
|
ret = Module1 << Create Instance()は、ダイアログが完了するまで値を戻しません。その時点では、ダイアログはなくなっています。そのため、戻り値は、モジュールインスタンスへのハンドルにはなりません。New Window()と同じく、戻り値は{Button(1 | -1), User Data}のような形式になります。(1 | -1)は、OK(1)とCancel(-1)ボタンのどちらが押されたかを示します。
|
•
|
User Data()は、モジュールインスタンスの新しいプロパティです。ダイアログの実行中、モジュールのスクリプトは、ユーザデータを設定することができます。
|
thisModuleInstance << Set User Data(...);
これは、呼び出し側によって解釈される何かを保存するために行われます。ユーザデータは、設定時に評価されます。対応するGet User Data()もあります。
•
|
New Window()と同様、[OK]ボタンや[キャンセル]ボタンが含まれていない場合は[OK]ボタンが追加されます。
|
•
|
モジュールインスタンスには、オプションの「Validate」スクリプトプロパティがあります。このスクリプトは、モーダルダイアログにのみ使用され、New Window()のOn Validate()のように動作します。[OK]ボタンが押されたときに呼び出され、入力を受け付けるときは1、閉じる操作を許可しないときは0を戻します。
|
•
|
モーダルダイアログは、他の種類のモジュールとは異なり、モジュールスクリプトが完了するまで表示されません。他の種類のモジュールの場合、ウィンドウは、thisModuleInstance << Create Objectsの呼び出し中に作成されます。モーダルダイアログの場合は、この時点で表示すると、制御が停止し、表示されているボックスの内容を初期化する手段がなくなってしまうため、表示されません。ウィンドウがまだ作成されていないため、ウィンドウタイトルの設定、クローズ時に実行するスクリプトの設定といったアクションを行うことはできません。
|
•
|
ワークスペースにオブジェクトをドラッグすると、オブジェクトの左上隅が最も近いグリッド点に配置されるように調整されます。より細かく配置したい場合は、アプリケーションビルダーの赤い三角ボタンのメニューで[グリッドにスナップ]の選択を解除します。また、JMPの環境設定を使うと、すべてのアプリケーションで[グリッドにスナップ]を無効にできます それには、[ファイル](Macintoshの場合は[JMP])>[環境設定]>[プラットフォーム]>[JMP App]を選択します。
|
コンテナ内にオブジェクトをドラッグする例に、コンテナ内にオブジェクトをドラッグする方法を示します。
図16.5 コンテナ内にオブジェクトをドラッグする例
•
|
コンテナオブジェクトを配置する座標を細かく決めたい場合は、オブジェクトを選択した後、「X Position」と「Y Position」のプロパティを変更します。新しいX座標を入力した後、Tabキーを押し、オブジェクトの移動を確認してから、新しいY座標を入力します。
|
•
|
オブジェクトを左上隅に配置するには、右クリックして[隅に移動]を選択します。このオプションは、XとYの座標を0に設定します。Macintoshの場合は、Ctrlキーとcommandキーを押しながら[隅に移動]を選択します。
|
オブジェクトの縦方向や横方向の座標を揃えるには、複数のオブジェクトを選択し、右クリックメニューの[配置]>[ボックスの配置]からオプションを選択します。
•
|
コンテナ内部に配置されている複数のオブジェクトではなく、コンテナ全体を選択した場合、[配置]オプションは使用できません。
|
コンテナを挿入した後、種類を変更したくなった場合、オブジェクトを作成し直す必要はありません。たとえば、テキストとボタンを含むパネルを作成したとしましょう。パネルをアウトラインに変更する場合は、パネルを選択した後、ワークスペースで右クリックし、[コンテナの変更]>[Outline Box]を選択します(パネルをアウトラインに変更)。
図16.6 パネルをアウトラインに変更
選択したオブジェクトをコンテナに挿入するには、ツールバーで該当するボタンをクリックするか、[構成]>[コンテナの追加]を選択します。
図16.7 コンテナツールバー
•
|
Macintoshの場合、オブジェクトを選択し、Ctrlキーとcommandキーを押しながら[削除]を選択しても、削除されます。
|
•
|
Windowsの場合、[編集]>[クリア]を選択すると、モジュール内のすべてのオブジェクトが削除されます。
|
たとえば、ラジオボックスのオブジェクトプロパティのようなRadio Boxのリスト項目を設定するには、「Item1」と「Item2」をダブルクリックして、新しいリスト項目を入力していきます。
図16.8 ラジオボックスのオブジェクトプロパティ
オブジェクトの詳細を参照するには、オブジェクトを右クリックし、[スクリプトのヘルプ]を選択します。選択したオブジェクトが強調表示され、JMPのスクリプトの索引が開きます。「スクリプトの索引」にスクリプトが用意されている場合は、それを実行するとオブジェクトの例を確認できます。
テキストエディタを使ったアプリケーションの編集が不可能になります。ユーザが実行するアプリケーションだけが暗号化されます(.jmpappファイルとJMPアドイン内のアプリケーション)。スクリプト(データテーブル、ジャーナル、およびアドインに保存されたスクリプト)が、暗号化されます。暗号化の詳細については、「プログラミング手法」章の「スクリプトの暗号化と暗号解読」(277ページ)を参照してください。
ユーザにデータテーブルを開くことを促す際に使用する文字列を指定します。データテーブルを開くためのプロンプトでは、デフォルトの値が表示されてます。
図16.9 データテーブルを開くためのプロンプト
これらの名前空間内のスクリプトを見るには、[Scripts]タブをクリックし、「名前空間」リスト(または「オブジェクト」ペイン)で名前空間を選択します。詳細については、アプリケーションとモジュールの名前空間を参照してください。
図16.10 アプリケーションとモジュールの名前空間
名前付きスクリプトは、関数の形式で定義されています。複数の異なるコントロールにおいて、共通のコードを使用できるという利点があります。名前付きスクリプトの関数において、this引数は、関数を呼び出しているコントロールを示します。次の例では、ボタンをクリックしたときに、Get Button Nameがthis引数に送られ、ログにボタン名が印刷されます。
Button1Press = Function({this}, Print(this <<Get Button Name))
別のボタンでButton1Pressスクリプトを実行しても同じ結果となります。
1.
|
オブジェクトを右クリックして[スクリプト]を選択し、追加したいスクリプトを選択します。この例のボタンでは、[Press]を選択します (Macintoshの場合は、Optionを押しながら[スクリプト]>[Press]を選択)。
|
[Scripts]タブに、スクリプトのテンプレートが表示されます(新しいスクリプトとスクリプトプロパティ)。また、名前付きスクリプトの名前であるButton1Pressが、スクリプト中では関数名として使われ、また、オブジェクトのプロパティでも表示されます。
図16.11 新しいスクリプトとスクリプトプロパティ
2.
|
必要な機能を実現するため、スクリプトとプロパティを編集します。たとえば、新しいスクリプトとスクリプトプロパティではButton Boxの名前が変更されており、 「Title」プロパティのテキストが、「Submit」となっています。ボタンに、「Submit」と表示されます。
|
ヒント: オブジェクトを削除しても、該当するスクリプトは削除されません。スクリプトを追加した後、オブジェクトを削除し、そのスクリプトも不要であるなら、[Scripts]タブから、削除してください。スクリプトを自動的に削除しないのは、将来必要になるかもしれないスクリプトが削除されるのを防ぐためです。
また、オブジェクトのプロパティで、スクリプトの名前を変更した場合は、[Scripts]タブでも、その名前に応じて変更してください。該当するスクリプトがアプリケーションの別の部分でも使用されているときは、そこでも名前を変更してください。
|
匿名スクリプトは、それを定義したオブジェクトに対してしか実行できません。たとえば、ボタンに対して、そこでしか使用しないログ出力の機能(Print)が必要な場合、 匿名スクリプトで記述すれば、スクリプト全体で定義する名前付きスクリプトの数を減らすことができます。匿名スクリプトは、オブジェクトのプロパティとして設定します。そのため、[Scripts]タブにおいて、名前付きスクリプトが雑多になりすぎるのも回避できます。
Print(Button1 <<GetButtonName) // 単純な匿名スクリプト
Function({this}, Print(this <<GetButtonName)) // パラメータ化された匿名スクリプト
1番目のスクリプトでは、「Button1」変数にメッセージを送っています。一方、2番目のスクリプトでは、コントロールを表す「this」に対して、メッセージを送っています。
チェックボックスなどのオブジェクトは、thisを用いて、必要な情報を取得する必要があります。たとえば、チェックボックスを用いた場合、どの項目がチェックされたかを取得する必要があるでしょう。
2.
|
スクリプトを入力し、[OK]をクリックします。
|
•
|
[Module]タブでオブジェクトをダブルクリックします。
|
•
|
オブジェクトに複数のスクリプトがある場合は、オブジェクトを右クリックして[スクリプト]を選択し、表示したいスクリプトを選択します。また、[Scripts]タブを選択し、「名前空間」リストからモジュール名を選択して、「メソッド」リストからスクリプト名を選択する方法もあります。同様に、アプリケーションスクリプトを表示するには、「名前空間」リストから「Application」を選択します。
|
どちらの場合も、[Scripts]タブが表示されたとき、そのオブジェクトに対するスクリプトの一行目に、カーソルは移動します。
ワークスペースのプラットフォームオブジェクトを右クリックし、[プラットフォームスクリプトの編集]を選択します。スクリプトを編集した後、[OK]をクリックし、ワークスペースのオブジェクトをアップデートします。