求.net2005里面水晶报表的公式编辑器中的几行代码

lkjkf 2011-01-07 11:37:24
我数据源中有一列名字叫Color,里面是个字符串, 格式为:数字,数字,数字 例如:255,0,0
我想把这个字符串拆分了,然后对应放到RGB颜色函数中,我为了给这个单元格设置背景色,主要是我在公式编辑器里面不知道怎么编,.net里面叫"公式工作室"

我下面用c#代码的方式表示一下,请高手帮我翻译成公式编辑器支持的水晶报表的语言或者VB代码


string[] arr = {arrParaRange.Color}.split(',');
//注释:定义一个字符串数组arr ,用split方法把color字段中表示颜色的那3个成员分出来赋值给数组,{arrParaRange.Color}是我从字段那个窗口里面拖动出来的

Formula = RGB(arr[0],arr[1],arr[2]);
//注释:Formula是我在里面用VB语法支持的关键字,好像表示要返回的东西赋值给它。RGB是设置颜色的函数,然后参数为字符串数组中的第0个成员,第1个成员和第2个成员。
...全文
327 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿双2009 2011-01-08
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 lkjkf 的回复:]
谢谢啊 我真是太笨了 我以为还得获取下当前单元格的背景色 再赋次值呢 哈哈
[/Quote]
路是慢慢走出来的,而且你这个想法也没错 :)
lkjkf 2011-01-08
  • 打赏
  • 举报
回复
谢谢啊 我真是太笨了 我以为还得获取下当前单元格的背景色 再赋次值呢 哈哈
阿双2009 2011-01-08
  • 打赏
  • 举报
回复
既然是和背景色一样,那公式当然也是一样的 :)

即背景色和字体颜色的公式同为(Crystal语法):

NumberVar R := ToNumber(Split({arrParaRange.Color},',')[1]);
NumberVar G := ToNumber(Split({arrParaRange.Color},',')[2]);
NumberVar B := ToNumber(Split({arrParaRange.Color},',')[3]);
Color ( R, G, B)

lkjkf 2011-01-08
  • 打赏
  • 举报
回复
因为我每一行那个单元格的背景色是不一样的,不能设成固定的值。
lkjkf 2011-01-08
  • 打赏
  • 举报
回复
哦 谢谢 我主要是那2行代码不会编

比如我现在进到了字体颜色的公式里面

第一步,先获取这个字段的背景色
第二步,把这个背景色赋值到字体的颜色

这两行代码怎么编呢?

还得麻烦你一下
阿双2009 2011-01-07
  • 打赏
  • 举报
回复
Crystal 语法:

NumberVar R = ToNumber(Split('255,0,0',',')[1]);
NumberVar G = ToNumber(Split('255,0,0',',')[2]);
NumberVar B = ToNumber(Split('255,0,0',',')[3]);
Color ( R, G, B)

特别提醒:水晶报表的数组下标从1开始
笨熊熊 2011-01-07
  • 打赏
  • 举报
回复
找到了。。
原來是可以的
笨熊熊 2011-01-07
  • 打赏
  • 举报
回复
水晶報表好象不能拆分字符串吧??
坐等阿泰老師。。
阿双2009 2011-01-07
  • 打赏
  • 举报
回复
右击字段对象,设置对象格式,切换到 字体 标签页,如图示:



其实设置背景色可以切换到 边框 标签页,下面有一个背景色,也可通过公式控制
lkjkf 2011-01-07
  • 打赏
  • 举报
回复
哦 原来是这样啊 我现在公式的建立的流程为"公式工作室->格式化->Color字段上按右键->新建格式化公式->背景色",我是在背景色这个公式里写代码,还是再右键新建一个字体颜色的公式呀?

如果我再新建一个字体颜色的公式,那么会不会有一个执行先后顺序的问题,得让程序先运行背景色那个公式,然后再运行字体颜色公式。

字体颜色公式里的代码怎么写呀?

我比较笨,还是不会用这个语法,我用中文表示一下:

第一步,先获取这个字段的背景色
第二步,把这个背景色赋值到字体的颜色

还得请教下?谢谢
阿双2009 2011-01-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lkjkf 的回复:]
我感觉这2种写法一样,不知道区别在哪。
[/Quote]
我犯了一个低级错误,赋值运算符不能用=,而应该用 := 类似Delphi的写法
诶,看来最近很不在状态 :(

[Quote=引用 5 楼 lkjkf 的回复:]
怎么把当前单元格的内容删除掉呢,这次背景色是出来了,但是单元格内还有255,0,0这样的字符串,计算完背景色后我想把它删了,怎么弄呢[/Quote]
你可以把字体颜色设成和背景一样的颜色
lkjkf 2011-01-07
  • 打赏
  • 举报
回复
感谢两位朋友的帮助,现在背景色已经出来了,一开始我按luols说的那样,我把代码中'255,0,0'换成了我那个字段{arrParaRange.Color}为

NumberVar R = ToNumber(Split({arrParaRange.Color},',')[1]);
NumberVar G = ToNumber(Split({arrParaRange.Color},',')[2]);
NumberVar B = ToNumber(Split({arrParaRange.Color},',')[3]);
Color ( R, G, B)

我一共12行数据,但是背景色出来的都是黑色的,后来我又按sid2008说的一整行写为

Color (ToNumber(split({arrParaRange.Color},',')[1]),ToNumber(split({arrParaRange.Color},',')[2]),ToNumber(split({arrParaRange.Color},',')[3]))

这次不同的背景颜色就显示出来了。我感觉这2种写法一样,不知道区别在哪。

我还想问个问题,怎么把当前单元格的内容删除掉呢,这次背景色是出来了,但是单元格内还有255,0,0这样的字符串,计算完背景色后我想把它删了,怎么弄呢
笨熊熊 2011-01-07
  • 打赏
  • 举报
回复
split({arrParaRange.Color},',')[1] + "," + split({arrParaRange.Color},',')[2] + "," + split({arrParaRange.Color},',')[3]

4,816

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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