Betreff: Anzeigefeld: Füllstand?Wie wäre es mit Get Display Path()? Get Display Path () erhält einen relativen Ausdruck, um zwischen übergeordneter Box und Objekt zu navigieren. Wenn Sie die Anzahl der Eltern zählen möchten, um zum obersten Elternteil zu gelangen, versuchen Sie es mit 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 ) ), "," ) );
Betreff: Anzeigefeld: Füllstand?Ich hatte die gleiche Idee 
Aber so scheint es manchmal Anzeigepfad abrufen geht nicht Schritt für Schritt:
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 ) ), "," ) );
Betreff: Anzeigefeld: Füllstand?Basierend auf dem Skriptindex besteht der Zweck von << Get Display Path nicht darin, Ihnen einen vollständigen Pfad bereitzustellen, sondern einen "robusten" Ausdruck (robuster Pfad).
XPath oder rekursive Funktionen sind möglicherweise ziemlich einfach zu implementieren (keine Ahnung, ob dies immer funktioniert, einige Plattformen in JMP können ziemlich kompliziert sein und einige Elemente werden möglicherweise nicht erfasst).
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::*"));
Betreff: Anzeigefeld: Füllstand?Danke für Ihre Antwort.
Wie wäre es mit folgendem Skript? Das Skript wiederholt die übergeordnete Funktion, bis es das oberste übergeordnete Element erreicht.
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);Betreff: Anzeigefeld: Füllstand?Danke.
Ich habe es gerade mit einem etwas anderen Baum versucht und einen Stapelüberlauf bekommen.
Hier klettert die übergeordnete Funktion nicht auf den Baum?!
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 ) );Betreff: Anzeigefeld: Füllstand?Wenn ich raten müsste, erreicht es den Filter Col Selector und beginnt aus irgendeinem Grund von vorne (Filter Col Selector ist meiner Meinung nach eines der fehlerhaftesten und nervigsten Anzeigefelder, mit denen man in JMP arbeiten kann). XPath funktioniert möglicherweise immer noch, aber die Abfrage kann lästiger zu erstellen sein.
Betreff: Anzeigefeld: Füllstand?OK,
mal sehen ...
Fall TS-00034009
Betreff: Anzeigefeld: Füllstand?Vielen Dank für die Meldung des Problems! Ich kann bestätigen, dass die Entwicklung es erhalten und bereits einige Verbesserungen am Verhalten dieser Anzeigefeldmeldungen für die nächste Hauptversion von JMP vorgenommen hat.Anzeigefeld: Füllstand?Ist das ein Befehl, um die Ebene/Tiefe (?) eines Anzeigefelds zu ermitteln, dh die Anzahl der übergeordneten Elemente, um zum obersten übergeordneten Element zu gelangen?
Erweiterte statistische ModellierungBetreff: Anzeigefeld: Ebene?Danke, dass Sie das Problem behoben haben.