編集用のテキスト UI 要素のテキストに、数値と文字のどちらが含まれるかを調べたいと考えています。
数値が含まれる場合は、その数値を返し、文字が含まれる場合は、「数値以外は入力できません。やり直してください」というメッセージを表示するようにしたいのですが、
どのようにすればよいでしょうか。
スクリプト
rollout MicroListener "MicroListener"
(
edittext myEditText text:""
label theLabel "Ready."
on myEditText changed txt do
(
if txt != "" then
(
try
(
val = execute txt
theLabel.text = "You typed in "+ (val as string )
)
catch
theLabel.text = "Invalid Expression!"
)
else
theLabel.text = "Ready."
)
on myEditText entered txt do myEditText.text = ""
)
createDialog MicroListener 300 60
次の簡単なスクリプトは、ある種の「マイクロリスナー」を実装します。このマイクロリスナーは、Execute メソッドを使用して、edittext フィールドに入力された文字列を、MAXScript 式に変換します。数値だけではなく、Pi などの定数やユーザの定義したグローバル変数も入力できます。さらに、スクリプト内でグローバル変数を定義でき、即座にオブジェクトを作成することも可能です。
次にいくつかの例を示します。
125.1 は有効な式です。 これは定数で、そのまま評価します (125.1)。
一方、d は定義されていないため、undefined が返されます。
意外かもしれませんが、e は undefined を返しません。 MAXScript では予約語になっています。
pi の場合も同様です。 予想どおり、3.14149... が返されます。
2 つの未定義値を追加しようとしたので、「無効な式」と返されます。
この変数も定義されていません。
ここで定義されました。値が 10 になりました。
この結果、定数と変数とを含んだ式を記述することもできます。
関数名を入力すると(この場合、ボックスのコンストラクタ)、その関数が返されます。
関数を呼び出すことにより、「実際の」リスナーで行っているかのように、オブジェクトを作成できます。
このボックスは、指定した位置に従って、100 単位右に作成されます。
以上が例になります。