Comment effacer correctement un gestionnaire d'état de ligneJ'ai un gestionnaire d'état de ligne très simple qui garantit qu'une ligne sélectionnée donnée ne peut jamais être désélectionnée.Le problème est que je veux désactiver cette fonctionnalité et continuer les opérations normales.
Voici le script simple qui verrouille la ligne 15 pour qu'elle soit toujours sélectionnée.
names default to here(1);
dt=open("$SAMPLE_DATA\big class.jmp");
x=15;
dt << select rows(x);
setrow = function({x},dt<<CLEAR select=""></CLEAR>
Alors maintenant, la question est de savoir comment supprimer le gestionnaire d'état de ligne, à moins de fermer et de rouvrir la table de données ?Je peux changer le gestionnaire d'état de ligne en une fonction différente, mais je préférerais simplement supprimer le gestionnaire d'état de ligne.
Quelqu'un a-t-il une réponse?
Automatisation et scriptAccès aux donnéesConception d'expériencesPersonnalisation de masseRe : Comment effacer correctement un gestionnaire d'état de ligneJe pense qu'il suffit d'affecter vide à la variable qui stockait précédemment la référence au gestionnaire. Vous devez utiliser un appel de fonction Wait( 0 ) avant de désaffecter le gestionnaire pour vous assurer que toutes les mises à jour sont rattrapées et que le script est synchronisé. (Merci à Dan Schikore pour le conseil sur Wait.)
Consultez cet exemple et examinez le journal après son exécution. Seuls les deux premiers changements d'état de ligne génèrent une sortie dans le journal.
Names Default To Here( 1 );
// example data set
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// example handler
f = Function( {a}, Show( a ) );
// assign handler
rs = dt << make row state handler( f );
// test handler
dt << Select Rows( 1 );
dt << Select Rows( 5 );
Wait( 0 );
// de-assign handler
rs = Empty();
// test absence of handler
dt << Select Rows( 3 );
dt << Select Rows( 9 );Re : Comment effacer correctement un gestionnaire d'état de ligneUne vieille question, mais pourquoi ne pas simplement définir rs=0 ?
Re : Comment effacer correctement un gestionnaire d'état de ligne<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ce qui suit semble effacer le gestionnaire d'état de ligne (mais pas les états de ligne actuels):
Effacer les variables globales ( rs ) ;
Re : Comment effacer correctement un gestionnaire d'état de ligneMerci.
Re : Comment effacer correctement un gestionnaire d'état de ligneJe copie/colle le code JSL vers MS-Word, puis le copie/colle de Word vers ici.Par exemple:
fonction_vide = fonction ({ X } , { z } ,
z = 1 ;
) ;
rs = dt << Créer un gestionnaire d'état de ligne ( fonction_vide ) ;
Re : Comment effacer correctement un gestionnaire d'état de ligneCe n'est probablement pas la bonne solution, mais j'attribue une fonction vide au gestionnaire d'état de ligne :
empty_function = function({x},{z},
z = 1;
);
rs = dt << Make Row State Handler(empty_function);
D'une manière ou d'une autre, cela ne fonctionne pas si la fonction est complètement vide, j'ai donc ajouté z=1 comme "code factice".
Salutations
Pierre
PS : Comment pouvez-vous formater un exemple de code en tant que "code" (comme vous l'avez fait) ? On dirait que je suis trop bête pour comprendre le logiciel du forum.