Zone de liste affichant toutes les tables ouvertesJ'essaie de créer une zone de liste qui répertorie toutes les tables de données ouvertes et est automatiquement mise à jour avec la table nouvellement ouverte / nouvellement fermée. J'ai commencé avec le script ci-dessous, mais pour une raison quelconque, la fonction onClose ne fonctionne pas.
Appréciez l'aide 
names default to here(1);
f1 = function ({Temp_list},
T_list = Temp_list << get name();
lb << remove all;
lb << append (T_list)
);
f2 = function ({Temp_list},
T_list = Temp_list << get name();
lb << remove all;
lb << append (T_list)
);
asub = Subscribe to data table list( , onopen(f1));
Subscribe to data table list(asub , onclose(f2));
nw = new window("Trial",show menu(0),
vlistbox(
T_list = get data table list ();
lb = listbox(T_list);
)
);
ScriptRe: Zone de liste affichant toutes les tables ouvertesEn utilisant le JSL ci-dessous, voici ce que j'ai découvert.
Names Default To Here( 1 );
f2 = Function( {Temp_list},
T_list = Get Data Table List();
lb << remove all;
lb << append( T_list );
show("Close");
);
f1 = Function( {Temp_list},
T_list = Get Data Table List();
lb << remove all;
lb << append( T_list );
show("add");
);
asub = Subscribe to Data Table List( , onopen( f1 ) );
Subscribe to Data Table List(asub , onclose( f2 ) );
nw = New Window( "Trial",
Show Menu( 0 ),
V List Box(
T_list = Get Data Table List();
lb = List Box( T_list );
)
);
- La zone de liste créée ajoutera de nouvelles tables de données sans erreur.
- La fonction f1 est exécutée une fois pour chaque addition
- Si vous fermez une table de données, elle ne sera pas supprimée de la zone de liste.
- Si vous fermez une deuxième table de données, la table de données fermée précédente sera supprimée de la zone de liste.
- Si vous fermez la zone de liste et exécutez le JSL une deuxième fois, et fermez une table de données, une fonction f2 sera exécutée deux fois.La fonction f2 de la première exécution de la JSL sera exécutée, suivie de l'exécution de la deuxième instance de la fonction f2.Cela peut être montré en modifiant l'instruction Show().Si l'instruction Show a été modifiée de
Show( "Close" );
àShow( "Close 2" );
à la fermeture d'une table de données, les deux versions de l'instruction Show() seront affichées,
- Les exécutions suivantes du JSL ajoutent des copies supplémentaires de la fonction f2, chaque copie étant exécutée pour chaque fermeture de table de données.
- Clear Globals et Clear Symbols n'élimine pas les versions précédentes de la fonction f2.
Il s'agit clairement d'un bogue JMP et doit être envoyé au personnel d'assistance JMP.
Je leur ai soumis le bug.
Re: Zone de liste affichant toutes les tables ouvertesMerci @txnelson !! C'est exactement le bug que j'ai rencontré. Je suppose qu'en attendant, je vais devoir trouver une solution de contournement pour cela.
Re: Zone de liste affichant toutes les tables ouvertesVous devriez simplement pouvoir ajouter de nouvelles valeurs à lb et supprimer uniquement la valeur fermée avec index (en utilisant Contains() pour obtenir l'index) a également ajouté des variables locales aux fonctions.
Names Default To Here(1);
f1 = function ({Temp_list}, {tableList},
tableList = Temp_list << get name();
lb << append (tableList)
);
f2 = function ({Temp_list}, {tableList},
tableList = Temp_list << get name();
lb << Remove Item(Contains(lb << get items, tableList));
);
asub = Subscribe to data table list( , onopen(f1));
Subscribe to data table list(asub , OnClose(f2));
nw = new window("Trial",show menu(0),
vlistbox(
lb = listbox(get data table list ());
)
);Re : Zone de liste montrant toutes les tables ouvertesMerci @jthi ! Ça marche!
Si cela ne vous dérange pas, pourriez-vous également montrer comment configurer également la clause "OnRename" ?