Re: ディスプレイボックス: レベル?Get Display Path() を使用するのはどうですか? Get Display Path () は、親ボックスとオブジェクトの間を移動するための相対的な式を取得します。 親の数を数えて一番上の親まで行きたい場合は、jslに従ってみてください。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = dt << Bivariate( Y( :weight ), X( :height ), Fit Line );
rpt = Report( biv );
rootParent = rpt << Top Parent();
path_to_parent = rpt[number col Box( 9 )] << Get Display Path( rootParent, Mode( "Subscript" ) );
count = N Items( Words( Char( Eval Expr( path_to_parent ) ), "," ) );
Re: ディスプレイボックス: レベル?私も同じ考えでした:)
でもたまにあるらしい表示パスを取得一歩一歩進みません:
New window("test",Panel Box("1",Panel box("2",PanelBox("3",HList Box(Spacer Box(100),Text Box("4"),V List Box(Text Box("5"),Spacer Box(Size(100,100)),tb=Text Box("6")))))));
rootParent = tb << Top Parent();
path_to_parent = tb << Get Display Path( rootParent, Mode( "Subscript" ) );
count = N Items( Words( Char( Eval Expr( path_to_parent ) ), "," ) );
Re: ディスプレイボックス: レベル?スクリプト インデックスに基づく << Get Display Path の目的は、フル パスを提供することではなく、「堅牢な」式 (堅牢なパス) を提供することです。
XPathまたは再帰関数は実装がかなり簡単かもしれません(これが常に機能するかどうかはわかりません.JMPの一部のプラットフォームは非常に複雑になる可能性があり、一部の要素はキャプチャされない可能性があります)
Names Default To Here(1);
nw = New Window("test", // 6
Panel Box("1", // 5
Panel Box("2", // 4
Panel Box("3", // 3
H List Box( // 2
Spacer Box(100),
Text Box("4"),
V List Box( // 1
Text Box("5"),
Spacer Box(Size(100, 100)),
tb = Text Box("6") // 0
)
)
)
)
)
);
get_parents = function({elem, idx = 0},
next_elem = elem << parent;
If(Is Empty(next_elem),
return(idx);
);
idx++;
show(next_elem << class name);
get_parents(next_elem, idx);
);
show(get_parents(tb)); // has also the headbox
parent_count = N Items(nw << XPath("//TextBox[text() = '6']/ancestor::*"));
Re: ディスプレイボックス: レベル?お返事ありがとうございます。
次のスクリプトはどうでしょうか。 スクリプトは、最上位の親に到達するまで親関数を繰り返します。
nw = New Window( "test",
pb1 = Panel Box( "1",
pb2 = Panel Box( "2",
pb3 = Panel Box( "3",
H List Box(
Spacer Box( 100 ),
tb4 = Text Box( "4" ),
V List Box(
tb5 = Text Box( "5" ),
Spacer Box( Size( 100, 100 ) ),
tb6 = Text Box( "6" )
)
)
)
)
)
);
//count parent display box from target to top display box
count parent = Function( {nw, target, top}, //window, target display box, top display box
top_parent = top;
end = 0;
current = target;
displaybox_list = {};
For( i = 1, And( end == 0, i < 100 ), i++,
parent = current << parent();
If( Is Empty( parent ),
end = 1,
current = parent;
Insert Into( displaybox_list, current );
If( top_parent == current,
end = 1
);
);
);
Eval List( {i - 1, displaybox_list} );
);
{count, displaybox_list} = count parent( nw, tb6, pb1 );
show(count);Re: ディスプレイボックス: レベル?ありがとう。
少し異なるツリーで試してみたところ、スタックオーバーフローが発生しました。
ここで、親関数が木を登らない!?
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
New Window( "test",
H List Box( Panel Box(
"", H List Box( Text Box( "Hallo" ), tb = Filter Col Selector() ) ) ) );
get_parents = Function( {elem, idx = 0},
next_elem = elem << parent;
If( Is Empty( next_elem ),
Return( idx )
);
idx++;
Print( idx );
Show( next_elem << class name );
get_parents( next_elem, idx );
);
Show( get_parents( tb ) );Re: ディスプレイボックス: レベル?推測する必要がある場合は、フィルター列セレクターに到達し、何らかの理由で最初から開始します (私の意見では、フィルター列セレクターは、JMP で操作するのに最もバグが多く、最も厄介な表示ボックスの 1 つです)。 XPath は引き続き機能する可能性がありますが、クエリを作成するのが面倒になる可能性があります。
Re: ディスプレイボックス: レベル?Ok、
どれどれ ...
ケース TS-00034009
Re: ディスプレイボックス: レベル?問題を報告していただきありがとうございます。 私は、Development がそれを受け取り、JMP の次のメジャー リリースに向けて、これらの表示ボックス メッセージの動作にすでにいくつかの改善を加えていることを確認できます。表示ボックス: レベル?表示ボックスのレベル/深さ (?)、つまり最上位の親に到達する親の数を取得するコマンドですか?
高度な統計モデリングRe: ディスプレイボックス: レベル?修正していただきありがとうございます。