Comment empêcher les utilisateurs de redimensionner les fenêtres en JSL ?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Cela peut sembler une question très simple, mais je me demandais s'il existe un moyen d'empêcher les utilisateurs de redimensionner les fenêtres/boîtes de dialogue à l'aide de JSL ?
Il y a un message que vous pouvez envoyer à une zone d'affichage pour l'étirement automatique, la taille minimale et maximale, etc. Existe-t-il un indicateur pour désactiver la capacité de l'utilisateur à redimensionner les fenêtres par défaut (c'est-à-dire que le curseur de la souris n'affiche pas les flèches de redimensionnement lors du survol) sur le bord d'une fenêtre ? On dirait qu'il devrait y avoir quelque chose, mais je n'arrive pas à le trouver.
Merci.
Re : Comment empêcher les utilisateurs de redimensionner les fenêtres en JSL ?Excellentes suggestions Dave!J'aime vraiment votre design et j'essaierai de faire des choses similaires.J'utilise généralement la solution de boîte de contour que vous avez donnée à la fin, qui est simple et facile à mettre en œuvre, mais pas toujours la conception la plus professionnelle.Je pense que cela dépend vraiment de qui est l’utilisateur final.Pour la plupart de mes scripts, c'est vraiment juste moi.
Concernant: " Pour fermer la boîte de dialogue, la taille du contenu peut être définie sur zéro ou le contenu peut être supprimé (les valeurs de la boîte de dialogue peuvent être mises en cache dans un espace de noms pour un rechargement facile)."
Je pense qu'un 'If box()' serait une solution plus simple.
Re : Comment empêcher les utilisateurs de redimensionner les fenêtres en JSL ?Il est difficile de contourner le problème du redimensionnement du point de vue de la programmation, car le redimensionnement des zones d'affichage est inhérent à l'interface utilisateur de JMP.Dans l'ensemble, je pense que c'est vraiment utile, par exemple, étirer une zone de liste lorsque vous avez un grand nombre d'éléments ou des éléments avec des noms longs.Mais cela peut vous compliquer la vie lorsque vous essayez de concevoir une interface esthétique.Les répartiteurs peuvent aider, même s'ils ont également tendance à encourager les utilisateurs à redimensionner les composants divisés !Si vous souhaitez disposer d'une seule fenêtre contenant à la fois le dialogue utilisateur et les éléments de sortie, je pense que vous devez réfléchir au niveau d'interaction. J'ai souvent ce type de configuration où la boîte de dialogue est destinée à des interactions relativement peu fréquentes.Mon approche préférée consiste à avoir un bouton sur la fenêtre qui agit comme une bascule pour activer ou désactiver la boîte de dialogue :

(fenêtre de rapport sans boîte de dialogue - le bouton central gauche « options » activera la boîte de dialogue)

(fenêtre de rapport avec boîte de dialogue activée)
Au niveau le plus élémentaire, il s'agit de deux éléments de contenu alignés sur une liste H.
Pour fermer la boîte de dialogue, la taille du contenu peut être définie sur zéro ou le contenu peut être supprimé (les valeurs de la boîte de dialogue peuvent être mises en cache dans un espace de noms pour un rechargement facile).
Une solution plus simple consiste à utiliser une Outline Box alignée horizontalement avec votre contenu :
dt = Ouvrir ( "$SAMPLE_DATA/Grande Classe.jmp" ) ;
dialogue = Zone de liste V (
Boîte de contour ( "Boîte de dialogue Démo" ,
<< Orientation proche du contour ( "Verticale" ) ,
Boîte de programmation ( NCol ( 2 ) , Espacement ( dix ) ,
Zone de texte ( "Étiquette 1" ) ,
Zone d'édition de texte ( "valeur 1" ) ,
Zone de texte ( "Étiquette 2" ) ,
Zone d'édition de texte ( "valeur 2" ) ,
)
)
) ;
contenu = Zone de liste V (
Bivarié ( Oui ( : poids ) , X ( : hauteur ) )
) ;
Nouvelle fenetre ( "Rapport avec boîte de dialogue" ,
Zone de liste H (
dialogue ,
Boîte d'espacement ( Taille ( dix , 0 )) ,
contenu
)
) ;

Le message Outline Close Orientation permet au contenu de se réduire sur le côté de la fenêtre :

- Juste quelques idées.
Dave
Re : Comment empêcher les utilisateurs de redimensionner les fenêtres en JSL ?Mot clé « langage de programmation », où encore une fois jsl est un langage de script.
Re : Comment empêcher les utilisateurs de redimensionner les fenêtres en JSL ?Merci encore msharp,
Pour les boîtes de dialogue de rapport, je n'ai aucun problème avec la possibilité pour l'utilisateur de redimensionner la fenêtre, c'était pour les boîtes de dialogue dans lesquelles je demandais une saisie à l'utilisateur. Ceux-ci ont un nombre fixe de champs dans lesquels ils peuvent saisir des informations et, à mon avis, ne devraient pas avoir besoin de redimensionner, mais c'est purement esthétique et ce n'est pas un problème majeur dans le grand schéma des choses. C'est juste que dans d'autres langages de programmation où vous avez des widgets GUI, vous avez la possibilité d'empêcher l'utilisateur de redimensionner les boîtes de dialogue, telles que les boîtes de dialogue d'avertissement, etc., car le redimensionnement ne sert à rien. Je pensais juste que ce serait une option utile.
En tout cas, merci pour votre exemple de répartiteur H/V, c'est quelque chose que j'utiliserai certainement à l'avenir. Acclamations.
Re : Comment empêcher les utilisateurs de redimensionner les fenêtres en JSL ?Si tel est le but, y a-t-il une raison pour laquelle vous ne pouvez pas mettre tout le contenu dans une seule fenêtre ?L’utilisation du H Splitter Box/V Splitter Box est probablement votre meilleure solution.L'exemple suivant conserve toutes les zones d'affichage visibles dans la fenêtre et évite les espaces gris lors du redimensionnement de la fenêtre.À partir de l'index des scripts :
Noms par défaut ici ( 1 ) ;
Nouvelle fenetre ( "Séparateur" ,
Boîte de répartition en V (
Taille ( 800 , 600 ) ,
Boîte de répartition en H ( graphique = Boîte graphique () , Boîte de script () , << Tailles ( { 0,6 , 0,4 } ) ) ,
Boîte de répartition en H (
photo = Boîte d'image ( Ouvrir ( "$SAMPLE_IMAGES/tile.jpg" , jpg ) ) ,
espaceur = Boîte d'espacement () ,
<< Tailles ( { 0,4 , 0,6 } )
)
)
) ;
graphique [ Boîte de cadre ( 1 )] << Définir l'étirement automatique ( 1 , 1 ) ;
photo << Définir la taille minimale ( 100 , 100 ) ;
photo << Définir la taille maximale ( 500 , 500 ) ;
photo << Définir l'étirement automatique ( 1 , 1 ) ;
espaceur << Définir le remplissage ( 1 ) ;
espaceur << Couleur ( "Rouge" ) ;
espaceur << Définir l'étirement automatique ( 1 , 1 ) ;
Ce sera une meilleure solution.Vous finirez vraiment par ennuyer votre utilisateur final si vous ne le laissez pas redimensionner les fenêtres.
Re : Comment empêcher les utilisateurs de redimensionner les fenêtres en JSL ?Salut msharp,
Merci pour la réponse. Cette méthode semble fonctionner correctement, et il existe probablement quelques autres façons de « tromper » ce comportement.
Mon raisonnement pour vouloir cela est que je crée une application personnalisée dotée de fenêtres de dialogue à la fois pour la saisie utilisateur et la création de rapports. Je ne veux pas que l'utilisateur puisse cliquer et redimensionner la fenêtre de sorte que la fenêtre finisse par cacher certaines des zones d'affichage dans la fenêtre, ou la faire glisser plus large et se retrouver avec une charge d'espace gris laid. J'admets que c'est pour des raisons purement esthétiques, mais je pensais simplement que ce serait une option utile pour les personnes qui écrivent des applications en JSL pour la distribution.
Bravo encore.
Re : Comment empêcher les utilisateurs de redimensionner les fenêtres en JSL ?Les fonctions que vous décrivez concernent toutes le redimensionnement des zones d'affichage dans les fenêtres.Mais il semble que vous souhaitiez empêcher la modification de la fenêtre elle-même.Je ne sais pas pourquoi vous voudriez faire cela, mais ce serait un problème auquel un utilisateur expérimenté du système d'exploitation pourrait être en mesure de répondre.Ce n'est pas une fonctionnalité que vous obtiendrez dans un langage de script.Vous devrez apporter des modifications à Windows 7,8,10 ou Mac : Snow Leopard, Capitan ect.
Quoi qu’il en soit, vous pourriez tricher.Peut-être quelque chose comme ça :
maintenant = nouvelle fenetre ( "Pas de redimensionnement pour vous" ) ; //Créer une fenêtre d'exemple
taille = maintenant << Obtenir la taille de la fenêtre ; // Récupère la taille
//Fonction de redimensionnement
redimensionner = fonction ({} ,
maintenant << Définir la taille de la fenêtre ( taille [ 1 ] , taille [ 2 ]) ; //Redimensionner la fenêtre
calendrier ( 0,1 , redimensionner ()) ; //Redimensionne la fenêtre toutes les 0,1 secondes
) ;
//appel de la fonction
redimensionner () ;
// masquer la fenêtre du planificateur pour compléter l'illusion
attendez ( 0 ) ;
fenêtre ( "Planificateur" ) << Afficher la fenêtre ( 0 ) ;
// alternativement à << Définir la taille de la fenêtre :
//nw << Fenêtre de zoom ;