由于公司把delphi升级至2006,所以Fastreport也一并升级到了3.x.可是Fastreport3.x对中文的支持有问题.例如:frxMemoView中如果填了中文,那么StoreInDFM设时True就会有问题.中文显示不出来.网上之前也流行了一些解决办法,如:用变量保存中文,运行时再付值,又或者用另外的独立的设计器来设计报表.但我觉得这些办法都不好,因为它改变了程序员的使用习惯.其实问题出Fastreport3.x把widestrings属性持久化到DFM时.因为它会先把text转换成Utf8格式再保存.但delphi本身对Utf8的支持又不太好,(我发现两个以上的Utf8格式字符串相加有时会出错),所以我把widestrings这个类持久化函数改了一下去掉了Utf8的转换部份,就把问题切底解决了.frxUnicodeUtils单元下:
把TWideStrings类的ReadDataW和WriteDataW函数中关于Utf8的转换去掉找出这个问题花了好多时间,累呀.希望这文章能帮到遇到同样问题的人.