Alignement de la mise en page JSLExiste-t-il un moyen d'aligner un élément sur le LHS ou le RHS d'un HListBox.
Fondamentalement, je souhaite créer un modèle pour les applications avec une "zone de liste V" imbriquée dans une "zone de liste H".
La VListBox (texte rouge) s'aligne par défaut sur le côté gauche. Si j'ajoute mon logo, il s'alignera naturellement sur le côté gauche également comme indiqué.

Cependant, je veux que le logo s'aligne sur le RHS dans le Parent HLISTBOX.

Remarque, pour maintenir la largeur d'application, j'utilise un SpacerBox(taille(1200, 0)) juste au-dessus de la HListBox.
Bravo, Troie
ScriptRe : Alignement de la mise en page JSLGénial Vince. Cela a fonctionné parfaitement pour toutes les largeurs de titre.
Re : Alignement de la mise en page JSLBonjour Jarmo, j'ai également essayé de calculer la taille de la boîte d'espacement. Cependant, étant donné que la largeur du titre peut changer ("Modèle standard" dans ce cas), je dois en tenir compte. Cela implique de connaître le nombre de caractères dans le nom du titre ainsi que la taille de la police et de déterminer la largeur. J'utilise un rapport hauteur/largeur général de 0,6 ou 0,7 et il pousse généralement le logo suffisamment vers la droite... mais pas « proprement » et systématiquement au même endroit et non aligné « à droite »
Il est cependant suffisant pour une gamme de largeurs de titre.
J'espérais un ensemble plus simple d'options "d'alignement" similaires à celles qui existent dans CSS, par exemple.
Je vais également essayer la suggestion de Vince d'utiliser des boîtes d'espacement "sans valeur" pour voir comment cela fonctionne.
Merci pour les réponses des gens.
myToolWidth = 800;
myFontScale = 0.7;
myHeading1 = textBox(myScriptName, << fontColor("red"), << setFontSize(24), << setFontStyle("bold"), <<SETWRAP></SETWRAP>
Exemples de différentes largeurs de titre et calcul de la Sacerbox en fonction de la taille de la police et du nombre de caractères dans le titre.

Re : Alignement de la mise en page JSLSans lui donner de taille, j'ai l'impression que les bordures de la boîte de bordure disparaissent, mais cela peut être géré très probablement assez facilement avec un rembourrage
Names default to here(1);
nw = New Window("Example",
bp = Border Box(Left(10), Right(10), Top(10), Bottom(10), Sides(15),
<< Padding(Left(5), Top(0), Right(5), Bottom(5)),
vlb = V List Box(
Spacer Box(size(1200,0)),
H List Box(
V List Box(TextBox("test"), TextBox("test2")),
sb = Spacer Box(),
logo = Icon Box("JMPLogo")
)
)
)
);Re : Alignement de la mise en page JSLSi vous ne donnez pas de taille à spacerbox, vous n'avez pas besoin de le redimensionner.Il essaie juste de remplir autant d'espace que possible.Avec plusieurs boîtes d'espacement dans le même parent, je pense qu'il le divise simplement de manière égale.
Names default to here(1);
nw = New Window("Example",
Border Box(Left(10), Right(10), Top(10), Bottom(10), Sides(15),
vlb = V List Box(
Spacer Box(size(1200,0)),
H List Box(
V List Box(TextBox("test"), TextBox("test2")),
sb = Spacer Box(),
logo = Icon Box("JMPLogo")
);
)
)
);
Re : Alignement de la mise en page JSLJe pense que j'ai fait quelque chose de similaire inspiré par votre présentation Une approche structurée de la programmation avec JSL pour la création d'applications évolutives du monde réel ( 2019-EU-30MP-098 ) et à la fin, j'ai eu recours à l'utilisation de la boîte d'espacement et à la mise à jour de sa taille en fonction de la largeur du logo :</CODE></P><PRE><CODE class=" language-jsl">Names Default To Here(1);
New Window("Example",
Border Box(Left(10), Right(10), Top(10), Bottom(10), Sides(15),
vlb = V List Box(
Spacer Box(size(1200,0)),
H List Box(
V List Box(TextBox("test"), TextBox("test2")),
sb = Spacer Box(Size(0,0)),
logo = Icon Box("JMPLogo")
);
)
)
);
nw = New Window("Example",
Border Box(Left(10), Right(10), Top(10), Bottom(10), Sides(15),
vlb = V List Box(
Spacer Box(size(1200,0)),
H List Box(
V List Box(TextBox("test"), TextBox("test2")),
sb = Spacer Box(Size(0,0)),
logo = Icon Box("JMPLogo")
);
)
)
);
borderBoxoffset = 24;
sb << Set Size(1200-borderBoxoffset-(logo << get size)[1],0);
Show(nw << get width());