我覺得我一直在以一種特別困難的方式做一些事情,這似乎應該是一項相對簡單的任務。想知道其他人是否有更好的方法的建議。

我正在嘗試建立一個像此處所示的自訂表格,其中“值”列中的每個條目都可以具有不同的小數位數。在下面的範例中,「N」應有0 個小數位,「Mean」/「SD」/「LCL (3SD)」/「UCL (3SD)」應恰好有四個小數位,「Pp」應恰好有兩個小數位位置等 - 包括任何尾隨零。這些值來自資料表,其中值輸入到第一行的列中,並以“Stat”列條目作為列標題。
最初我將其設定為一個表格框,其中嵌入了字串列框和數字列框:
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] })
);但數字列框似乎有自己的數字格式設置,適用於該框中的所有條目。
經過多次試驗和錯誤,我發現有效的是使用 Char() 或 Format() (指定格式/小數位)將各個項目從數字格式轉換為字元格式。例如,
Column( dt, "Pp")[1] = Format( Round( Column( dt, "Pp")[1], 2), "Fixed Dec", 2);
然後用第二個字串列框替換數字列框並將轉換後的值加為字串,例如,
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] })
);有沒有更簡單的方法讓我失蹤?
在旁邊:
- 今天我了解到Format()函數將數字資料轉換為字元資料。我認為這只是為了改變數字資料的格式。
- 今天我了解到可以為 Char() 添加寬度和小數位屬性。否則它將截掉尾隨零。
(沒有看到你的原始資料)使用字串 col box 很可能是最簡單的選擇。 您可以從原始數據表中獲取正確格式的數據,也可以在將值添加到 String Col Box 之前對其進行轉換(配置關聯數組可能會有所幫助)。
格式() -轉換值X進入引用的格式您在後續參數中指定的。(腳本索引有的好?原因有不同的描述)
感謝您的回饋賈莫。
經過更多的環顧之後,我同意你的觀點 - 似乎將事物保留為字串具有更大的靈活性。
在我的第一篇文章之後,我遇到了這個關於Col Box -> Text Box 方法的很好的介紹,這看起來與使用String Col Box 類似,但在格式化單行項目(邊框、陰影等)方面提供了更大的靈活性 - https://community.jmp.com/t5/Discovery-Summit-2018/Supercharge-Your-User-Interfaces-in-JSL-US-2018-113/ta-p/73744#U73744 。我正在推進這種方法。
在了解了 Col Box 並進行了更多思考之後,我意識到我最初的問題可能更多的是是否存在文字框的數位模擬。但我沒有看到這樣的選擇。
——喬爾
Col Box 很好,因為你可以對它進行很多自訂,但它確實有它的「問題」。 從中獲取值更加困難,如果您想按它排序,它的行為可能不會像您想像的那樣
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);
當我想要更多客製化時,我也使用了 Col Box。 一個例子是希望 String Col Box 具有多行。 你不能這樣做,所以你必須使用 Col Box 和 Text Box with N Lines (但這將迫使所有的都那麼高)。 或者,如果我想要表格格式的單選框或複選框,Col Box 是一個不錯的選擇。