Re : Boîte d'affichage : niveau ?Que diriez-vous d'utiliser Get Display Path() ? Get Display Path () obtient une expression relative pour naviguer entre la boîte parent et l'objet. Si vous voulez compter le nombre de parents pour atteindre le parent supérieur, essayez de suivre 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 : Boîte d'affichage : niveau ?J'ai eu la même idée 
Mais il semble que parfois Obtenir le chemin d'affichage ne va pas par étape :
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 : Boîte d'affichage : niveau ?Basé sur l'index de script, le but de << Get Display Path n'est pas de vous fournir un chemin complet mais plutôt une expression "robuste" (chemin robuste).
XPath ou la fonction récursive peut être assez facile à mettre en œuvre (aucune idée si cela fonctionnera toujours, certaines plates-formes dans JMP peuvent être assez compliquées et certains éléments peuvent ne pas être capturés)
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 : Boîte d'affichage : niveau ?Merci pour votre réponse.
Qu'en est-il du script suivant ? Le script répète la fonction parent jusqu'à ce qu'il atteigne le parent supérieur.
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 : Boîte d'affichage : niveau ?Merci.
Je viens de l'essayer avec un arbre légèrement différent et j'ai eu un débordement de pile.
Ici la fonction parent ne grimpe pas dans l'arbre ?!
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 : Boîte d'affichage : niveau ?Si je devais deviner qu'il atteint le sélecteur de col de filtre et recommence depuis le début pour une raison quelconque (le sélecteur de col de filtre est l'une des boîtes d'affichage les plus boguées et les plus ennuyeuses avec lesquelles travailler dans JMP à mon avis). XPath peut toujours fonctionner, mais la requête peut être plus ennuyeuse à construire.
Re : Boîte d'affichage : niveau ?D'accord,
Voyons ...
Mallette TS-00034009
Re : Boîte d'affichage : niveau ?Merci d'avoir signalé le problème ! Je peux confirmer que Development l'a reçu et a déjà apporté quelques améliorations au comportement de ces messages de boîte d'affichage pour la prochaine version majeure de JMP.Boîte d'affichage : Niveau ?Est-ce une commande pour obtenir le niveau/profondeur (?) d'une boîte d'affichage, c'est-à-dire le nombre de parents pour atteindre le parent supérieur ?
Modélisation statistique avancéeRe : Boîte d'affichage : Niveau ?Merci de l'avoir réparé.