日期:2014-05-18  浏览次数:20386 次

請問如何通過傳顏色值來控制水晶報表中文本字段的顏色?
二個小問題:
第一個小問題:
請問如何通過傳顏色值來控制水晶報表中文本字段的顏色?
        詳細說明:水晶報表中有一文本字段,當我傳一個值(如#ffffff)那么運行程序
  這個文本的顏色就變成了#ffffff,當我傳另一個值(如#000000)那么運行程序這個文本的顏色就變成了#000000

第二個小問題:
    我想寫一個程序。當打印機能打印彩色的,那么水晶報表中的文本字段都變成紅色并打印出來。如果當打印機不能打印彩色的,那么水晶報表中的文本字段都變成黑色。并打印。

------解决方案--------------------
繁体的...
看起来好累,,帮顶.. 顺便抢个沙发
------解决方案--------------------
传值肯定是不行了,不过应该可以通过写代码来控制。
不过还有一个前提是每条数据的该字段颜色都是一样的,如果各有各的颜色那你就放弃吧,因为每条数据去分别改变的话十几条数据就可能要用半分钟。
下面是以前同事写的控制矩形框是否显示的代码,应该对你有借鉴作用(VB.NET)。
==========
For i As Integer = 0 To Report.ReportDefinition.ReportObjects.Count - 1

'枠をフィドンする
Dim obj As Object = Report.ReportDefinition.ReportObjects.Item(i)
If TypeOf obj Is BoxObject Then
Dim ob As BoxObject = CType(obj, BoxObject)
If "Box1 ".Equals(ob.Name) Or "Box2 ".Equals(ob.Name) _
Or "Box3 ".Equals(ob.Name) Or "Box4 ".Equals(ob.Name) Then
ob.LineStyle = CrystalDecisions.Shared.LineStyle.NoLine
End If
End If

'ランをフィドンする
If TypeOf obj Is LineObject Then
Dim ob As LineObject = CType(obj, LineObject)
If "Line13 ".Equals(ob.Name) Or "Line7 ".Equals(ob.Name) Or _
"Line12 ".Equals(ob.Name) Or "Line14 ".Equals(ob.Name) Or _
"Line15 ".Equals(ob.Name) Or "Line16 ".Equals(ob.Name) Or _
"Line17 ".Equals(ob.Name) Or "Line18 ".Equals(ob.Name) Or _
"Line19 ".Equals(ob.Name) Or "Line20 ".Equals(ob.Name) Or _
"Line21 ".Equals(ob.Name) Or "Line22 ".Equals(ob.Name) Or _
"Line23 ".Equals(ob.Name) Or "Line24 ".Equals(ob.Name) Or _
"Line25 ".Equals(ob.Name) Or "Line26 ".Equals(ob.Name) _
Or "Line27 ".Equals(ob.Name) Then
ob.LineStyle = CrystalDecisions.Shared.LineStyle.NoLine
End If
End If
Next
==========
------解决方案--------------------
报表3 abc=new 报表3();
TextObject myText =(TextObject)abc.ReportDefinition.ReportObjects[ "MyTextBox "];
myText.Color=System.Drawing.Color.Red;