控件修改之:FreeReport 打印错误,汉字列会出现字重叠现象

FreeReport 打印错误,汉字列会出现字重叠现象,主要是
fr_class.pas 里面   SetTextCharacterExtra(Canvas.Handle, Round(CharacterSpacing * ScaleX));//这个就是设置字符间隔,将导致汉字打印错误
这个api 计算字符间距可能是以ascii 字符计算的,导致计算错误。
真正使用字符间距的地方是
          if not Exporting then
            ExtTextOut(Canvas.Handle, curx, cury, ETO_CLIPPED, @DR,
              PChar(str), Length(str), nil);//PInteger(GCP.lpDx)) //这里决定字符间距
原先是GCP.lpdx 这个值, 然后修改成 nil 就避免了设置间距,而使用系统默认值。
posted @ 2009-09-21 11:37  苹果X1  阅读(307)  评论(0编辑  收藏  举报