Actualisation de Windows et de la persistance de la fenêtre<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Salut. J'ai une expression qui crée d'abord une fenêtre de notification modale et, en appuyant sur OK, une seconde fenêtre d'édition est créée. Dans la fenêtre d'édition, un bouton Actualiser ferme la fenêtre et réexécute l'expression d'origine. Lorsque je clique sur "Actualiser", la fenêtre d'édition se ferme comme prévu et la fenêtre de notification modale réapparaît. Cependant, la deuxième itération de la fenêtre d'édition apparaît avec un "2" ajouté à son nom ("editwin 2") même si l'éditeur original a déjà été fermé. En outre, le script << On Close censé s'exécuter immédiatement lorsque la fenêtre d'édition est fermée pour la première fois ne s'exécute qu'après la fermeture de la deuxième instance de la fenêtre de notification et l'ouverture de la seconde instance de la fenêtre d'édition. Il semble que bien que la fenêtre d’édition soit fermée, elle reste en mémoire jusqu’à ce que la prochaine instance de la fenêtre d’édition apparaisse.
Quelqu'un a-t-il une bonne explication à ce comportement et, plus important encore, quelle est la solution de contournement?
Merci.
Noms par défaut ici (1);
Supprimer les symboles ();
editwin.expr = Expr (
BB1 = ButtonBox ("ok",
Fenêtre ("editwin") << Fermer la fenêtre;
)
BB2 = ButtonBox ("Refresh",
Fenêtre ("editwin") << Fermer la fenêtre;
editwin.expr;
)
modwin = Nouvelle fenêtre ("modwin", << modal,
TextBox ("Je suis une fenêtre de notification"),
ButtonBox ("OK", Write ("Closing modwin \! N"))
)
editwin = Nouvelle fenêtre ("editwin",
TextBox ("Je suis une fenêtre d'édition"),
BB1, BB2
)
editwin << On Close (Write ("Closing editwin \! N"));
editwin << Définir la taille de la fenêtre (300, 200);
)
editwin.expr;
Re: actualiser les fenêtres et la persistance de la fenêtreVous proposez simplement ce code au cas où il vous donnerait une approche différente du problème que vous essayez de résoudre.
Noms par défaut jusqu'ici ( 1 ) ;
Fenêtre d'édition = Une fonction ({} , { Local par défaut } ,
nwEdit = Nouvelle fenetre ( "editwin" , << Modal ,
Zone de texte ( "Je suis une fenêtre d'édition" ) ,
ButtonBox ( "D'ACCORD" ) ,
) ;
Si ( nwEdit [ "Bouton" ] == - 1 ,
retVal = 1
,
retVal = 0
) ;
retVal
) ;
maintenant = Nouvelle fenetre ( "modwin" , << Modal ,
<< Sur valider (
Fenêtre d'édition ()
) ,
Zone de texte ( "Je suis une fenêtre de notification" ) ,
ButtonBox ( "D'ACCORD" , Écrire ( "Fermeture de modwin \! N" ) ; )
) ;
Re: actualiser les fenêtres et la persistance de la fenêtrevous avez raison, mon travail autour ne résout pas le problème de la fenêtre nwaming, mais il supprime la dépendance sur le nom de la fenêtre. jJMLP Jmp transmet la fermeture de la fenêtre au système d'exploitation et perd donc le contrôle absolu du moment où la fenêtre est réellement fermée
Re: actualiser les fenêtres et la persistance de la fenêtreIntéressant. J'utilise JMP 11.1.1 pour Windows (64 bits). Je ne suis pas prêt à rejeter le problème pour le moment en tant que problème 11 vs 12 ou Mac vs Windows. Quoi qu'il en soit, je dois toujours trouver une solution de contournement pour ma configuration actuelle.
Re: actualiser les fenêtres et la persistance de la fenêtreMalheureusement, votre script n'empêche pas de renommer la fenêtre. J'ai essayé d'avoir exactement le même comportement.
Re: actualiser les fenêtres et la persistance de la fenêtrePour votre information, j'ai essayé le script dans JMP 12 pour Mac et je n'ai pas vu ce problème; editwin a été nommé editwin à chaque fois, aucune numérotation automatique ne s'est produite.
Cependant, dans JMP 12 pour Windows, je pouvais reproduire le problème: editwin 2, editwin 3, etc. sont générés après chaque actualisation. Aucune idée pourquoi.
L’approche de Txnelson offre une bonne solution de contournement
Re: actualiser les fenêtres et la persistance de la fenêtreJe n'ai pas pu résoudre le problème de nommage des fenêtres. Il apparaît que JMP garde le nom en réserve pour la durée d'exécution d'un EXPR donné. Cependant, le code ci-dessous supprime l'inquiétude concernant le nom de la fenêtre, en effectuant toutes les actions sur le handle de la fenêtre, plutôt que sur le nom de la fenêtre:
Noms par défaut ici (1);
Supprimer les symboles ();
editwin.expr = Expr (
BB1 = ButtonBox ("ok",
editwinx << Fermer la fenêtre;
)
BB2 = ButtonBox ("Refresh",
editwinx << Fermer la fenêtre;
editwin.expr;
)
modwin = Nouvelle fenêtre ("modwin", << modal,
TextBox ("Je suis une fenêtre de notification"),
ButtonBox ("OK", Write ("Closing modwin \! N"));
)
editwinx = Nouvelle fenêtre ("editwin",
TextBox ("Je suis une fenêtre d'édition"),
BB1, BB2
)
editwinx << On Close (Write ("Closing editwinx \! N"));
editwinx << Définir la taille de la fenêtre (300, 200);
)
editwin.expr;