高分请教一个复杂的dw上色问题:如何动态对某一单元格上色?

yagumo 2003-09-13 09:06:07
条件是有一个dw,然后一个数组a[50],a[i]与每一列对应,比如如果a[1]="1,2,3",说明第1,2,3行的第一列应该着色.如果a[38]="45,345,1120...",则说明第45,345,1120...行的第38列应该着色.
我尝试过这样做:
dw.Modify(dw.Describe("#"+String(i)+".Name")+".Color = If(CurrentRow() in ("+a[i]+"),255,0")

不过很明显是失败了.不知道该怎么办了,求赐教!
...全文
40 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
flyerlxg 2003-09-14
  • 打赏
  • 举报
回复
学习!
jdsnhan 2003-09-13
  • 打赏
  • 举报
回复
呵呵,高手不敢当,互相切磋,共同进步吧。
QQ 25251788
yagumo 2003-09-13
  • 打赏
  • 举报
回复
搞定了,换了就行,呵呵.谢谢.明天来给分,顺便写个总结.请教高手OICQ,eMail,下次有问题要还麻烦你.
jdsnhan 2003-09-13
  • 打赏
  • 举报
回复
把Currentrow()换成getrow()试试看。
jdsnhan 2003-09-13
  • 打赏
  • 举报
回复
按照你的提问做的回答,具体你想实现的功能不清楚。
Currentrow()是当前列
yagumo 2003-09-13
  • 打赏
  • 举报
回复
写错了,是运行之后,呵呵.
yagumo 2003-09-13
  • 打赏
  • 举报
回复
通过是通过了,但是与预期的结果不一样.如a[1]="2", a[2]="4,5,6"
运行之前我必须点在第2行上第一列才会变色,而且也不仅是[2,1]这个单元格变色,是整个第一列都变色了.
jdsnhan 2003-09-13
  • 打赏
  • 举报
回复
在数据量很大的时候,这样很慢。
jdsnhan 2003-09-13
  • 打赏
  • 举报
回复
做了个测试,这样可以通过
for i = 1 to 2
ls_colname = dw_1.describe("#" + string(i) + ".name")
dw_1.Modify(ls_colname+".Color = '0~t If(CurrentRow() in ("+a[i]+ "),255,0)'")
next
jdsnhan 2003-09-13
  • 打赏
  • 举报
回复
基本语法错了
dmluo 2003-09-13
  • 打赏
  • 举报
回复
String ls_filter
For i = 1 To li_ac01_cols
If Not IsNull(ls_cols[i]) And Trim(ls_cols[i]) <> "" Then
ls_cols[i] = Mid(ls_cols[i], 1, Len(ls_cols[i]) - 1)
ls_filter = tab_1.tabpage_1.dw_emps.Describe("#" + String(i) + ".Name")
ls_filter = ls_filter + ".Color = 'If(Currentrow() In (" + ls_cols[i] + "),255,0)'"
//调试ls_filter为aac006.Color = 'If(Currentrow() In (91),255,0)'
ls_filter = tab_1.tabpage_1.dw_emps.Modify(ls_filter)
//调试ls_filter为Line 1 Column 47: incorrect syntax.
End If
Next


???

是不是if(currentrow()=91,rgb1,rgb2) 在font 还是backcolor
yagumo 2003-09-13
  • 打赏
  • 举报
回复
不行,我的源码是这样的:
String ls_filter
For i = 1 To li_ac01_cols
If Not IsNull(ls_cols[i]) And Trim(ls_cols[i]) <> "" Then
ls_cols[i] = Mid(ls_cols[i], 1, Len(ls_cols[i]) - 1)
ls_filter = tab_1.tabpage_1.dw_emps.Describe("#" + String(i) + ".Name")
ls_filter = ls_filter + ".Color = 'If(Currentrow() In (" + ls_cols[i] + "),255,0)'"
//调试ls_filter为aac006.Color = 'If(Currentrow() In (91),255,0)'
ls_filter = tab_1.tabpage_1.dw_emps.Modify(ls_filter)
//调试ls_filter为Line 1 Column 47: incorrect syntax.
End If
Next

救命呀,我搞这个搞了一天了都没搞出来,难道明天继续加班,help me!!!
klbt 2003-09-13
  • 打赏
  • 举报
回复
似乎漏掉了引号和括号,改为:
dw.Modify(dw.Describe("#"+String(i)+".Name")+".Color = 'If(CurrentRow() in ("+a[i]+"),255,0)'")

609

社区成员

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

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