JMP アプリケーションの TextEditBox で「変更されたテキストを取得」機能を取得するにはどうすればよいですか?こんにちは、みんな、
これまでここで多くの役立つ解決策を見つけました。ありがとうございます。しかし、今はまだ解決策が見つかっていない質問があります。
TextEditBox と 2 つの TextBox を備えた JMP アプリケーションがあります。TextBox は結果の視覚化のみを目的としています。テキスト入力中に、この TextEditBox のテキストの現在の長さに応じて、何らかのアクションをトリガーしたいと考えています。JSL スクリプトの場合、スクリプト インデックスに関数 (GetTextChanged) がありますが、JMP アプリケーションでこの機能を利用するにはどうすればよいでしょうか。
TextEditBox のオブジェクト セクションにある「TextChanged」スクリプトで関数「displ_txt()」を呼び出し、スクリプト タブで次の操作を試しましたが、機能しません。
JMP 18.0.0 を使用しています。
OnModuleLoad( {}, );
thisModuleInstance << Create Objects;
displ_txt = Function( {},
teb_txt = TextEdit1 << GetText;
Try( Text2 << SetText( teb_txt ),"Error" );
If( Length( teb_txt ) > 0,
Show( Length( teb_txt ) ) //Here should be the current length after each change
);
//...what I want to do further is like
If( Length( GetTextChanged( teb_txt ) ) <= 3,
Text1 << SetText( "Len below limit" ),
Text1 << SetText( "Len above limit" )
);
);
よろしくお願いします、
マット
自動化とスクリプトウィンドウズRe: JMP アプリケーションの TextEditBox で「変更されたテキストを取得」機能を利用するにはどうすればよいでしょうか?Get Text Changed で何をしようとしていますか? Get Text Changed は、テキスト編集ボックスの Set Text Changed に関連付けられた関数を返します。
displ_txt = Function( {},
teb_txt = TextEdit1 << GetText;
Try( Text2 << SetText( teb_txt ),"Not OK" );
If( Length( teb_txt ) > 0,
Show( Length( teb_txt ) ) //Here should be the current length after each change
);
//...what I want to do further is like
If( Length(teb_txt) <= 3,
Text1 << SetText( "Len below limit" ),
Text1 << SetText( "Len above limit" )
);
);

最初のコミットを実行するまで (テキスト編集ボックスの外側をクリックするか、Enter キーを押すまで)、奇妙な動作が発生する可能性があります。
Re: JMP アプリケーションの TextEditBox で「変更されたテキストを取得」機能を利用するにはどうすればよいでしょうか?スクリプトはどうでしょうか:

ユーザーがテキスト編集ボックスを選択してそこで終了するたびに、スクリプトがトリガーされます。
スクリプトは、テキスト変更よりもわずかに「先行」しているようです:
そこに displ_txt() を配置すると、ユーザーが入力を完了すると、1 ステップ後ではなく、新しい長さが返されます。
Re: JMP アプリケーションの TextEditBox で「変更されたテキストを取得」機能を利用するにはどうすればよいでしょうか?このコードからいくつかのアイデアが得られるはずです:
filter_text = Function( {this, entered_txt},
{msg},
// only attempt to filter if there is any text
If( entered_txt != "",
if (length(entered_txt) <= 3,
msg = "Len below limit",
msg = "Len above limit"
);
message_tb << set text(msg);
);
); // end filter_text function
nw = new window("Test String Length",
user_tb = textedit box("",
<< set text changed(filter_text)),
message_tb = text box("")
);Re: JMP アプリケーションの TextEditBox で「変更されたテキストを取得」機能を利用するにはどうすればよいでしょうか?ご回答ありがとうございます。残念ながら、私の焦点はコミットなしでテキストを取得することでした。したがって、スクリプトは私が望むとおりには機能しません。
Re: JMP アプリケーションの TextEditBox で「変更されたテキストを取得」機能を利用するにはどうすればよいでしょうか?ありがとうございます、pmroz。あなたの解決策により、意図したとおりに動作する次のコードにたどり着きました。
filter_text = Function( {this, entered_txt},
{msg},
// only attempt to filter if there is any text
If( entered_txt != "",
If( Length( entered_txt ) <= 3,
msg = Char( entered_txt ) || " is below length limit",
msg = Char( entered_txt ) || " is above length limit"
);
Text2 << set text( msg );
)
); // end filter_text function
TextEdit1 << set text changed( filter_text );