À l'aide d'un script, comment définir le texte d'un script de table dans une boîte à boutons d'un fichier journal ?À l'aide d'un script, je dois construire un fichier journal complètement autonome avec des boîtes à boutons qui reproduisent des tableaux de données.Dans l'application de production, il y aura de nombreux titres (chacun représentant une pièce) et chaque titre aura plusieurs boîtes de boutons en dessous, chacune affichant un tableau de données différent associé à la pièce.En raison des calculs complexes nécessaires à la construction des tableaux de données, je les construis à l'aide de fonctions.Mon intention serait de distribuer UNIQUEMENT le fichier journal aux utilisateurs.
J'ai construit un exemple squelettique en utilisant l'exemple de table de données Baltic.jmp. La fonction "SmallTables()" renvoie le script de table sous forme de texte.Mais je ne trouve pas de moyen de saisir ce texte dans les zones de script des zones de boutons du fichier journal. Toute aide serait grandement appréciée.
SmallTables = Function( {k},
dt = Open( "$Sample_Data/Baltic.jmp" );
dt_Small = dt << Subset( Rows(), Columns( Column( k ) ), Output Table Name( "Small" ) );
Close( dt, NoSave );
tblScript = dt_Small << Get Script;
result = Char( Name Expr( tblScript ) );
);
jrn = New Window( "Table Test", Outline Box( "Title" ) );
For( k = 1, k <= 5, k++,
jrn << Append( BB = Button Box( "Small Table " || Char( k ), Set Script( SmallTables( k ) ) ) )
);Re : À l'aide d'un script, comment définir le texte d'un script de table dans une boîte de boutons dans un fichier journal ?Merci beaucoup pour la référence à cet article !C'est une explication très claire avec de jolis exemples.C'est très utile.
Re : À l'aide d'un script, comment définir le texte d'un script de table dans une boîte à boutons dans un fichier journal ?L'astuce consiste à s'assurer que la sous-expression est insérée avant d'être évaluée.Cet article du JSL Cookbook pourrait vous aider :
Insérez une expression dans une autre à l'aide d'Eval Insert, Eval Expr, Parse et Substitute
Re : À l'aide d'un script, comment définir le texte d'un script de table dans une boîte de boutons dans un fichier journal ?Quel bel exemple !Dans mon projet, cependant, je dois construire des centaines de tableaux de données, plusieurs pour chacune des nombreuses parties.C'est pourquoi j'utilise des fonctions pour construire les tableaux de données (j'espère qu'aucun utilisateur débutant ne verra jamais que scénario!). Je crains que votre suggestion n'entraîne l'ouverture simultanée de trop de fenêtres. Mais, pour un nombre gérable de tables de données, votre concept est très sympa !Je suis sûr que j'aurai l'occasion de l'utiliser.
Je vous remercie beaucoup pour votre aide.
Re : À l'aide d'un script, comment définir le texte d'un script de table dans une boîte de boutons dans un fichier journal ?Merci beaucoup!Cela fonctionne parfaitement dans mon "gros" script.J'étais obsédé par l'idée que le résultat de ma fonction était une représentation textuelle du script et, en tant que tel, devait être saisi dans la boîte de dialogue du script de la boîte à boutons. Je ne comprends toujours pas pourquoi cela ne fonctionne pas, mais l'utilisation de la fonction Name Expr et de Substitute, comme vous l'avez démontré, fonctionne parfaitement.
À propos, dans mon application réelle, la boucle est requise car je dois construire différentes tables.J'ai un grand nombre de pièces et le script construit plusieurs tables de données, avec des scripts, uniques à chaque pièce.Ce script prend un peu de temps à s'exécuter, c'est donc formidable de pouvoir l'exécuter pour créer un fichier journal autonome.
Merci encore de m'avoir mis sur la bonne voie !
Re : À l'aide d'un script, comment définir le texte d'un script de table dans une boîte de boutons dans un fichier journal ?J'utilise des fichiers journaux autonomes pour les démonstrations et les formations, ce qui les rend faciles à partager.Des liens pour fermer des sections individuelles et pour tout nettoyer font avancer les choses.Le script ci-dessous crée un exemple de journal de base ; une fois que vous l'avez exécuté, vous devriez voir un journal contenant des liens.Faites un clic droit sur chacun et sélectionnez Modifier > Modifier le script pour voir comment ils sont construits.J'utilise souvent « Copier le script de table » pour les remplir.Mettre ces codes dans les fonctions est une bonne idée, mais gardez à l'esprit que cela ressemble davantage à de la magie noire pour les utilisateurs débutants qui tentent d'explorer votre journal.

Notez que je crée normalement des journaux de manière interactive, sans utiliser de script comme celui-ci.
names default to here(1);
//Open data tables temporarily so we can copy their scripts
dtIrisTemp = open("$Sample_Data/Iris.jmp");
dtBigClassTemp = open("$Sample_Data/Big Class.jmp");
//Use Eval(EvalExpr()) so the actual scripts for the data table are saved in
//the journal.
Eval( Eval Expr(
journal = New Window( "A Journal", <<JOURNAL></JOURNAL>
Re : À l'aide d'un script, comment définir le texte d'un script de table dans une boîte de boutons dans un fichier journal ?Si vous utilisez une table, je ne l'ouvrirais pas et ne la fermerais pas pour chaque appel de fonction. J'ouvrirais la table, construirais la fenêtre, avec la boucle for puis fermerais la table.
Essaye ça.
SmallTables = Function( {k},
dt = Open( "$Sample_Data/Baltic.jmp" );
dt_Small = dt << Subset( Rows(), Columns( Column( k ) ), Output Table Name( "Small" ), Invisible );
Close( dt, NoSave );
_xx = dt_Small << Get Table Script Names;
dt_Small << Delete Scripts(_xx);
tblScript = dt_Small << Get Script;
wait(0);
Close( dt_Small , NoSave);
NameExpr(tblScript)
);
jrn = New Window( "Table Test", Outline Box( "Title" ) );
For( k = 1, k <= 5, k++,
_xx = SmallTables(k);
Eval(Substitute(Expr(jrn << Append( BB = Button Box( "Small Table " || Char( k ), Set Script( _scr ) ) )),
Expr(_scr), NameExpr(_xx) ) )
);Re : À l'aide d'un script, comment définir le texte d'un script de table dans une boîte à boutons dans un fichier journal ?