Re: 디스플레이 박스: 레벨?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: 디스플레이 박스: 레벨?스크립팅 인덱스를 기반으로 << 표시 경로 가져오기의 목적은 전체 경로를 제공하는 것이 아니라 "강력한" 표현(강력한 경로)을 제공하는 것입니다.
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에서 작업하기에 가장 버그가 많고 성가신 표시 상자 중 하나입니다). XPath는 여전히 작동할 수 있지만 쿼리를 작성하는 것이 더 귀찮을 수 있습니다.
Re: 디스플레이 박스: 레벨?좋아요,
보자 ...
케이스 TS-00034009
Re: 디스플레이 박스: 레벨?문제를 보고해주셔서 감사합니다! Development에서 이를 수신했으며 JMP의 다음 주요 릴리스를 위해 이러한 표시 상자 메시지의 동작을 이미 일부 개선했음을 확인할 수 있습니다.디스플레이 박스: 레벨?Display Box의 레벨/깊이(?), 즉 최상위 상위에 도달하기 위한 상위의 수를 가져오는 명령입니까?
고급 통계 모델링Re: 디스플레이 박스: 레벨?해결해 주셔서 고맙습니다.