FastReport动态改变字体颜色

项目场景:

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


问题描述:

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

解决方案:

处理打印数据源的时候,需要将颜色值作为变量,动态的转为具体的颜色,传到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,虽然踩了一次坑,但是最后问题解决,还是很完美!!!

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值