Comment renvoyer la valeur de la zone d'édition numérique pour de nombreux élémentsSalut les JMPers,
Quelques problèmes concernant les valeurs de retour de la zone d'édition numérique.
J'ai fait référence à d'autres messages ( boîte de numérotation combinée , collecter toutes les données dans une nouvelle fenêtre ), et essayez de créer mon code.
Étant donné que j'ai de nombreux éléments à valoriser, saisir un numéro dans chaque élément n'est pas pratique pour moi.
Ainsi, "Nouvelle fenêtre" et "Ajouter" sont utilisés pour disposer de la valeur de retour de nombreux éléments.
Finalement, le code renvoie simplement la valeur par défaut (1) plutôt que le numéro que j'ai saisi.
Pouvez-vous m'aider à vérifier quelles étapes sont erronées dans mon code ?
Merci pour votre aide précieuse en avancé.
list = {"A", "B", "C","D","E","F","G"};
val={};
nw = New Window( "example",
v = V List Box(),
Button Box( "OK", Set Script( nw< )
);
show(val);
Re : Comment renvoyer la valeur de la zone d'édition numérique pour de nombreux élémentsVous avez raison : JMP poursuivra le traitement même sans cliquer sur OK. Sauf si vous faites 1 des 2 choses. Faites de votre fenêtre d'affichage une fenêtre "Modale"
nw = New Window("Test Window", Modal, ....................);
Ce qui obligera le traitement à attendre que la fenêtre soit effacée.
Ou
Structurez votre code en Functions() ou Expressions, Expr(), qui n'exécuteront pas le code qu'elles contiennent, jusqu'à ce qu'elles soient expressément appelées depuis votre code de fenêtre ou depuis une autre Function() ou Expr()
Re : Comment renvoyer la valeur de la zone d'édition numérique pour de nombreux élémentsSalut Jim,
Merci vraiment pour la réponse professionnelle.
Je fais mon code en fonction de toutes vos suggestions, mais je trouve des problèmes d'exécution séquentielle (le JSL exécute tous les codes suivants même si je n'ai pas encore cliqué sur "OK").
Je dois donc mettre tout mon code suivant dans Set Script pour garantir la séquence d'exécution correcte.
Il y a 2 options qui me traversent l'esprit,
1) Cette méthode peut-elle être utilisée dans le « modal ? Il semble que <
2) Est-ce que wait(0) fonctionne ici ? et où dois-je le mettre parmi le code ?
Voici mon code simplifié pour montrer mes problèmes, je marque 2 lignes en bleu pour montrer ce que j'ai fait,
Names Default To Here( 1 );
list = {"A", "B", "C", "D", "E", "F", "G"};
val = {};
nw = New Window( "example",
v = V List Box(),
Button Box( "OK",
Set Script(
nw << close window;
New Window( "result", < );
)
)
);
For( i = 1, i <= N Items( list ), i++,
Insert Into( val, 1 );
(v << append(
Outline Box( "",
H List Box(
Text Box( list[i] ),
Eval(
Substitute(
Expr(
exq = Number Edit Box(
1,
10,
<nw2 = New Window( "fake result", <
Re : Comment renvoyer la valeur de la zone d'édition numérique pour de nombreux élémentsVoici une version modifiée de l'exemple tiré de
Aide ==> Index des scripts ==> TextEditBox ==> Définir la fonction
qui illustre le but de "{this}"
Names Default To Here( 1 );
New Window( "Example",
xx = Text Edit Box( "pw?" ),
Text Box( "" )/* here's the sibling box, waiting to show the pw */
);
xx << SetFunction(
Function( {this},
this << passwordStyle( 1 );/* hide my display*/ /* put my password into my sibling's display */
(this << sib) << settext( this << getText );
)
);Re : Comment renvoyer la valeur de la zone d'édition numérique pour de nombreux élémentsMerci Jim, c'est vraiment un bon moyen et m'aide à mieux comprendre "Expr", "substitute et "Eval".
Pour << SetFunction ( Function ( {this} , val[i] = exq << get ) ),
Je suppose que je peux supprimer le « ceci » et laisser une parenthèse vide. (j'ai essayé et ça marche toujours)
Y aura-t-il un risque potentiel à garder le support vide ?
Merci.
Re : Comment renvoyer la valeur de la zone d'édition numérique pour de nombreux élémentsLe problème que vous rencontrez est que vous supposez que chaque spécification distincte de "exq" est conservée dans une instance unique. Ce qui se passe en réalité, c'est qu'ils sont écrits les uns sur les autres. Le code ci-dessous sépare les instances.
Names Default To Here( 1 );
list = {"A", "B", "C", "D", "E", "F", "G"};
val = {};
nw = New Window( "example", v = V List Box(), Button Box( "OK", Set Script( nw << close window ) ) );
For( i = 1, i <= N Items( list ), i++,
Insert Into( val, 1 );
(v << append(
Outline Box( "",
H List Box(
Text Box( list[i] ),
Eval(
Substitute(
Expr(
__exq__ = Number Edit Box(
1,
10,
<<SETFUNCTION></SETFUNCTION>