FastReport 3.25 Memo 显示汉字不全问题,很怪!(100分)

  • 主题发起人 主题发起人 pwhll
  • 开始时间 开始时间
P

pwhll

Unregistered / Unconfirmed
GUEST, unregistred user!
今天装了fastreport 3.25 for BDS2006
试用了一下,发现了一个非常大的Bug;
进入Fastreport设计界面,加入一个Memo 在其中输入一些汉字比如“陕西秦禾电子信息技术有限公司”,则显示正常,当你把Page或Memo的字体设置为宋体时,Memo就显示不全汉字了,最多能显示“陕西秦禾电子信息”这几个字,折腾了一下午,也没有弄出来。出现这个问题之后就是你把输入的汉字删除的剩一个,它也不能正常显示,显示的是一个乱码。真不知是怎么回事?那位富翁遇到过请来顶一下,如果解决,100分奉送。再次感谢。
当输入的内容为字符或者数字时没有这个问题。
 
我用的 FastReport 3.2.5 For D7 汉化版,
Memo 的字体设为宋体,Font 的 Charset 属性设为 DEFAULT_CHARSET 就可以正常显示。
 
to:liyinwei
但是,如果把Charset 属性设为 DEFAULT_CHARSET 在Win98下就不能正常显示呀。
而且改了后,在设计时是显示全了,但打印预览还是不行呀,出不来.
这个问题FastReport 2.5也没有呀,怎么到了3.25却出现了,真是搞不懂呀。还有没有
更好的解决办法,比如修改源码?
 
我也遇到了,我用的是汉化版
 
大家即然都遇到了,那就进来讨论一下,看怎么解决。总不能等到FastReport了下一个版本吧。
 
我也遇到了。不过以发现在文字后加几个空格就会显示完整。
 
在文字后加等长的空格,一个汉字算两个空格。
 
同意楼上的
 
我还发现了一个现象,在设计时加与汉字等长的空格,即几个汉字就加几个空格,能在设计时显示全,并能预览,但在程序中用Frxreport1.showreport;就不能预览出来。
可是当在memo中设置一变量如[pwh] ,然后在frxreport1的getvalue事件中可以对其赋值,如'陕西 '有两个汉字两个空格。用Frxreport1.showreport可以预览。或者用
TfrxMemoView(frxReport1.FindObject('memo1')).memo.text:='陕西 '也可以。
为什么在设计时不能搞定呢?百思不得其解。
 
我的3.2.5还不能保存某些固定值的memo
郁闷
准备研究crystal report了
那个冬冬有微软撑腰,应该好些
 
这个问题在3.18版本已有,我现在用的3.15版本没有这个问题,所以我一直在用3.15版本.
 
修改FastReport的原码吧.
 
用richtext吧,它没有这个毛病
 
如果兄弟们没有什么别的解决办法,我就结帐,送分了.
 
有这个问题,我也遇到了,不知何解
 
原因我知道,可是我不也解决不了。
原因应该是
FastReport在计算字体宽度的时候,把宽字节文字(Delphi中的WideChar或者WideString)当成单字节文字(Char)来计算了。
我们知道,WideChar用的字节是Char的2倍。因此,出现了一个代汉字只显示前半段。
没有对比研究过3.18前后的版本,不知道是不是关于这块重新改写了算法导致的。
 
我已经解决了。
是frxGraphicUtils.pas的毛病。

if (Win32Platform <> VER_PLATFORM_WIN32_NT) or (Canvas.Font.Charset <> DEFAULT_CHARSET) then
替换成
If (Win32Platform <> VER_PLATFORM_WIN32_NT) Or ((Canvas.Font.Charset <> DEFAULT_CHARSET) And (Canvas.Font.Charset <> GB2312_CHARSET)) then


if C.Font.Charset = DEFAULT_CHARSET then
替换成
if (C.Font.Charset = DEFAULT_CHARSET) Or (C.Font.Charset = GB2312_CHARSET) then
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
824
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部