表格框中行的阴影块<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);