Recréer exactement une nouvelle fenêtre() dans son état exact<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Je crée une nouvelle fenêtre dynamique () avec un nombre x d'onglets et de graphiques (autres éléments).Existe-t-il quelque chose comme Eval(dt << Get Script) qui recréera exactement la fenêtre ?Garder toutes les fonctions des boutons entièrement intactes et savoir où j'étais efficacement.
Pour le moment, si je le fais, je n'arrive même pas à le créer à l'aide de eval(nw<
Modifier* Juste pour être clair.J'essaie de recréer une fenêtre sans savoir exactement ce qu'elle contient. Voici l'exemple que j'ai trouvé pour montrer de quoi je parle :
Les noms par défaut sont ici ( 14 );
cwd = convertir le chemin du fichier ( "./" );
Nouvelle fenetre ( "Test" ,
Boîte de liste (
tb = boîte à onglets (
"Onglet1" ,
Panneau électrique ( "Onglet 1" ,
livre = zone de liste ( répertoire de fichiers ( "$SAMPLE_DATA" )),
boîte à boutons ( "Ouvrir" ,
fichier = (lb << Soyez sélectionné )[ 1 ];
dt = Ouvrir ( "$SAMPLE_DATA\" ||fichier)
)
),
)
),
Boîte de liste (
Boîte à boutons ( "Dos" , à déterminer<< Définir la sélection ((à To << Soyez sélectionné )- 1 )),
Boîte à boutons ( "Suivant" ,
nouvelonglet = Évaluer (autres_boîtes[(tb<< Soyez sélectionné )]);
tuberculose<< Ajouter ( "Languette" , nouvel onglet);
tuberculose<< Définir la sélection ((tb<< ObtenirSélectionné )+ 1 )
)
)
);
autres_boîtes = {
Panneau électrique ( "Vide, parce que... des raisons ?" ),
Panneau électrique ( "Noms de colonnes" ,
Boîte de colis (dt, tout)
)
} ;
Il semble que le consensus général soit non. Je vais donc simplement le marquer comme répondu.
Re : Recréer exactement une nouvelle fenêtre() dans son état exactMerci.Apprécier.
Re : Recréer exactement une nouvelle fenêtre() dans son état exactDésolé, j'étais facétieux.Je savais que tu ne créais pas un jeu vidéo.
Ensuite, mon exemple montre une méthodologie et est autonome.Je n'ai pas créé de bouton magique pour vous.Vous ne pouvez pas simplement voler une méthodologie.Cela me fait rire que vous pensiez pouvoir simplement ajouter mon code dans le vôtre et vous attendre à ce qu'il fonctionne.Mais pour vous répondre, les fenêtres de droite ne changent jamais et il semble que le code réplique exactement cette fenêtre à chaque fois.Il faudrait comparer de haut en bas.
Je ne suis pas payé pour aider les gens sur ces forums et je suis à bout de patience.Je vous suggère de revenir en arrière, de lire le code et de comprendre ce qu'il fait.J'espère que tu vas bien.
Re : Recréer exactement une nouvelle fenêtre() dans son état exactMerci, c'est utile mais il n'en obtient que les valeurs sélectionnées.Je recherche plutôt une duplication de la fenêtre elle-même.
Re : Recréer exactement une nouvelle fenêtre() dans son état exactNon, je ne crée pas de jeu vidéo.D'où le mot analogue. Voici un exemple :
Les noms par défaut sont ici ( 14 );
cwd = convertir le chemin du fichier ( "./" );
Nouvelle fenetre ( "Test" ,
Boîte de liste (
tb = boîte à onglets (
"Onglet1" ,
Panneau électrique ( "Onglet 1" ,
livre = zone de liste ( répertoire de fichiers ( "$SAMPLE_DATA" )),
boîte à boutons ( "Ouvrir" ,
fichier = (lb << Soyez sélectionné )[ 1 ];
dt = Ouvrir ( "$SAMPLE_DATA\" ||fichier)
)
),
),
Boîte à boutons ( "Recréer" ,
compteuronglet = 1 ;
liste_texte = { "" } ;
inclure (cwd|| "/recreateWindow2.jsl" )
)
),
Boîte de liste (
Boîte à boutons ( "Dos" , à déterminer<< Définir la sélection ((à To << Soyez sélectionné )- 1 )),
Boîte à boutons ( "Suivant" ,
nouvelonglet = Évaluer (autres_boîtes[(tb<< Soyez sélectionné )]);
tuberculose<< Ajouter ( "Languette" , nouvel onglet);
tuberculose<< Définir la sélection ((tb<< ObtenirSélectionné )+ 1 )
)
)
);
autres_boîtes = {
Panneau électrique ( "Vide, parce que... des raisons ?" ),
Panneau électrique ( "Noms de colonnes" ,
Boîte de colis (dt, tout)
)
} ;
Maintenant, quand je lance ceci, j'obtiens quelque chose comme ceci lorsque je cours à côté de ce que j'obtiens lorsque j'appuie sur recréer.

Voici après avoir sélectionné une table de données et l'ouvrir, puis appuyer sur suivant.

C'est ici que j'appuie à nouveau sur suivant.

Maintenant, je vous demanderais de marquer les différences entre les images de gauche et de droite.Quand je dis que ça ne marche pas, c'est parce que je l'ai essayé.Sauf si je comprends mal ce que vous appelez travailler ou comment utiliser votre script.Mais je m'attends à ce que la droite ressemble exactement à la gauche (en supposant que j'ai ouvert les tableaux de données appropriés).Non seulement cela, mais tous les boutons de tous les onglets devraient également fonctionner.
Re : Recréer exactement une nouvelle fenêtre() dans son état exactJe suis désolé, je n'avais pas réalisé que vous construisiez un jeu vidéo.En tant que tel, je recommanderais de se concentrer d'abord sur la construction du moteur de jeu, ce serait ensuite une question simple d'y intégrer des états de sauvegarde.
Pour les autres lisant ce forum qui souhaitent un moyen plus simple de recréer une fenêtre et ne comprennent pas non plus la méthodologie.J'ai joint un exemple plus complexe qui démontre la robustesse et la simplicité.
Vous exécuterez recreateWindow.jsl qui vous demandera le chemin d’accès à recreateWindow2.jsl.
Faites-moi savoir si vous avez des questions sur l'exécution de ces fichiers.
Re : Recréer exactement une nouvelle fenêtre() dans son état exactJe ne sais pas si vous avez déjà utilisé des émulateurs pour d'anciens jeux Nintendo ou non, mais cela utilise quelque chose appelé un état de sauvegarde qui est analogue à celui-ci.
Ce que je veux, c'est un état de sauvegarde. Quelque chose qui enregistre exactement le niveau auquel je me trouve, où je me trouve sur l'écran, etc. Me dire de simplement redémarrer le jeu n'est pas ce que je recherche.
Cette méthode résout un problème différent.Je ne vois pas en quoi cela est utile.
D'accord pour ne pas être d'accord, je suppose. Je ne voulais pas vous offenser.Désolé de ne pas m'être expliqué correctement au départ.
Re : Recréer exactement une nouvelle fenêtre() dans son état exactSi vous avez quelque chose qui fonctionne, je ne vais pas pousser plus loin.Mais permettez-moi de clarifier ce que vous avez dit ci-dessus.
Ce MÉTHODE fait travailler pour vous car les informations fournies par l'utilisateur dans l'onglet 1 seront données pour créer l'onglet 4 (ou n'importe quel onglet).
Si vous réexécutez simplement le script, l'utilisateur devra parcourir les onglets 1 à 3 pour revenir à l'onglet 4 où il se trouvait.C'est vrai, mais cela ne s'appliquerait pas LA MÉTHODE , ce ne serait qu’appliquer l’exemple.
"En ce moment, je dois créer un script qui extrait toutes les fonctions nécessaires et l'enregistrer dans un fichier JSL (assez similaire à ce que vous dites, sauf que je dois le créer à la volée)."
Pourquoi faut-il le créer à la volée s'il est déjà créé ? AKA, vous avez un script qui peut le construire une fois, pourquoi créer un deuxième script pour le construire deux fois ?
Re : Recréer exactement une nouvelle fenêtre() dans son état exactMes excuses, j'ai dû mal énoncer mon problème.Cette méthode ne fonctionne pas pour moi car les informations fournies par l'utilisateur dans l'onglet 1 seront données pour créer l'onglet 4 (ou n'importe quel onglet).Si je réexécute simplement le script, l'utilisateur devra parcourir les onglets 1 à 3 pour revenir à l'onglet 4 où il se trouvait.Et les onglets ne sont pas spécifiés, ils peuvent être n'importe quoi.En ce moment, je dois créer un script qui extrait toutes les fonctions nécessaires et l'enregistrer dans un jsl (assez similaire à ce que vous dites sauf que je dois le créer à la volée), c'est juste un peu obscur, c'est tout.Je m'en occuperai s'il n'y a pas une meilleure façon.Merci.
Re : Recréer exactement une nouvelle fenêtre() dans son état exactJ'ai écrit un script qui capture l'onglet sélectionné ainsi que les valeurs des zones d'édition de texte, des zones d'édition de nombres, des zones de liste déroulante et des zones de liste et les stocke dans un tableau bidimensionnel global lorsque la fenêtre se ferme. Lorsque la fenêtre s'ouvre, les valeurs sont définies sur les valeurs capturées lors de la fermeture de la fenêtre.
J'ai inclus un exemple de fenêtre dans le script pour montrer la fonctionnalité, mais les fonctions getValues et setValues sont utilisées pour capturer l'état et réinitialiser l'état lorsque le script est à nouveau exécuté.
Limites:
1. Ce code ne prend pas en compte les zones d'affichage créées dynamiquement. Vous devrez ajuster le code pour en tenir compte.
2. Ce code ne réexécute aucune de vos plateformes. Vous pouvez ajuster le code si nécessaire pour ce faire.
3. Lorsque vous fermez JMP, l'état est perdu. Vous pouvez cependant enregistrer le tableau dans un fichier texte plutôt que dans une variable globale et les valeurs peuvent être récupérées dans toutes les instances de JMP.
4. Je n'ai pas implémenté de cases à cocher dans ce script (ni dans toute autre case d'affichage que j'oublie).
Le script est joint.
Faites-moi savoir si vous avez des questions sur le script.
Re : Recréer exactement une nouvelle fenêtre() dans son état exactJe ne sais pas quoi vous dire.Ma solution recrée exactement la fenêtre, k garder toutes les fonctions des boutons entièrement intactes et savoir sur quel onglet vous vous trouvez et tout ce qui est demandé dans l'OP.
De plus, Eval(nw<Re : Recréer exactement une nouvelle fenêtre() dans son état exact
Je le crée avec un script mais l'utilisateur choisira à quoi il veut que la fenêtre ressemble (quelles tables de données ouvrir, etc.).Et si je suis sur l'onglet (2) lorsque j'appuie sur l'état de sauvegarde, je veux pouvoir rouvrir l'état de sauvegarde, avec l'onglet (2) actuellement sélectionné et tous les rapports et tableaux ouverts à la même position.En ce moment, je crée (essaye de créer) une fonction pour extraire toutes les fonctions pertinentes dans une chaîne, puis je l'évalue simplement (parse()).Cela laisse beaucoup plus de place à mes erreurs que quelque chose de simple comme Eval(nw<Re : Recréer exactement une nouvelle fenêtre() dans son état exact
Je suppose que vous avez créé la fenêtre dynamique avec un script.Dans ce cas, vous pouvez simplement demander au bouton d'exécuter à nouveau le script.
les noms par défaut sont ici ( 1 ) ;
dt = ouvrir ( "$SAMPLE_DATA/Grande Classe.jmp" ) ;
maintenant = Nouvelle fenetre ( "test" , boîte de liste vidéo ( "le script" ,
Bivarié ( Oui ( : hauteur ) , X ( : poids ) ) ;
Distribution (
Distribution continue (
Colonne ( : hauteur ) ,
Personnaliser les statistiques récapitulatives ( Signifier ( 0 ) )
) ,
Distribution continue (
Colonne ( : poids ) ,
Personnaliser les statistiques récapitulatives ( Signifier ( 0 ) )
)
) ;
boîte à boutons ( "Recréer la fenêtre" ,
inclure ( "chemin\vers\ce\script\recreateWindow.jsl" ) ;
)
)
) ;
Re : Recréer exactement une nouvelle fenêtre() dans son état exactVous auriez raison de dire qu'un script de session n'est pas ce que je veux.Si j'essaye cela, tout ce qu'il fait est d'ouvrir la table de données que j'ai ouverte.Il n'essaie même pas de créer une nouvelle fenêtre().
De plus, j'ai essayé le eval(nw< eh bien, un Et il est logique que cela ne fonctionne pas, j'espérais juste qu'il y aurait une solution simple plutôt que de devoir tout recréer si je ne sais pas ce que tout sera.
Je garderai espoir encore un peu.
Juste pour clarifier ce que je demande:
boîte1 = Panneau électrique ( "1" , teb = Zone d'édition de texte ( "C'est un test" ), Boîte à boutons ( "Imprimer" , imprimer (teb<< Obtenir du texte )));
boîte2 = Panneau électrique ( "2" , teb = Zone d'édition de texte ( "C'est un test" ), Boîte à boutons ( "Imprimer" , imprimer ((teb<< Obtenir du texte )|| "Charlie" )));
case3 = Panneau électrique ( "3" , teb = Zone d'édition de texte ( "C'est un test" ), Boîte à boutons ( "Imprimer" , imprimer ((teb<< Obtenir du texte )|| "Susie" )));
nw = Nouvelle fenetre ( "Exemple" ,
tb = TabBox ()
);
des trucs = Évaluateur ({boîte1, boîte3});
pour (je= 1 , je<= articles (trucs), i++,
tuberculose<< Ajouter ( carboniser (je), des trucs )
);
et bien<< Obtenir le script
/* Retour
Zone de liste V (
Zone de liste V (
Zone d'onglets (
Zone de page à onglet (
Titre( "1" ),
Boîte de panneau (zone d'édition de texte ("Ceci est un test" ), ButtonBox )
),
Zone de page à onglet (
Titre( "2" ),
Boîte de panneau (zone d'édition de texte ("Ceci est un test" ), ButtonBox )
)
)
)
)
*/
Il n'a pas de titre de fenêtre ni de scripts pour la boîte à boutons.De plus, il ne fonctionnera tout simplement pas.
Re : Recréer exactement une nouvelle fenêtre() dans son état exactMalheureusement, " UN Script de séance capturera la plupart des fonctionnalités" ne semble pas capturer ce que Vince désire.Les zones d'onglets dynamiques ne sont pas bien gérées.Dans une version modifiée de mon script ci-dessus, je l'ai exécuté, puis j'ai enregistré le script de session, puis je l'ai examiné.Les zones d'onglets ne sont pas reportées dans le script de session.
Scénario initial
Noms par défaut ici ( 1 ) ;
dt = Ouvrir ( "$SAMPLE_DATA/grande classe.jmp" ) ;
Nouvelle fenetre ( "test" , Boîte à onglets ( "onglet 1" , vlb = Zone de liste V () ) ) ;
Si ( Mod ( Jour ( Aujourd'hui () ) , 2 ) == 0 ,
x1 = Zone de liste V (
Boîte à onglets (
"Bivarié d'abord" ,
bivouac = Bivarié ( Oui ( : hauteur ) , X ( : poids ) ) ,
dist = Distribution ( Répartition nominale ( Colonne ( : âge ) ) )
)
) ,
x1 = Zone de liste V (
Boîte à onglets (
"La distribution d'abord" ,
dist = Distribution ( Répartition nominale ( Colonne ( : âge ) ) ) ,
bivouac = Bivarié ( Oui ( : hauteur ) , X ( : poids ) ) ;
)
)
) ;
vlb << ajouter ( x1 ) ;
Le scénario de la séance
Ouvrir ( "C:\Program Files\SAS\JMPPRO\12\Samples\Data\Big Class.jmp" , limites de la fenêtre ( 275 , 484 , 1288 , 1141 ) ) ;
Nouvelle fenetre ( "test" ,
Zone de liste V (
Distribution ( Répartition nominale ( Colonne ( : âge ) ) ) ,
Bivarié ( Oui ( : hauteur ) , X ( : poids ) )
)
) << Déplacer la fenêtre ( 722 , 15 ) << Fenêtre de taille ( 488 , 1025 ) << Définir l'icône de la fenêtre ( "Fichier de rapport" ) ;
Re : Recréer exactement une nouvelle fenêtre() dans son état exactUN Script de séance capturera la plupart des fonctionnalités de vos rapports personnalisés et de vos modifications interactives, y compris un rapport composé comme dans l'exemple de Jim. Mais cela permettra également d'économiser du code pour recréer d'autres fenêtres et tables dont vous ne vous souciez peut-être pas.
Vous pouvez enregistrer un script de session à tout moment depuis le Déposer menu.
Il peut également être défini dans les préférences pour toujours enregistrer un script de session lorsque vous quittez JMP.
Re : Recréer exactement une nouvelle fenêtre() dans son état exactBien que JMP puisse très bien créer un script pour recréer n'importe quelle plate-forme individuelle, il ne le transmet pas aux fenêtres d'affichage créées par l'utilisateur et constituées de ces plates-formes.
Le script ci-dessous est un exemple très simple qui illustre que JMP NE crée PAS de scripts utilisables à partir de fenêtres d'affichage définies par l'utilisateur.
les noms par défaut sont ici ( 1 ) ;
dt = ouvrir ( "$SAMPLE_DATA/Grande Classe.jmp" ) ;
maintenant = Nouvelle fenetre ( "test" , boîte à onglets ( "le script" ,
Bivarié ( Oui ( : hauteur ) , X ( : poids ) ) ;
Distribution (
Distribution continue (
Colonne ( : hauteur ) ,
Personnaliser les statistiques récapitulatives ( Signifier ( 0 ) )
) ,
Distribution continue (
Colonne ( : poids ) ,
Personnaliser les statistiques récapitulatives ( Signifier ( 0 ) )
)
) ;
)
) ;
rr = maintenant << obtenir le script ;
montrer ( rr ) ;
évaluer ( rr ) ;