回复:展示盒:水平?使用 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 ) ), "," ) );
回复:展示盒:水平?我有同樣的想法:)
不過好像有時候獲取顯示路徑不會一步一步來:
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 ) ), "," ) );
回复:展示盒:水平?根據腳本索引,<< 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::*"));
回复:展示盒:水平?感謝你的回复。
下面的腳本怎麼樣? 該腳本重複父函數,直到到達頂層父函數。
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);回复:展示盒:水平?謝謝。
我只是用稍微不同的樹嘗試了一下,結果堆棧溢出。
這裡父函數不爬樹?!
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 ) );回复:展示盒:水平?如果我不得不猜測它到達過濾器列選擇器並出於某種原因從頭開始(在我看來,過濾器列選擇器是 JMP 中最容易出錯和最煩人的顯示框之一)。 XPath 可能仍然有效,但構建查詢可能更煩人。
回复:展示盒:水平?好的,
讓我們來看看 ...
案例 TS-00034009
回复:展示盒:水平?感謝您報告問題! 我可以確認開發人員已經收到它,並且已經為 JMP 的下一個主要版本對這些顯示框消息的行為進行了一些改進。顯示盒:水平?是獲取顯示框的級別/深度(?)的命令,即到達頂部父級的父級數嗎?
高級統計建模回覆:展示盒:水平?感謝您修復它。