Mi sento come se avessi fatto qualcosa nel modo più difficile che sembra dovrebbe essere un compito relativamente semplice.Mi chiedo se qualcun altro ha consigli su un approccio migliore.

Sto cercando di creare una tabella personalizzata come quella mostrata qui, in cui ciascuna voce nella colonna "Valore" può avere un numero diverso di cifre decimali.Nell'esempio seguente, "N" dovrebbe avere 0 cifre decimali, "Mean"/"SD"/"LCL (3SD)"/"UCL (3SD)" dovrebbe avere esattamente quattro cifre decimali, "Pp" dovrebbe avere esattamente due cifre decimali luoghi, ecc. - con eventuali zeri finali inclusi.Questi valori provengono da una tabella dati in cui i valori vengono immessi in colonne sulla prima riga con la voce di colonna "Stat" come intestazioni di colonna.
Inizialmente l'ho impostato come Table Box, con una String Col Box incorporata e una Number Col Box:
nw = New Window( "nw", tb = Table Box(
scb = String Col Box( "Stat", {}),
ncb = Number Col Box( "Value", {}),
)
);
For( i = 1, i <= N Cols( dt), i++,
tb << Add Row( {Column( dt, i) << Get Name, Column( dt, i)[1] })
);Ma sembra che la casella Numero Col abbia una propria impostazione del formato numero che si applica a tutte le voci in quella casella.
Dopo molti tentativi ed errori, quello che ho scoperto che funziona è usare Char() o Format() (con formato/cifre decimali specificate) per convertire in primo piano i singoli elementi dal numero al formato carattere. per esempio,
Column( dt, "Pp")[1] = Format( Round( Column( dt, "Pp")[1], 2), "Fixed Dec", 2);
quindi sostituendo Number Col Box con una seconda String Col Box e aggiungendo i valori convertiti come stringhe, ad esempio,
nw = New Window( "nw", tb = Table Box(
scb1 = String Col Box( "Stat", {}),
scb2 = String Col Box( "Value", {}),
)
);
For( i = 1, i <= N Cols( dt), i++,
tb << Add Row( {Column( dt, i) << Get Name, Column( dt, i)[1] })
);C'è un modo più semplice che mi manca?
A parte:
- Oggi ho appreso che la funzione Format() converte i dati numerici in dati di carattere.Pensavo che fosse solo per cambiare il formato dei dati numerici.
- Oggi ho imparato che puoi aggiungere attributi di larghezza e posizione decimale a Char().Altrimenti taglierà gli zeri finali.
(senza vedere i dati originali) L'uso di string col box è molto probabilmente l'opzione più semplice. È possibile ottenere i dati nel formato corretto dalla tabella dati originale oppure convertirli prima di aggiungere valori a String Col Box (la configurazione dell'array associativo potrebbe essere utile).
Formato() - Converte il valore X nel citato formato che specifichi negli argomenti successivi.(l'indice degli script per qualche buon motivo ha una descrizione diversa)
Grazie per il feedback Jarmo.
Dopo essermi guardato più intorno, sono d'accordo con te: sembra che mantenere le cose come stringhe abbia più flessibilità.
Dopo il mio post iniziale, mi sono imbattuto in questa simpatica introduzione agli approcci Col Box -> Text Box, che sembra simile all'utilizzo di String Col Box, ma offre maggiore flessibilità nella formattazione di singoli elementi pubblicitari (bordi, ombreggiatura, ecc.) - https://community.jmp.com/t5/Discovery-Summit-2018/Supercharge-Your-User-Interfaces-in-JSL-US-2018-113/ta-p/73744#U73744 . Sto andando avanti con questo approccio.
Dopo aver appreso di Col Box e averci pensato ancora un po', mi rendo conto che la mia domanda originale potrebbe essere stata più in linea con l'esistenza di un analogo numerico di Text Box.Ma non vedo una simile opzione.
- Gioele
Col Box è carino perché puoi personalizzarlo molto, ma ha i suoi "problemi". È più difficile ottenerne i valori e potrebbe anche non comportarsi come pensi se desideri ordinarlo in base ad esso
Names Default To Here(1);
nw = New Window("Example",
tb = Table Box(
scb = String Col Box("strings", {"x", "y", "z"}),
cb = Col Box(
"boxes",
Text Box("a"),
Text Box("b"),
Text Box("c")
)
);
);
tb << Set Click Sort(1); // try clicking on boxes to sort
Show(tb << get);
Show(scb << get);
Show(cb << get);
Show((cb << XPath("//TextBox")) << get text);
Ho utilizzato anche Col Box quando volevo avere una maggiore personalizzazione. Un esempio è voler avere più righe per String Col Box. Non puoi farlo, quindi devi usare Col Box e Text Box con N Linee (questo però costringerà tutto ad essere così alto). Oppure, se voglio avere Radio Box o Check Box in formato tabella, Col Box è una buona opzione.