FastReport はフォントの色を動的に変更します

プロジェクトのシナリオ:

顧客がカラー プリンタを設定し、看護スケジュールの印刷を要求した場合、シフト カラー フィールドのカラー印刷がサポートされます。


問題の説明:

色は固定ではなく、プログラム内で動的に設定されます。

解決:

印刷データ ソースを処理するときは、色の値を変数として使用し、特定の色に動的に変換して、FastReport レポートの DataTable データ ソースに転送する必要があります。セルの AfterData イベントで計算されます。

最初の実装方法: set 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>"; 
}

当初、問題はここで解決されましたが、これによってセルのプロパティ (配置、自動行折り返しなど) が無効になるとは予想していませんでした。この方法では解決できないようなので、次は2番目の方法を試してみます。

 

2 番目の方法: セルの TextColor を設定します。これまでのほとんどの場合、色が固定されている場合は、次のように直接割り当てることができました。 Cell1095.TextColor = Color.Red;

ここで、色は #FFFFA500 と同様に変数として DataTable データ ソースに保存されるため、文字列を 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 を直接使用してください。これは落とし穴でしたが、最終的には問題は解決され、依然として完璧です。

おすすめ

転載: blog.csdn.net/HaoNanEr1989/article/details/115675312
おすすめ