cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
The Discovery Summit 2025 Call for Content is open! Submit an abstract today to present at our premier analytics conference.
Get the free JMP Student Edition for qualified students and instructors at degree granting institutions.
Choose Language Hide Translation Bar
View Original Published Thread

GraphBox の数は可変です。クリックを送信する GB を識別するにはどうすればよいでしょうか?

mtowle419
Level II
nw = new window("graphs", vlb = v list box());
dirname = "jpegs";
set default directory(dirname);
foreach({jpeg}, files in directory(dirname), // dexter.jpg, samurai_jack.jpg, spongebob.jpg
	img = new image(jpeg);
	msg = eval insert("\!"^jpeg^\!""); 
	h = graphbox(
			<

The above gives me

  • 3 graphboxes
  • with three correctly rendered images,
  • but StatusMsg always sends "Spongebob.jpg". (Without the evalinsert(), just sending jpeg to StatusMsg, it throws an error.)

I want StatusMsg to give me the name of the image whose graphbox I clicked on.

Basically, I can kinda sorta imagine two routes:

1. Eval and related functions? I still haven't dug into that side of JSL very deeply.

2. Xpath? Maybe log the image name in a List; index will correspond with the frame box number.

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

3 ACCEPTED SOLUTIONS

Accepted Solutions
hogi
Level XII

Re: GraphBox の数が可変です。クリックを送信している GB を識別するにはどうすればよいでしょうか?

ユーザーが画像をクリックするたびに、マウストラップは呼び出し命令を受け取ります

statusmsg( variablename)

So: it will execute statusmsg( variablename), check for the current content of variablenamea and display it.

気づいて試みたように、何らかの方法で変数を強制的に評価する必要があります。

問題:
結果を別の変数 ( msg ) に保存すると、同じ問題が発生します (変数名が異なるだけです)。

やりたいこと:

すべての画像について、画像名とトリガーを事前に評価します。例:

statusmsg("samurai_jack.jpg")

90% のケースでは、この事前評価はEval(Eval Expr()) を介して実行できます。

残りのものについては、 Eval(Substitute())を使用します。

JMP での式の処理: Tipps と Trapdoors

Eval (Eval Expr( h=graphbox(
			<

mtowle419
Level II

Re: GraphBox の数が可変です。クリックを送信している GB を識別するにはどうすればよいでしょうか?

笑 わかったよ

foreach({jpeg}, files in directory(jpegs),
	img = new image(jpeg);

	h = Eval(
		Eval Expr(
			graphbox(
				<

It's not clear to me why `jpeg` needs the expr() and `img` doesn't, though. Both of those vars are 'born' on a per-loop basis

hogi
Level XII

Re: GraphBox の数が可変です。クリックを送信している GB を識別するにはどうすればよいでしょうか?

はい、これは JSL では大きな問題です。残念ながら、どの引数が評価され、どの引数が単に「転送」されるかを示すドキュメントはありません。また、それを見つけるのがまったく簡単ではない場合もあります。

ヘッドは自身の議論を評価しているのでしょうか?

JMP サポートに、引数を評価する関数と評価しない関数の公式リストを問い合わせました。残念ながら、そのようなリストはありません。
別のアプローチ: JSL エディターで高度な構文強調表示を使用します - 関数は引数を評価しますか?

次のリリースのいくつかで実装されることを期待しています...。

実際、JSL の多くの (!!!) 関数は、使用前に引数 (の一部) を評価しません。
このアプローチは非常に強力です!

「転送されたばかり」の最も顕著な例:

New column (.... Formula(Expression gets just transferred))

マウストラップについても同様です。
もう一度考えてみると、引数を評価しないというのは JMP の非常に親切なことです : )
コードを実行した瞬間ではなく、ユーザーが画像をクリックするたびにステータス メッセージを変更する必要があります。

一方、ウィンドウに画像を追加するには、JMP で画像ファイルを開く必要があります。そのためには、変数を調べる必要があります。
注意: 場合によっては、引数を Eva​​l(引数) に置き換えると役立つことがあります。
時々。
ここでは:いいえ。

3 REPLIES 3
hogi
Level XII

Re: GraphBox の数が可変です。クリックを送信している GB を識別するにはどうすればよいでしょうか?

ユーザーが画像をクリックするたびに、マウストラップは呼び出し命令を受け取ります

statusmsg( variablename)

So: it will execute statusmsg( variablename), check for the current content of variablenamea and display it.

気づいて試みたように、何らかの方法で変数を強制的に評価する必要があります。

問題:
結果を別の変数 ( msg ) に保存すると、同じ問題が発生します (変数名が異なるだけです)。

やりたいこと:

すべての画像について、画像名とトリガーを事前に評価します。例:

statusmsg("samurai_jack.jpg")

90% のケースでは、この事前評価はEval(Eval Expr()) を介して実行できます。

残りのものについては、 Eval(Substitute())を使用します。

JMP での式の処理: Tipps と Trapdoors

Eval (Eval Expr( h=graphbox(
			<

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

mtowle419
Level II

Re: GraphBox の数が可変です。クリックを送信している GB を識別するにはどうすればよいでしょうか?

笑 わかったよ

foreach({jpeg}, files in directory(jpegs),
	img = new image(jpeg);

	h = Eval(
		Eval Expr(
			graphbox(
				<

It's not clear to me why `jpeg` needs the expr() and `img` doesn't, though. Both of those vars are 'born' on a per-loop basis

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。

hogi
Level XII

Re: GraphBox の数が可変です。クリックを送信している GB を識別するにはどうすればよいでしょうか?

はい、これは JSL では大きな問題です。残念ながら、どの引数が評価され、どの引数が単に「転送」されるかを示すドキュメントはありません。また、それを見つけるのがまったく簡単ではない場合もあります。

ヘッドは自身の議論を評価しているのでしょうか?

JMP サポートに、引数を評価する関数と評価しない関数の公式リストを問い合わせました。残念ながら、そのようなリストはありません。
別のアプローチ: JSL エディターで高度な構文強調表示を使用します - 関数は引数を評価しますか?

次のリリースのいくつかで実装されることを期待しています...。

実際、JSL の多くの (!!!) 関数は、使用前に引数 (の一部) を評価しません。
このアプローチは非常に強力です!

「転送されたばかり」の最も顕著な例:

New column (.... Formula(Expression gets just transferred))

マウストラップについても同様です。
もう一度考えてみると、引数を評価しないというのは JMP の非常に親切なことです : )
コードを実行した瞬間ではなく、ユーザーが画像をクリックするたびにステータス メッセージを変更する必要があります。

一方、ウィンドウに画像を追加するには、JMP で画像ファイルを開く必要があります。そのためには、変数を調べる必要があります。
注意: 場合によっては、引数を Eva​​l(引数) に置き換えると役立つことがあります。
時々。
ここでは:いいえ。

この投稿のオリジナルは 、English (US) で書かれており、ユーザビリティ向上のため自動翻訳機能を使用して表示しています。コメントを投稿すると、オリジナルの言語(English (US))やご指定の言語 でも表示されます。