現在作成中のスクリプトには、引数としてデフォルト値を持つ日付ボックスを作成する関数があり、ユーザーが日付として認識できない値を入力すると、テキストをデフォルト値に戻します。日付ボックスに特定のキーワードを入力すると、特定の動作が実行される機能を追加したいと考えています。例えば、ユーザーが「昨日」と入力すると、日付/時刻が前日の午前0時に設定されます。
適切な日付ではないため、テキストをデフォルト値に戻す前に、これらのキーワードをチェックする関数の仕組みがわかりません。実現方法について何かアドバイスはありますか?
(JMP 17 を使用していますが、理想的には新しいバージョンでも動作します)
timeBox = Function( {time},
Eval(
Substitute(
NameExpr( NumberEditBox(
time,
10, //width
<< SetFunction( Function( {self}, {},
If( IsMissing(self << get), self << Set(Eval(dummy)) );
) ),
<< Set Format( Format( "m/d/y h:m:s", 23, 0 ) );
) ),
Expr( dummy ),
time
)
);
);
timeEntryWindow = NewWindow( << Modal,
PanelBox( "Start Time", startTimeBox = timeBox( Today() - 12*60*60 ) )
);
数値編集ボックスなので、数値しか入力できません。まずは簡単なものから始めて、色々な方法で試してみてください(テキストを入力すると、値が欠落してしまいます)。
Names Default To Here(1);
nw = new window("",
neb = Number Edit Box(.)
);
neb << Set Function(function({this},
show(this << get)
));
/*
neb << Set Number Changed(function({this, val},
show(this << get);
show(val);
));
*/
ドロップダウン/ボタンを作成して昨日の値を設定することも、テキスト編集ボックスを使用してカスタム カレンダー ボックス/数値編集ボックスを作成することもできます。