datawindow中的明细区上能不能设置颜色区分

blackcorbie 2009-09-24 05:51:36
在datawindow中的明细区上能不能设置颜色区分:
比如 :一列为工程编号,那么根据工程编号排序,共10行数据,共三个工程编号,前3行为同一工程编号,那么这三行显示红色,另外4行为另一工程编号,这4行显示蓝色,其他3行也为不同的工程编号,但是显示颜色为红色,就是隔颜色行显示。
...全文
158 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
永生天地 2009-09-29
  • 打赏
  • 举报
回复
终于知道lz想问的问题了
WorldMobile 2009-09-27
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 blackcorbie 的回复:]
我是想每行都这样隔行显示,而不只是工程编号这列归类隔行显示。
[/Quote]

你的意思是不是每列都这么显示?

你可以选择所有的列,然后在列的颜色表达式里写
if(mod(cumulativeSum( if( 工程编号 = 工程编号[-1],0,1) ), 2) = 1,rgb(255, 0, 0), rgb(0, 0, 255))
WorldMobile 2009-09-27
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 blackcorbie 的回复:]
我是想每行都这样隔行显示,而不只是工程编号这列归类隔行显示。
[/Quote]

假设这个工程编号列名为工程编号,你可以在工程编号的颜色表达式里可以这么写
if(mod(cumulativeSum( if( 工程编号 = 工程编号[-1],0,1) ), 2) = 1,rgb(255, 0, 0), rgb(0, 0, 255))

假设其它列名为工程名称,你可以
if(mod(cumulativeSum( if( 工程名称 = 工程名称[-1],0,1) ), 2) = 1,rgb(255, 0, 0), rgb(0, 0, 255))

sjshuang 2009-09-26
  • 打赏
  • 举报
回复
for循环不就可以了吗
dawugui 2009-09-25
  • 打赏
  • 举报
回复
好东西,帮顶.
blackcorbie 2009-09-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lzp_lrp 的回复:]
1.需要再定义一个列,用来存颜色值,然后在程序中对颜色值进行赋值

再在列上的颜色上定义表达式为那个颜色列即可

2.在datawindow中的明细区上能不能设置颜色区分:
比如 :一列为工程编号,那么根据工程编号排序,共10行数据,共三个工程编号,前3行为同一工程编号,那么这三行显示红色,另外4行为另一工程编号,这4行显示蓝色,其他3行也为不同的工程编号,但是显示颜色为红色,就是隔颜色行显示。
回复:如果你只是隔行显示可以直接写一个表达式出来

假设这个工程编号列名为工程编号,你可以在工程编号的颜色表达式里可以这么写

if(mod(cumulativeSum( if( 工程编号 = 工程编号[-1],0,1) ), 2) = 1,rgb(255, 0, 0), rgb(0, 0, 255))
[/Quote]

我是想每行都这样隔行显示,而不只是工程编号这列归类隔行显示。

永生天地 2009-09-25
  • 打赏
  • 举报
回复
cumulativeSum这个函数还真能派上用场,我还从来没用过
yiguanjun 2009-09-24
  • 打赏
  • 举报
回复
三颗星就是不一样
WorldMobile 2009-09-24
  • 打赏
  • 举报
回复
第二种方法经过测试,没有问题,强烈建议用第二种方法来实现
WorldMobile 2009-09-24
  • 打赏
  • 举报
回复
1.需要再定义一个列,用来存颜色值,然后在程序中对颜色值进行赋值

再在列上的颜色上定义表达式为那个颜色列即可

2.在datawindow中的明细区上能不能设置颜色区分:
比如 :一列为工程编号,那么根据工程编号排序,共10行数据,共三个工程编号,前3行为同一工程编号,那么这三行显示红色,另外4行为另一工程编号,这4行显示蓝色,其他3行也为不同的工程编号,但是显示颜色为红色,就是隔颜色行显示。
回复:如果你只是隔行显示可以直接写一个表达式出来

假设这个工程编号列名为工程编号,你可以在工程编号的颜色表达式里可以这么写

if(mod(cumulativeSum( if( 工程编号 = 工程编号[-1],0,1) ), 2) = 1,rgb(255, 0, 0), rgb(0, 0, 255))
wag_enu 2009-09-24
  • 打赏
  • 举报
回复
不知道在DW中怎么写表达式实现此功能,不过还是有个笨办法可以试一下:
1,在DW中定义一伪列如 "cp" ,用于确定颜色.
2,选中DW中的 明细区的每列,改写其背景表达式成: if(cp =1,红色, 蓝色)
3,在引用的DW控件的retrieveend 事件中写如下代码:

if rowcount < 1 then return
long i
object.cp[1] = 1
for i = 2 to rowcount
if object.工程编号[i] = object.工程编号[i - 1] then
object.cp[i] = object.cp[i - 1]
else
if object.cp[i - 1] = 1 then
object.cp[i] = 0
else
object.cp[i] = 1
end if
end if
next

609

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder DataWindow
社区管理员
  • DataWindow社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧