Allineamento del layout JSLC'era un modo per allineare un elemento a LHS o RHS di un HListBox.
Fondamentalmente voglio creare un modello per le applicazioni con una 'V List Box' annidata all'interno di una 'H List Box'
Per impostazione predefinita, il VListBox (testo rosso) è allineato al lato sinistro. Se aggiungo il mio logo, si allineerà naturalmente anche sul lato sinistro, come mostrato.

Tuttavia, voglio che il logo si allinei al RHS all'interno del HLISTBOX principale.

Nota, per mantenere la larghezza dell'applicazione sto usando a SpacerBox(dimensione(1200, 0)) proprio sopra HListBox.
Salute, Troia
ScriptingRi: Allineamento del layout JSLFantastico Vince. Questo ha funzionato perfettamente per tutte le larghezze del titolo.
Ri: Allineamento del layout JSLCiao Jarmo, ho provato a calcolare anche le dimensioni dello spacerbox. Tuttavia, dato che la larghezza del titolo può cambiare ("Boilerplate Template" in questo caso), devo tenerne conto. Ciò implica conoscere il numero di caratteri nel nome del titolo, nonché la dimensione del carattere e capire la larghezza. Uso un rapporto altezza/larghezza generale di 0,6 o 0,7 e generalmente spinge il logo sufficientemente a destra... ma non in modo "pulito" e coerente nello stesso punto e non allineato a "destra"
Tuttavia, è abbastanza buono per una gamma di larghezze del titolo.
Speravo in un insieme più semplice di opzioni di "allineamento" simili a quelle che esistono in diciamo CSS.
Proverò anche il suggerimento di Vince di utilizzare scatole distanziatrici "senza valore" per vedere come funziona.
Grazie per le risposte gente.
myToolWidth = 800;
myFontScale = 0.7;
myHeading1 = textBox(myScriptName, << fontColor("red"), << setFontSize(24), << setFontStyle("bold"), <<SETWRAP></SETWRAP>
Esempi di varie larghezze del titolo e calcolo del Sacerbox in base alla dimensione del carattere e al numero di caratteri nel titolo.

Ri: Allineamento del layout JSLSenza dargli alcuna dimensione, mi sembra che i bordi del border box scompaiano, ma molto probabilmente questo può essere gestito abbastanza facilmente con il padding
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")
)
)
)
);Ri: Allineamento del layout JSLSe semplicemente non dai una dimensione a spacerbox, non devi ridimensionarlo.Cerca solo di riempire quanto più spazio possibile.Con più spacerbox nello stesso genitore, penso che lo divida in modo uniforme.
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")
);
)
)
);
Ri: Allineamento del layout JSLPenso di aver fatto qualcosa di simile ispirato dalla tua presentazione Un approccio strutturato alla programmazione con JSL per la creazione di applicazioni scalabili del mondo reale ( 2019-EU-30MP-098 ) e alla fine ho fatto ricorso all'uso della scatola spaziatrice e all'aggiornamento delle dimensioni in base alla larghezza del 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());