FastReport如何使用外部自訂函數

問題來源: http://delphi.ktop.com.tw/board.php?cid=30&fid=100&tid=84526

我想由一個資料欄位記錄顏色別,去動態變更Memo字型的顏色,由於Fastreport沒有StringToColor函數,需用到Delphi函數,於是想用frxReport1UserFunction事件去觸發自訂函數。但是遇到了Can’t convert (null) to Integer錯誤。經迂迴地再包一層,試出來可用。

自訂函式內容

function TForm1.MyFunc(param: String): TColor;
begin
  Result:=StringToColor(param);
end;

Fastreport預覽時觸發的事件

function TForm1.frxReport1UserFunction(const MethodName: String;
  var Params: Variant): Variant;
begin
  if MethodName = 'MYFUNC' then
   Result := MyFunc(Params[0]);
end;

準備一些資料餵給Fastreport當做資料來源

procedure TForm1.Button1Click(Sender: TObject);
begin
  ClientDataSet1.Close;
  ClientDataSet1.CreateDataSet;
  ClientDataSet1.Append;
  ClientDataSet1ColorStyle.Value:='clRed';
  ClientDataSet1.Append;
  ClientDataSet1ColorStyle.Value:='';
  ClientDataSet1.Append;
  ClientDataSet1ColorStyle.Value:='clGreen';
  frxReport1.AddFunction('function MyFunc(param: String): TColor');
  frxReport1.ShowReport();
end;

在報表檔裡引用自訂函數

procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
begin
  if Length([frxDBDataset1."ColorStyle"])>0 then
    Memo1.Font.Color:=MyFunc([frxDBDataset1."ColorStyle"]);
end;

這報表的執行結果Memo1的字型顏色會依該筆的ColorStyle欄位顏色資料不同,而顯示不同的顏色。

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值