在Fastreport中你有时会遇到在界面中显示正常,在关闭Delphi后FastReport界面中的中文部分或打印不上的问题。
这个问题苦恼了我好长时间,不管是换版本或用FastReport Studio都不太好使。
有一天在网上浏览,突然看到有人提出这个问题,我热泪盈眶,我终于找到你了,我怎么这傻呀,早没有上网来找找呀!痛苦中......
解决方式是什么?你想要吗?你想听吗?呵呵......就是......就是......不告诉你!
呵呵,不和各位朋友开玩笑了,其实很简单!
网络上抄录而来,非本人能耐。
delphi本身对Utf8的支持又不太好,(我发现两个以上的Utf8格式字符串相加有时会出错),所以我把widestrings 这个类持久化函数改了一下去掉了Utf8的转换部份,就把问题切底解决了。
frxUnicodeUtils单元下:
把TWideStrings类的ReadDataW和WriteDataW函数中关于Utf8的转换去掉
具体是:
ReadDataW:
//Add(Utf8Decode(Reader.ReadString));
Add(Reader.ReadString);
WriteDataW:
//Writer.WriteString(Utf8Encode(Get(I)));
Writer.WriteString(Get(I));
总结:FastReport中文Memo显示不正常的原因大概是Delphi在dfm文件保存FastReport的报表控件时出了问题,不在dfm文件中保存报表,就不会有这个问题了。
记录以上供本人和曾经遇到过或将要遇到同类问题的同行一起学习和备忘。如有其他好的解决方式请给我留言!