Quelle propriété permettrait à la fenêtre de s'étirer automatiquement si je modifie la taille des boîtes d'affichage dans la fenêtre ?J'ai une interface graphique avec plusieurs zones d'affichage, certaines d'entre elles sont des zones de liste de colonnes que l'utilisateur peut redimensionner.
Quand ils font ça, la fenêtre crée des barres de défilement. Je ne veux pas de barres de défilement. Je veux que la fenêtre se redimensionne automatiquement pour s'adapter à tout. Tout comme n'importe quelle plate-forme (Fit Y by X par exemple, le fait).
Je ne trouve pas de combinaison de messages qui permettrait de faire ce travail... Quelqu'un peut-il m'indiquer la bonne direction ?
Mise à jour:
Voici une illustration.
Si vous exécutez ce script :
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
bb = Border Box( Left( 10 ), Right( 10 ), Top( 5 ), Bottom( 10 ), Sides( 15 ),
clb = Col List Box( all, width( 250 ), maxSelected( 1 ) ),
);
nw = New Window( "Col List Box Example",
bb
);
vous obtiendrez une fenêtre avec une liste déroulante.
Si vous essayez de redimensionner cette zone de liste de colonnes au-delà de la fenêtre, la fenêtre s'agrandira.
Mais si vous essayez de modifier la taille de la fenêtre, même légèrement, elle ne répondra pas aux changements de taille de la zone de liste des colonnes au-delà de la taille de la fenêtre. Elle produira des curseurs.
Dans mon module complémentaire, mon contenu, pour une raison quelconque, ne rentre pas verticalement dans la fenêtre.
La seule solution que j'ai trouvée pour résoudre ce problème était de modifier la taille de la fenêtre. Mais maintenant que nous avons modifié la taille de la fenêtre, elle ne réagit plus aux changements de taille du contenu.
Est-ce un bug ? Ou est-ce un comportement attendu ? Y a-t-il un moyen de résoudre ce problème ?
Automatisation et scriptsRe : Quelle propriété permettrait à la fenêtre de s'étirer automatiquement si je modifie la taille des zones d'affichage dans la fenêtre ?Très difficile à dire car je ne suis pas sûr des problèmes que vous rencontrez (l'ajout de cases de défilement n'est pas vraiment un problème, elles ont une raison d'être là la plupart du temps). Vous avez << Set Stretch (ou << Set Auto Stretching) qui peut fonctionner dans certains cas, mais cela dépendra également de la façon dont vous avez construit votre interface graphique.
Je ne sais pas exactement ce que vous entendez par Fit Y by X platform (report) redimensionnant automatiquement pour s'adapter à tout, car à mon avis, cela ne se fait pas. Il ajoute des cases de défilement lorsque cela est nécessaire. Elles sont là pour une raison : si le contenu ne rentre pas dans la fenêtre, laissez l'utilisateur parcourir le contenu ET faites-lui savoir que quelque chose n'est pas affiché. Et si vous parlez des lanceurs et de la façon dont leur liste déroulante redimensionne la fenêtre, cela est probablement lié à la façon dont vous avez construit l'interface graphique et ils ajouteront également des cases de défilement si nécessaire.
Re : Quelle propriété permettrait à la fenêtre de s'étirer automatiquement si je modifie la taille des zones d'affichage dans la fenêtre ?Désolé de ne pas avoir été très clair. Je faisais référence à la fenêtre de lancement de la plateforme Fit Y by X. Lancez la plateforme, la fenêtre dans laquelle vous définissez les colonnes dans les rôles. Si vous redimensionnez l'une des zones de liste des colonnes, la fenêtre se redimensionnera en conséquence sans ajouter de barres de défilement.
Mon module complémentaire dispose d'une plate-forme de lancement très similaire, qui ajouterait des barres de défilement lorsque je redimensionne les zones de liste Col.
Veuillez également consulter une mise à jour sur la question. Le script que j'ai posté montre un comportement similaire.
De plus, j'ai découvert que cela avait quelque chose à voir avec le masquage automatique de la barre des tâches sous Windows : si je l'active et que ma barre des tâches est masquée, ma fenêtre Add-In s'ouvre en s'adaptant parfaitement à tout le contenu. Mais dès que je désactive le masquage automatique, la fenêtre se redimensionne pour masquer le bas du contenu et une barre de défilement verticale apparaît. De plus, la partie inférieure de la fenêtre Add-In ne touche même pas la barre des tâches. C'est définitivement un bug.
Re : Quelle propriété permettrait à la fenêtre de s'étirer automatiquement si je modifie la taille des boîtes d'affichage dans la fenêtre ?Voici la partie inférieure de ma fenêtre avec cette page en arrière-plan. Le masquage automatique de la barre des tâches est activé. Tout se passe comme je l'espérais.

Dès que je vais dans les paramètres de la barre des tâches de Windows et que je désactive le masquage automatique, ma fenêtre se redimensionne de sorte qu'une barre de défilement verticale apparaisse :

Les positions des captures d'écran sont identiques au pixel près. La seule chose que j'ai faite entre elles a été de décocher l'option « Masquer automatiquement la barre des tâches » dans les paramètres Windows. Si je la coche à nouveau, elle reviendra à la première capture d'écran. Non pas que la fenêtre ne touche même pas la barre des tâches.
Donc, pour résoudre ce problème, j'ai dû définir explicitement la taille de la fenêtre. Et cela a interrompu l'étirement automatique de la fenêtre lors du changement de la zone de liste des colonnes, comme dans le script ci-dessus.
Re : Quelle propriété permettrait à la fenêtre de s'étirer automatiquement si je modifie la taille des boîtes d'affichage dans la fenêtre ?Ce script a exactement le même problème que mon petit script dans la mise à jour du premier message.

Lorsque vous l'exécutez et essayez de modifier les zones de liste de colonnes au-delà de la taille de la fenêtre, la fenêtre s'étire parfaitement. Mais dès que vous essayez de modifier la taille de la fenêtre elle-même en saisissant ce coin avec des points marqués d'un cercle rouge sur la capture d'écran et en le déplaçant même de quelques pixels, la fenêtre cesse de répondre au changement de taille des zones de liste de colonnes et cesse de s'étirer, créant des barres de défilement à la place.
Re : Quelle propriété permettrait à la fenêtre de s'étirer automatiquement si je modifie la taille des boîtes d'affichage dans la fenêtre ?Comme vous redimensionnez maintenant la fenêtre et non la liste déroulante, simplifiez votre démonstration.
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
nw = New Window("",
vlb = V List Box(
tb = Text Box("Text"),
hlb1 = H List Box(
pb = Panel Box("Cast LUB",
lub = Lineup Box(N Col(2),
Button Box("Responses"),
clb = Col List Box(dt
, << Set N Lines(2)
)
)
)
)
)
);
Commencez maintenant à comprendre ce qui se passe et pourquoi définir des étirements ici et là ne fonctionnera pas et, avec un peu de chance (probablement par accident, comme je l'ai fait), vous découvrirez que vous devez vous rappeler de définir la taille maximale (et potentiellement minimale).
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
nw = New Window("",
vlb = V List Box(
tb = Text Box("Text"),
hlb1 = H List Box(
pb = Panel Box("Cast LUB",
lub = Lineup Box(N Col(2),
Button Box("Responses"),
clb = Col List Box(dt
, << Set N Lines(2)
)
)
)
)
)
);
show(clb << Get Stretch, clb << Get Min Size, clb << Get Max Size);
clb << Set Stretch("Window", "Neutral");
clb << Set Max Size(10000, 100)
C'est peut-être ce que vous recherchez ? Combinaison de Set Stretch avec Fill/Window et Set Max/Min Size ?
Re : Quelle propriété permettrait à la fenêtre de s'étirer automatiquement si je modifie la taille des boîtes d'affichage dans la fenêtre ?Eh bien, cela semble fonctionner dans ce cas simple.
Cependant, j'ai essayé exactement cela et cela n'a pas fonctionné à ma manière avec une interface graphique plus complexe.
En tout cas, cela semble être la solution, et je vais le marquer comme tel, il me suffit de trouver comment l'appliquer à mon cas.
Re : Quelle propriété permettrait à la fenêtre de s'étirer automatiquement si je modifie la taille des boîtes d'affichage dans la fenêtre ?Vous pouvez ignorer le cas simple si vous pensez pouvoir résoudre un problème massif sans d'abord résoudre plusieurs problèmes plus petits, la plupart du temps c'est impossible ou cela prendra un temps inutile par rapport à la résolution de quelques petits/simples problèmes qui vous aident à comprendre le problème.
Le fonctionnement de l'étirement dépend fortement de la structure avec laquelle vous avez construit votre interface graphique. Encore un exemple simple, même si je ne suis pas sûr de votre utilité :
Les deux listes déroulantes col seront mises à l'échelle en même temps lors de l'utilisation de la zone Lineup et du réglage de l'étirement sur l'une d'entre elles :
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
nw = New Window("",
vlb = V List Box(
tb = Text Box("Text"),
hlb1 = H List Box(
pb = Panel Box("Cast LUB",
lub = Lineup Box(N Col(2),
Button Box("Responses"),
clb = Col List Box(dt,
, << Set N Lines(2)
),
Button Box("Responses"),
Col List Box(dt,
, << Set N Lines(2)
)
)
)
)
)
);
clb << Set Stretch("Window", "Neutral");
clb << Set Max Size(10000, 100)
La même chose ne se produira pas lors de l'utilisation de la liste déroulante V + de la liste déroulante H
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
nw = New Window("",
vlb = V List Box(
tb = Text Box("Text"),
hlb1 = H List Box(
pb = Panel Box("Cast LUB",
V List Box(
H List Box(
Button Box("Responses"),
clb = Col List Box(dt,
, << Set N Lines(2)
)
),
H List Box(
Button Box("Responses"),
Col List Box(dt,
, << Set N Lines(2)
)
)
)
)
)
)
);
clb << Set Stretch("Window", "Neutral");
clb << Set Max Size(10000, 100)
Si vous avez modifié la zone d'affichage parent (zone de panneau dans cet exemple) pour qu'elle ne s'étire pas, les éléments enfants ne s'étireront pas non plus
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
nw = New Window("",
vlb = V List Box(
tb = Text Box("Text"),
hlb1 = H List Box(
pb = Panel Box("Cast LUB",
lub = Lineup Box(N Col(2),
Button Box("Responses"),
clb = Col List Box(dt,
, << Set N Lines(2)
),
Button Box("Responses"),
Col List Box(dt,
, << Set N Lines(2)
)
)
)
)
)
);
pb << Set Max Size(100, 10);
pb << Set Stretch("Off", "Off");
clb << Set Stretch("Window", "Neutral");
clb << Set Max Size(10000, 100)