fastreport打印trichedit分页问题的解决

用fastreport来打印richedit里面的内容。刚开始放一个frxrichview组件到报表上,然后在

var str: TMemoryStream;
begin

   begin
     str:= TMemoryStream.Create;
     CurrRichRecord.richedit.Lines.SaveToStream(str);
     str.Position:= 0;
     tfrxRichview(frxReport1.FindObject('Rich1')).RichEdit.Font.Name:= CurrRichRecord.richedit.Font.Name;
     tfrxRichview(frxReport1.FindObject('Rich1')).RichEdit.Font.size:= CurrRichRecord.richedit.Font.size;

 //设置字体,然后将主窗口trichedit里的内容传输到报表内
     tfrxRichview(frxReport1.FindObject('Rich1')).RichEdit.Lines.LoadFromStream(str);
     str.Free;


frxReport1.PrepareReport();

frxReport1.ShowReport;  //打印预览
end;

发现如果richedit里面内容很多很长,报表不会换行

后在报表内添加一个 ColumnHeader,然后在ColumnHeader1上点击鼠标右键,勾选 “伸缩”属性。

接着把ColumnHeader1拉长,再在里面放入frxrichview,把大小调整好,然后在frxrichview上点击鼠标右键,把“伸缩”菜单点一下勾选上。

再打印预览,能正常换页了。

另外fastreport还有一个bug,如果用

frxReport1.Variables['title']:= '报表标题测试'; 类似这样的方法传入变量,然后报表里用

[title] 这样的方法直接引用,会报运算式错误,“报表标题测试” 标识符未宣告。

这是fastreport内没有做好判断引起的,解决方法有两种,简单点的如下这样加个回车换行尾巴上去,也能正常引用变量了。

frxReport1.Variables['title']:= '报表标题测试'+#13#10;

或者修改fastreport的代码,把

frxClass单元里的
function TfrxReport.DoGetValue(const Expr: String; var Value: Variant): Boolean;
内语句 if  Pos(#13#10, val) <> 0   then    
修改为   if (Pos(#13#10, val) <> 0 ) or( ds=nil)  then     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值