当前位置:主页 > 查看内容

FastReport动态改变字体颜色

发布时间:2021-07-05 00:00| 位朋友查看

简介:项目场景 客户配置了彩色打印机要求打印护士排班表时支持班次颜色这个字段的彩打 问题描述 颜色不是固定的是程序里面动态配置的 解决方案 处理打印数据源的时候需要将颜色值作为变量动态的转为具体的颜色传到FastReport报表的DataTable数据源中。在单元格的A……

项目场景:

客户配置了彩色打印机,要求打印护士排班表时,支持班次颜色这个字段的彩打


问题描述:

颜色不是固定的,是程序里面动态配置的

解决方案

处理打印数据源的时候,需要将颜色值作为变量,动态的转为具体的颜色,传到FastReport报表的DataTable数据源中。在单元格的AfterData事件中计算。

第一种实现方式:设置HtmlTags = true;? ?

private void Cell36_AfterData(object sender, EventArgs e)
{                                        
    TableCell cell = sender as TableCell;
    cell.HtmlTags = true;                
    //htmlColor实例:#FFFFA500                      
    string htmlColor = ((String)Report.GetColumnValue("排班信息.周二班次颜色"));  
    cell.Text =  "<font color="+htmlColor+">"+cell.Text+"</font>"; 
}

本来为到这里问题就解决了,没想到这样会导致单元格的属性失效,例如:对齐方式、自动换行等。看样子这种方式不能解决该问题,接下来尝试第二种方式。

?

第二种方式:设置单元格的TextColor。在以往大部分情况下,颜色是固定的时候,我们可以直接赋值,如:Cell1095.TextColor = Color.Red ;

现在我们的颜色都是以变量的方式存在DataTable数据源中的,类似于#FFFFA500,所以我们要将字符串转为System.Drawing.Color类型。

private void Cell35_AfterData(object sender, EventArgs e)
{         
    TableCell cell = sender as TableCell;      
    string htmlColor = ((String)Report.GetColumnValue("排班信息.周一班次颜色")); //#FFFFA500
    cell.TextColor = System.Drawing.ColorTranslator.FromHtml(htmlColor);   //将html色号转为Color对象
}

打印预览,功能实现,也不存在丢失单元格其他属性的问题,问题解决。

总结:FastReport中HtmlTags这个属性尽量不用吧,直接用TextColor,虽然踩了一次坑,但是最后问题解决,还是很完美!!!

;原文链接:https://blog.csdn.net/HaoNanEr1989/article/details/115675312
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!
上一篇:数据库备份 下一篇:没有了

推荐图文


随机推荐