本文主要是介绍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
这篇关于fastreport打印trichedit分页问题的解决的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!