專案場景:
客戶配置了彩色列印機,要求列印護士排班表時,支持班次顏色這個欄位的彩打
問題描述:
顏色不是固定的,是程式里面動態配置的
解決方案:
處理列印資料源的時候,需要將顏色值作為變數,動態的轉為具體的顏色,傳到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://www.uj5u.com/shujuku/276261.html
標籤:其他
下一篇:資料庫備份
