数値と文字列の入力を取得する

このセクションは、スクリプト実行中に3種類のユーザの入力を促すサンプルです。

  1. はい/いいえの応答
  2. 1つの文字列
  3. さまざまなタイプの入力 (GetN)
 ユーザインターフェースモジュール(UIM)は、複雑なユーザインターフェースコントロールの構築を可能にします。UIM オブジェクト ページを確認してください。

はい/いいえの応答を得る

GetYesNoコマンド は、ユーザから「はい」または「いいえ」の応答を得るのに使うことができます。 コマンドは3つの引数を取ります。

構文: getyesno stringMessageToUser numericVariableName windowTitle

例えば、スクリプトウィンドウに次の行を入力すると、Check Sign of X というウィンドウタイトルで、ユーザにShould X be positive?というはいいいえキャンセルで答える質問のポップアップを開きます。 はい を選択すると、xpos に値1が割り当てられます。 いいえを選択すると、xpos に値0が割り当てられます。 キャンセルを選択すると、xpos に値0が割り当てられ、#Command Error!が出力され、実行が停止します。

getyesno "Should X be positive?" xpos "Check Sign of X"

追加のスクリプト処理がイベントで必要となる場合、このコマンドを他の場所で呼び出し、数値をテストすることができます。 次のサンプルは、getyesno を自分自身のコードから呼び出し、2つの文字列入力が引数としてセクションに渡されます。(複数のセミコロンのLabTalkスクリプトは、単にスクリプトウィンドウに貼り付けただけでは動作しません。ファイルに保存して実行します。)

[Main]
// 呼び出しコード
int iVal = -1;
run.section(,myGetYesNo,"Create a Graph of results?""Graphing Option");
if( iVal > 0 )
{
   type "Graph generated";        // はいの応答  
}
else
{
   type "Graph NOT generated";    // いいえまたはキャンセルの応答
}
 
// 'myGetYesNo' セクション
[myGetYesNo]
getyesno (%1) iVal (%2);

文字列を得る

GetString は、ユーザが入力する1つの文字列に対して使用します。

%B = "";
GetString (Enter as Last, First) Last (Your Name);
// キャンセルはGetYesNoのテクニックを使わずに中断
if("%B"!="Last")
{
    type User entered %B.;
}
else
{
    type User clicked OK, but did not modify text;
}

複数の値を得る

GetN または GetNumber ダイアログ は、数字、文字、リスト、または制御から選んで入力します。(Originの古いバージョンでは、数値のみが可能でした) バージョン8.1より前のバージョンでは、GetNumberは文字列入力用の文字列レジスタ(%Aなど)のみをサポートしていました。Origin8.1以降のバージョンの場合、GetNumberでは文字列変数(string str1$ など)と文字列レジスタの両方が使用できます。GetNは、現在、ダイアログタイトルに加えて50つまでの変数を受け付けます。

文字列を最初に宣言する必要があることに注意してください。 代入による方法ではなく、変数を作成する方法は常に良い方法となります。詳細は、(文字列)変数のスコープを参照して下さい。 例えば:

// 最初に、使用する変数を宣言
double nn = 3.2;
string measurement$="length", units$="inches", event$="Experiment #2";
 
// GetNダイアログを使ってユーザデータを収集
getn
(Value) nn 
(Measurement Type) measurement$
(Units) units$
(Event Name) event$
(Dialog Title);

これは、次のダイアログを開き、ユーザに入力を促します。

GetN Dialog.png

このダイアログに入力された値は、宣言した変数に割り当てられます。 変数は初期値(以前GetN が呼び出されていた)を持つ場合、その値は入力ボックスに表示され、それ以外の場合、入力ボックスは空白となります。 どちらの場合でも、初期値を変更したり、そのまま使うことができます。

入力されたデータをチェックするには、スクリプトの次の行を実行します。

// データを出力
type In %(event$), the %(measurement$) was $(nn) %(units$);

次のサンプルスクリプトは、Graphがアクティブウィンドウで、情報を促して、線とラベルを描画します。 GetN の呼び出しは、入力として文字列レジスタと事前定義のリストを使用します。

%A=Minimum;
iColor = 15;
dVal = 2.75;
iStyle = 2;
 
// GetNダイアログを開く
// %Aの前の余計な %記号は、変数名として扱うのではなく 
// 文字列レジスターを文字通りに解釈
getn (Label Quantile) %%A 
(Color) iColor:@C 
(Style) iStyle:@D 
(Value) dVal 
(Set Quantile);
 
draw -n %A -l -h dVal;     // 名前を付けた水平線を描画
%A.color = iColor;         // 線の色をセット
%A.linetype = iStyle;      // 線種をセット
 
// 線の右端にQLabelという名前のテキストラベルを
// 作成
label -s -a x2 dVal -n QLabel %A; 
 
%A.Connect(QLabel,1);       // 2つのオブジェクトを接続

スクリプトは、%Aが1つの語句で、オブジェクトQLabel が存在しないことを前提としています。

文字の順番に従い、から始まる文字はあらかじめ定義されているGetNの引数です。

リスト 説明
 :@B オブジェクトの背景属性のリスト
 :@C 基本の色のリスト
 :@D 線種のリスト
 :@P パターンリスト
 :@S フォントサイズのリスト
 :@T フォントリスト
 :@W 線の太さのリスト
 :@Z シンボルサイズのリスト

GetN ダイアログ内でリスト項目が選択されたときに返される値は、リスト内の項目のインデックスです。 例えば、GetN のリストの1つが下記のようであれば:

(Font Size) fs:@S

ダイアログのドロップダウンリストから 18 を選ぶと、18はリストの8番目の項目なので、変数 fs には値 8が入ります。



以下は、シンボルプロットを線+シンボルに変更したり、その逆に変更するサンプルスクリプトです。

get %C -z iSymbolSize;  // 現在のシンボルサイズ
get %C -cl iLineColor;  // 現在の線の色
iUseLine = 0;
// ダイアログをユーザに開く
getn (Symbol Size) iSymbolSize
     (Use Line) iUseLine:2s
     (Line Color) iLineColor:@C
     (Set Plot Style);
// ユーザが線を求める場合
if(iUseLine == 1)
{
    set %C -l 1;           // 線を表示
    set %C -cl iLineColor; // 線の色をセット
}
// そうでなければ
else
    set %C -l 0;           // 線を非表示
set %C -z iSymbolSize;     // シンボルサイズをセット