Suspendre le script jusqu'à ce que l'utilisateur travaille manuellement sur la table de donnéesGens,
J'essaie de suspendre mon script afin qu'un utilisateur puisse travailler manuellement sur une table de données ouverte (examiner manuellement les données et ajouter/supprimer des lignes ou des colonnes) avant de continuer. J'ai essayé d'utiliser une boîte de dialogue pour y parvenir, mais je ne peux pas travailler sur la table de données tant que la boîte de dialogue n'a pas été acceptée. Quelqu'un at-il des suggestions sur la façon dont je peux accomplir cela?
Effacer le journal();
Noms par défaut ici (1) ;
dt.bigclass = Open( "$SAMPLE_DATA/Big Class.JMP" );
Nouvelle fenêtre( "ATTENDEZ !",
< Bip(),
Zone de liste V(
Zone de texte(
"Ajouter/supprimer manuellement des lignes ou des colonnes dans le tableau de données"
),
)
);
// L'utilisateur ajoute ou soustrait des lignes/colonnes de la table de données ouvertes avant de continuer
// Autres consignes
Re : Suspendre le script jusqu'à ce que l'utilisateur travaille manuellement sur la table de donnéesJe suppose que vous faites quelque chose comme ça.
Names Default To Here( 1 );
dt.bigclass = Open( "$SAMPLE_DATA/Big Class.JMP" );
New Window( "WAIT!",
Beep(),
V List Box( Text Box( "Manually Add/Delete Rows or Columns In Data Table" ), ),
Hlistbox(
Buttonbox("OK",
<<SET function=""></SET>
où vous ne voulez pas que "cela ne devrait pas s'afficher avant d'être d'accord
Vous ne devez rien faire d'autre jusqu'à ce que vous appuyiez sur OK.La façon normale de le faire est d'utiliser des fonctions et de les appeler à partir du bouton OK.
Names Default To Here( 1 );
dt.bigclass = Open( "$SAMPLE_DATA/Big Class.JMP" );
action_okay = function({},
//{DEFAULT LOCAL}, //uncomment this if you want the variables to be local only (don't exist outside the function)
// put everything you want to do after okay button in here.
print("this shouldn't show until okay");
// other stuff
);
New Window( "WAIT!",
Beep(),
V List Box( Text Box( "Manually Add/Delete Rows or Columns In Data Table" ), ),
Hlistbox(
Buttonbox("OK",
<<SET function=""></SET>Re : Suspendre le script jusqu'à ce que l'utilisateur travaille manuellement sur la table de donnéesPour cet exemple particulier, si vous souhaitez que l'utilisateur effectue des opérations manuelles sur une table, vous pouvez créer une vue de données/une boîte de données pour cette table qui s'affichera dans la même fenêtre.Par exemple:
Names Default To Here( 1 );
dt = New Table( "My Table" );
dt << Add Rows( 10 );
dt << New Column( "X1", Set Values( J( 10, 1, Random Normal() ) ) );
dt << New Column( "X2", Set Values( J( 10, 1, Random Uniform() ) ) );
nw = New Window( "Prepare Your Data",
hb = H List Box(
V List Box(
Text Box( "Delete Unneccesary Columns in Table and then click OK" ),
Button Box( "OK", nw << close window )
),
Panel Box( "Data Table View",
Border Box( Sides( 15 ), dt << new data box(), <<BORDER></BORDER>

Re : Suspendre le script jusqu'à ce que l'utilisateur travaille manuellement sur la table de donnéesLe script et l'idée fournis par Vince devraient fonctionner, vous devez placer les actions que vous souhaitez effectuer, après avoir appuyé sur le bouton, à l'intérieur de l'appel de fonction des boutons
Button Box("OK",
<<SET function=""></SET>
Le script qui sera exécuté après avoir appuyé sur le bouton "OK" est celui-ci :
Print("faire des trucs"); soi << Fermer la fenêtre;
Il existe d'autres façons de procéder, mais c'est probablement l'option la plus simple et je commencerais par celle-ci.
Re : Suspendre le script jusqu'à ce que l'utilisateur travaille manuellement sur la table de donnéesVincent,
Si je comprends la question de l'utilisateur, j'essaie de faire quelque chose de très similaire, c'est-à-dire de permettre à l'utilisateur de modifier une table avant de poursuivre avec le script. Peut-être que je n'ai pas fait quelque chose de bien, mais lorsque j'utilise le script ci-dessus dans mon script, le programme continue de fonctionner, provoquant une erreur car les modifications de table nécessaires n'ont pas été effectuées.
Donc, si j'utilise modal, le script s'arrête mais n'autorise pas une modification de table.
Si je n'utilise pas modal, une modification de table est autorisée avant d'appuyer sur OK, mais le script continue de s'exécuter sans la modification nécessaire.
Je souhaite que le script cesse de s'exécuter et ne continue pas tant que l'utilisateur n'a pas indiqué que les modifications de la table ont été effectuées.
Cela peut-il être fait?
Merci d'avance pour votre aide.
Patrick Carrol
Re : Suspendre le script jusqu'à ce que l'utilisateur travaille manuellement sur la table de donnéesMerci Vince,
C'était facile. Je suppose que j'ai besoin de lire sur les propriétés modales.
Re : Suspendre le script jusqu'à ce que l'utilisateur travaille manuellement sur la table de donnéesNe rendez pas la nouvelle fenêtre modale. Ensuite, ayez toutes les actions à l'intérieur du bouton OK (ou n'importe quel bouton).
Names Default To Here( 1 );
dt.bigclass = Open( "$SAMPLE_DATA/Big Class.JMP" );
New Window( "WAIT!",
Beep(),
V List Box( Text Box( "Manually Add/Delete Rows or Columns In Data Table" ), ),
Hlistbox(
Buttonbox("OK",
<<SET function=""></SET>