我使用fastreport的自定义函数 在报表中调用我的函数却是空 各位看看
   function StrTran(const S, s1, s2: string): string;
  begin
    Result := StringReplace(S, s1, s2, [rfReplaceAll]);
  end;
function TForm1.MoneyConvert(mmje: real): string;
var
  S, dx: string;
  i, Len: Integer;
begin
  if mmje < 0 then
  begin
    dx := '负';
    mmje := -mmje;
  end;
  S := Format('%.0f', [mmje * 100]);
  Len := Length(S);
  for i := 1 to Len do
    dx := dx + Copy(s1, (Ord(S[i]) - Ord('0')) * 2 + 1, 2) + Copy(s2, (Len - i)* 2 + 1, 2);
  dx := StrTran(StrTran(StrTran(StrTran(StrTran(dx, '零仟', '零'), '零佰','零'),'零拾', '零'), '零角', '零'), '零分', '整');
  dx := StrTran(StrTran(StrTran(StrTran(StrTran(dx, '零零', '零'), '零零','零'),'零亿', '亿'), '零万', '万'), '零元', '元');
  if dx = '整' then
    Result := '零元整'
  else
    Result := StrTran(StrTran(dx, '亿万', '亿零'), '零整', '整');
end;function TForm1.frxReport1UserFunction(const MethodName: String;
  var Params: Variant): Variant;
begin
   if MethodName='MoneyConvert'  then
      Result:=MoneyConvert(Params[0]) ;end;procedure TForm1.Button1Click(Sender: TObject);
begin
frxReport1.AddFunction('function MoneyConvert(mmje:real): string;');frxReport1.ShowReport();
end;我在报表中memo1的内容是[moneyconvert(500.00)]
报表显示后是空!

解决方案 »

  1.   

    可以用fastreportgetvalue自带的函数
    if parname='money' then
     patvalue:=MoneyConvert(Params[0]); 
    memo1的内容是[money]
      

  2.   

    可以用fastreportgetvalue自带的函数 
    if   parname='money'   then 
      parvalue:=MoneyConvert(Params[0]);   
    memo1的内容是[money]
      

  3.   

    找到原因了 是参数名称不一致 用uppercase()后解决 谢谢你的回复