edittext コントロール は、テキストの入力や編集が可能なテキスト フィールドとして使用します。
構文は次のようになります。
edittext <name> [<caption>] [text:<string>] [fieldWidth:<integer>] [height:<integer>] [bold:<boolean>] [labelOnTop:<boolean>] [readOnly:<boolean>] [toolTip:<string>] [multiLine:<boolean>]
edittext
項目の位置合わせの既定値は、#left
です。
パラメータ
text:
編集ボックスのテキスト文字列です。パラメータに複数のテキスト行を指定するには、改行復帰(\r )と改行(\n)の両方のシーケンスを指定してください。たとえば、「最初の行 \r\n次の行」とします。
fieldWidth:
編集ボックスのピクセル幅です。既定では、幅は、キャプション テキストの直後からロールアウトの右マージンまでに設定されます。
height:
テキストの 1 行を超えるピクセル単位の高さを指定する editText 項目定義に対して、明示的な height:
パラメータが指定されている場合、その editText 項目は複数行の編集ボックスになり(17 ピクセル)、複数行のテキストを入力できるようになります。
この動作をオーバーライドするには、multiLine
を false に設定します。下記を参照してください。
editText の高さを 17 ピクセル以上に指定するか、.height
の値に関係なく .multiLine
を true として指定した場合は、editText が複数行モードになるため、on entered
イベント ハンドラは呼び出されなくなります。
bold:
true
に設定した場合、編集ボックス内のテキスト文字列は太字で表示されます。false
に設定した場合、テキストは太字でない、標準の形式で表示されます。既定値は false
です。
labelOnTop:
true
に設定すると、キャプションが編集テキスト ボックスの上に配置されます。false
に設定されている場合、または省略されている場合、キャプションは編集テキスト ボックスの左に配置されます。
readOnly:
true
に設定されている場合、editText コントロールにテキストをコピー、貼り付け、あるいは入力ができません。false
に設定されている場合、または省略されている場合は、editText コントロールにテキストを入力、コピーおよび貼り付けることができます。
toolTip:
EditText のツールチップに使用するテキストを提供します。指定しない場合、ツールチップは表示されません。3ds Max 2017 以降で使用可能です。
multiLine:
editText コントロールが複数行コントロールであるかどうかを指定します。この引数は、高さを 17 より大きい値にするとコントロールが自動的に複数行コントロールになるという動作を上書きします。そのため、たとえば、単一行が表示されている editText を複数行にしたり、逆に、高さが 34 より大きい editText を強制的に単一行コントロールにしたりできます。 3ds Max 2020.1 Update 以降で使用可能です。
プロパティ:
<edittext>.text String
編集ボックスのテキストです。パラメータに複数のテキスト行を指定するには、改行復帰(\r )と改行(\n)の両方のシーケンスを指定してください。たとえば、「最初の行 \r\n次の行」とします。
<edittext>.caption String
編集ボックスの横にあるオプションのキャプションのテキストです。
<edittext>.bold Boolean
true
に設定した場合、テキストは太字で表示されます。false
に設定した場合、テキストは太字でない、標準の形式で表示されます。
<edittext>.width Integer
edittext ウィンドウの幅をピクセル単位で取得/設定します。
<edittext>.height Integer
edittext ウィンドウの高さをピクセル単位で取得/設定します。
<edittext>.readOnly
true
に設定されている場合、editText コントロールにテキストをコピー、貼り付け、あるいは入力ができません。false
に設定されている場合、または省略されている場合は、editText コントロールにテキストを入力、コピーおよび貼り付けることができます。
イベント
on <edittext> changed <arg> do <expr>
編集ボックスのテキストをユーザが変更するたびに呼び出されます。<arg>
には、編集ボックスの新しいテキストが入ります。
on <edittext> entered <arg> do <expr>
ユーザが編集ボックスにテキストを入力し、[Enter]または[Tab]を押してフィールドの外へカーソルを移動したときに呼び出されます。引数 <arg>
には、編集ボックスの新しいテキストが入ります。
警告(前出の警告の繰り返し): editText の
.height
を 17 ピクセル以上に指定するか、.height
の値に関係なく.multiLine
を true として指定した場合は、editText が複数行モードになるため、on entered
イベント ハンドラは呼び出されなくなります。
単一行モード(既定の高さ、または 17 ピクセル未満)では、編集ボックスに文字列を入力して[Enter]キーを押した場合、1 文字ごとに、または[Enter]キーを押すたびに 1 回、on changed
ハンドラが呼び出されます。on entered
on entered は、[Enter] に対して 1 回だけ呼び出されます。
複数行モードの場合、[Enter]キーストロークによって 'on entered'
ハンドラが呼び出されなくなりますが、編集ボックスに新しい行が挿入されます。
もちろん 'on changed'
ハンドラは呼び出されます。これらのハンドラは、キーストロークのたびに呼び出されます。
複数行の editText 項目の場合は、[Tab]キーを押したり、編集ボックスの外をクリックして、編集ボックスがキーボード フォーカスを失ったときに、'on entered'
ハンドラが呼び出されます。
例:
rollout boxCreator "Box Creator" ( --define an edittextwith width 100 and the label on top: edittext prefix_txt "Name prefix:" fieldWidth:200 labelOnTop:true --If the user entered a new name... on prefix_txt entered txt do ( --And the name is not the empty string, if txt != "" do ( --Create a new box at a random position --somewhere between the given coordinates: new_obj = box pos:(random [-100,-100,-100] [100,100,100]) --Set the name of the new object to the prefix entered, --but add unique suffix to avoid duplicate names: new_obj.name = (uniquename txt) --And finally clear the edittext for a new entry --by assigning an empty string to the text property: prefix_txt.text = "" ) ) ) createDialog boxCreator 300 60 --create a Dialog from the rollout
3ds Max 2015 以降、[Esc]キーを押すと、フォーカスが editText コントロールからその親ウィンドウに移動するようになりました。