在FastReport中如何使用自定义函数?别人说的怎么不对,老报错:undefined symbol "SMALLTOBIG"(100分)

  • 主题发起人 主题发起人 NetColorWolf
  • 开始时间 开始时间
N

NetColorWolf

Unregistered / Unconfirmed
GUEST, unregistred user!
这是我在网上找到的解决方法:
==============================
用TfrReport.OnUserFunction事件。简单的范例如下:
procedure TForm1.frReport1UserFunction(const Name: String;
p1, p2, p3: Variant;
var val: Variant);
begin

if AnsiCompareText('SUMTOSTR', Name) = 0 then

val := My_Convertion_Routine(frParser.Calc(p1));
end;

然后你就可以在报表中使用SumToStr函数:)
==============================
但我在FastReport中这样使用函数[SUMTOSTR]时,老是报告undefined symbol "SMALLTOBIG"。
我不知道我哪点没对,请哪位高人指点一二,多谢了!!!
 
你的sumtostr函数没参数吗?应该是 [SumToStr(参数)]
 
没参数,为了测试我的函数是这样的:
procedure TForm1.frReport1UserFunction(const Name: String;
p1, p2, p3: Variant;
var val: Variant);
begin

if AnsiCompareText('SUMTOSTR', Name) = 0 then

val := 'abc';
end;
 
如果没参数就应该是
if AnsiCompareText('SUMTOSTR', Name) = 0 then

val := sumtostr;

如果没参数最好放在frreport 的ongetvalue中
 
回楼上,其实是有参数的,不加参数只是为了测试
救命啦!
 
有参数为什么不用带参数的测试
procedure TForm1.frReport1UserFunction(const Name: String;
p1, p2, p3: Variant;
var val: Variant);
begin

if AnsiCompareText('SUMTOSTR', Name) = 0 then

val := sumtostr(frParser.Calc(p1));
end;

报表上写[SumToStr(参数)]
没问题的,我一直这样用的
 
搞定了哈,如果不带参数,就要这样写:[SumToStr()]

 
后退
顶部