表格框中行的陰影區塊<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />你好,
我有一個表格框,其中包含大量行,這些行自然地分組為每行三行的塊(因為第1 至3 行與一種化合物相關,第4 至6 行與另一種化合物相關,第7至9 行與第三種化合物相關) , 等等)。我想對行進行陰影處理,以使化合物塊在視覺上更容易區分- 所以我想對第1 至3 行進行陰影處理,然後將第4 至6 行保留為白色,然後將第7 至9 行陰影處理,然後將第10 至12 行保留白色等(一次對三行進行著色的要求意味著我不能只使用“<< 陰影交替行”屬性。)
我可以使用“<< set selected rows()”屬性預先選擇三行的每個備用區塊,但是如果使用者隨後單擊任何行或以其他方式選擇/取消選擇它們,則該著色模式將丟失。因此,我在“<<設定行更改函數”屬性中應用了相同的屬性 - 因此,如果使用者單擊表格上的任意位置,則會立即重新套用陰影。我最終得到這樣的結果:
nameList = 重複({"A"}, 3) ||重複({“B”},3)||重複({“C”},3)||重複({“D”},3) ||重複({“E”},3)||重複({“F”},3)||重複({“G”},3)||重複({“H”},3);
三列表 = {1, 2, 3, 7, 8, 9, 13, 14, 15, 19, 20, 21};
tb = 表格框(
String Col Box("名稱", nameList),
Number Col Box("第一個", 索引(1, 24)),
Number Col Box("第二", index(25, 48)),
Number Col Box("第三個", index(49, 72)),
<< 設定選定行的顏色(「青色」),
<< 設定選定的行(三個列表),
<< 設定行更改功能(tb << 設定選定行(thirdList)),
<< 設定可滾動(1),
<< 設定列邊框(1),
<< 設定底線標題(1)
);
新視窗(“我的視窗”,tb);
這可行,但似乎有點複雜。誰能建議一種更簡單的方法來做到這一點?
非常感謝。
回覆:表格框中行的陰影區塊只是為了解決您對使用新資料視圖的一些擔憂:
要處理使用者操作,您所需要做的就是新增行狀態處理程序。它將檢測更改並分支到一個函數,您可以在其中以程式設計方式解決問題。例如在本例中,如果視圖已排序,您可以將儲存格顏色重設為新順序
F =功能({ A } ,<重置單元格顏色> ) ;
RS = dt <<製作行狀態處理程序( F ) ;
回覆:表格框中行的陰影區塊謝謝大家 - 這在各方面都非常有幫助,我將把問題標記為已解決,因為我現在已經有足夠的資訊來解決我原來的查詢。
我嘗試了 Vince 的建議,即在創建具有所需選擇的表格框後設置“<< set selectable rows(0)”屬性,但不幸的是,這樣做實際上會在生效之前清除選擇。
我拿了一份 Jim 的腳本,因為我總是對 eval()、substitute() 和 expr() 結構的組合語法有困難,並且有工作示例來適應,讓生活變得更容易!實際上,至少暫時我會保留我的表格框,因為我正在創建的報告的結構更適合該輸出格式 - 但新資料框路線是我以前沒有考慮過的,並且在將來很可能有用。
在一次私人通信中也有人向我指出,我可能需要考慮用戶隨後嘗試按其中一列對錶格框進行排序(他們可以通過右鍵單擊輕鬆完成)對我自己的解決方案的影響。實際上,在這種情況下這不會成為問題,因為表格框是最終報告的一部分,其中進一步對其進行排序不會有任何有用的目的,但這一點很好理解。
最後,我順便指出「<< set row change function()」屬性其實不會工作除非已透過「<< set selected rows()」屬性明確選擇了一行或多行,或「<< set selectable rows(1)」屬性已包含在屬性設定清單中。這只是一件小事,但它讓我感到困惑,直到我意識到在我可以做我想做的事情之前至少需要其中一個。
再次非常感謝大家。
回覆:表格框中行的陰影區塊我處理這個問題的方法是使用 New Data Box() 函數,而不是使用 Table Box(),而是使用資料表。這樣,您可以為單元格等著色,並充分利用資料表的所有編輯功能。
這是一個腳本來說明我正在談論的內容:
名稱預設為此處( 1 ) ;
dt =打開( “$SAMPLE_DATA/大類.jmp” ,無形的) ;
// 選擇 3 行的群組
為了( k = 1 , k <= 3 , k ++,
為了(我= k ,我<= N 行( dt ) ,我=我+ 6 ,
行狀態(我) =選定的狀態( 1 )
)
) ;
清單=作為列表( dt <<取得選定的行) ;
dt <<清除選擇;
// 循環所有列並設定單元格顏色
碰撞= dt <<取得列名( “細繩” ) ;
為了(我= 1 ,我<= N 項(碰撞) ,我++,
評估(
代替(
表達式(
柱子( dt ,碰撞[我] ) <<色彩細胞( { “紅色的” , _列表_ } )
) ,
表達式( _列表_ ) ,清單
)
)
) ;
// 設定顯示視窗
西北=新窗戶( “展示” ,
V 列錶框(
待定=文字方塊( “ 這個例子” ) ,
遠東= V 列錶框()
)
) ;
國家開發銀行= dt <<新數據盒() ;
遠東<<附加(國家開發銀行) ;
國家開發銀行<<關閉側板( 1 ) ;
待定<<設定字體大小( 20 ) ;
它產生以下顯示視窗

回覆:表格框中行的陰影區塊可以做這樣的事情。
索引 = 1 :: 99 ;
新窗戶( “窗戶” , TB =表格框(數字列框( “柱子” , 指數)));
n= 3 ; //你可以將其更改為你的群組的任何號碼
行=洛克(模組(地面((指數- 1 )/n), 2 ) ); //只是給n個突發的交替組
TB <<設定選定的行(行);
希望這可以幫助。乾杯。
*編輯*剛剛意識到這不是您可能要問的部分。對不起。
您可以只選擇行,然後使它們不可選擇嗎?
tb << 設定可選行(0);