Comment faire pour que le script de la boîte de boutons ait une expression évaluéeSalut,
J'essaie de créer un système d'ajout automatisé de boutons qui pointeront par script vers des boîtes de contour individuelles (par exemple, avec Défilement de la fenêtre ou Fermeture). Je parviens à construire l'expression via une boucle For qui insère correctement le nom des éléments de script dans la liste, mais lorsque je tente d'attribuer un script unique à chaque bouton, celui-ci contient le nom de l'expression « buttonclickexpr ».
Comment faire pour que le script contenu dans l'expression soit évalué et placé correctement sous forme de commande écrite que le bouton exécutera au clic ?
//an example of how the window could appear
report_win=new window("test", content_VLB=V List Box(), Outline Box("Example: Distribution"), Outline Box("Example: Multivariate"));
//example of the variable that would store the name of scripts that created the OBs
script_new={"Distribution", "Multivariate", "Profiler"};
//the for loop to correctly setup the expression with the correct section name and add a button
For( i = 1, i <= N Items( script_new ), i++,
buttonclickexpr = Expr(
report_win << Scroll Window(
report_win[Outline Box( sectionName)]
)
);
Substitute Into( buttonclickexpr, Expr(sectionName), Char("Example: " ||script_new[i]) );
write(buttonclickexpr);
// Add a button to the list
content_VLB<
<APPEND></APPEND>
<BR />
<LINGO-LABS id="lingo-labs-914974" slang="en-US" mode="CREATE">
<LINGO-LABEL>Automatisation et scriptage</LINGO-LABEL>
</LINGO-LABS>
Re : Comment obtenir une expression évaluée dans un script de boîte de boutonsvous pouvez utiliser Eval(Eval Expr()).
//an example of how the window could appear
report_win = New Window( "test",
content_VLB = V List Box(),
Scroll box (Size(20,1500)),
Outline Box( "Example: Distribution" ),
Scroll box (Size(20,1500)),
Outline Box( "Example: Multivariate" )
);
//example of the variable that would store the name of scripts that created the OBs
script_new = {"Distribution", "Multivariate", "Profiler"};
//the for loop to correctly setup the expression with the correct section name and add a button
For( i = 1, i <= N Items( script_new ), i++,
buttonclickexpr = Expr(
report_win << Scroll Window( report_win[sectionName ] );
Caption(sectionName)
);
Substitute Into( buttonclickexpr, Expr( sectionName ), Char( "Example: " || script_new[i] ) );
Write( buttonclickexpr );
// Add a button to the list
Eval (Eval Expr(content_VLB << append( Button Box( "Go to " || script_new[i], Expr(Name Expr(buttonclickexpr)))) ));
);
Dans OutlineBox("tag") , la balise est la clé d'assistance de l'OutlineBox. Pour accéder à la boîte de plan via le titre, vous pouvez utiliser directement le titre [sans ContourBox() ).
Vous trouverez plus de détails dans Re : Gestion des expressions dans JMP : Conseils et pièges
| utiliser |
|
| Nom Expr() |
... to retrieve the expression that is stored in the name buttonclickexpr |
| Expr() |
... pour marquer le code afin que Évaluation Expr() puisse le trouver |
| Évaluation Expr() |
... pour trouver Expr() et l'évaluer |
| Évaluation() |
... pour évaluer l'expression complète après les étapes précédentes. |
Re : Comment obtenir une expression évaluée dans un script de boîte de boutonsUne autre approche : Substituer()
[déjà utilisé pour ajuster buttonclickexpr *)]
Les deux étapes en une seule :
For each ({title}, script_new ,
myExpr = Expr(
content_VLB << append( Button Box( "Go to " || title,current report() << Scroll Window( current report()[_sectionName_ ] )));
);
Eval(Substitute (Name Expr(myExpr), Expr( _sectionName_ ), "Example: " || title ));
);
| utiliser |
|
| Remplaçant() |
… comme Substitute for String – mais n’oubliez pas que les arguments sont évalués ! C’est pourquoi vous devez utiliser… |
| Nom Expr() |
... pour récupérer l'expression stockée sous le nom monExpr - sans l'évaluer !!! |
| Expr() |
... to protect _sectionName_ from getting evaluated |
| Évaluation() |
... pour évaluer l'expression complète après les étapes précédentes. |
*) À l'exception de Substitute. SubstituteInto() n'évalue pas son premier argument.