Bonjour, je suis en train de créer des scripts dans JMP Pro Application Builder.
- J'ai une fenêtre principale dans laquelle j'ai un bouton qui m'amène à une fenêtre secondaire. Dans la fenêtre secondaire, il y a des zones d'édition de texte où les valeurs sont saisies par l'utilisateur. De plus, il y a un bouton de fermeture sur cette fenêtre secondaire qui enregistre les valeurs dans l'appNS et ferme la fenêtre secondaire.
- J'ai initialisé les variables dans la fenêtre principale pour avoir des valeurs par défaut de 0. J'ai du mal à faire en sorte que les variables utilisent les valeurs mises à jour de la nouvelle fenêtre au lieu des valeurs par défaut. Il imprime les valeurs par défaut instantanément au lieu d'exécuter la fonction, puis d'imprimer les valeurs mises à jour. Toute aide serait appréciée.
Voici quelques extraits de code pour référence (PredictiveModeling est la fenêtre principale et OptimizeModelWindow est la fenêtre secondaire) :
appNS: ParamList1 = 0;
appNS: ParamList2 = 0;
appNS: ParamList3 = 0;
appNS: ParamList4 = 0;
appNS: ParamList5 = 0;
appNS: ParamList6 = 0;
OptimizeParamsButtonPress = Function( {this}, // This function is called when the OptimizeParams button is pressed on the PredictiveModeling Window
name = this << Get Button Name;
OptimizeModelWindow << Create Instance(thisModuleInstance);
Wait(OptimizeModelWindow);
PList1 = appNS: ParamList1;
PList2 = appNS: ParamList2;
PList3 = appNS: ParamList3;
PList4 = appNS: ParamList4;
PList5 = appNS: ParamList5;
PList6 = appNS: ParamList6;
Print(PList1,PList2,PList3,PList4,PList5,PList6);
);
C'est là que les variables sont lues à partir des EditBoxes et mettent à jour les valeurs par défaut...
doOptimizeParams = Function ( {},
HP1 = PEdit1 << Get Text;
appNS: ParamList1 = HP1;
HP2 = PEdit2 << Get Text;
appNS: ParamList2 = HP2;
HP3 = PEdit3 << Get Text;
appNS: ParamList3 = HP3;
HP4 = PEdit4 << Get Text;
appNS: ParamList4 = HP4;
HP5 = PEdit5 << Get Text;
appNS: ParamList5 = HP5;
HP6 = PEdit6 << Get Text;
appNS: ParamList6 = HP6;
);
CloseOptimizeButtonPress = Function( {this},
// This function is called when the Optimize button is pressed on the popup OptimizeModel window
name = this << Get Button Name;
doOptimizeParams();
Print(ParamList1,ParamList2,ParamList3,ParamList4,ParamList5,ParamList6);
(thisModuleInstance << GetBox) << Close Window;
);Vous créez une nouvelle fenêtre ou un nouveau module d'application pour votre boîte de dialogue ? Ils ne fonctionnent pas de la même façon. Voir comment passer des variables avec des modules d'application .
Merci, je vais regarder ça. J'ai deux modules d'application pour le dialogue, le module principal et le module secondaire où l'utilisateur saisit les valeurs. Je l'ai de travail maintenant, mais peut-être pas la meilleure façon. J'ai une variable flag sur le bouton "fermer" du module secondaire. Lorsque cet indicateur est levé, j'ai une grande instruction "If" dans mon module principal qui exécute le code pour ce cas.