在报表中,有个字段如名称,可能是中英文符号等混合输入的,在自动换行的时候,如果遇到中文字符且刚好只有一个字符宽度的时候,就会出现乱码问题,寻求解决代码,100分奉送

解决方案 »

  1.   

    自己修改一下代码,在frclass里面的,也可以执行/res/chinese/mkall.bat,看看有什么效果
      

  2.   

    fyje(云中仙) :
      你说的那些是将FASTREPORT汉化,而不能解决读取数据换行遇中文时的乱码问题,其实,应该是在procedure frReport1GetValue(const ParName: String;var ParValue: Variant);中将
    parvalue转成unicode就OK了,可我不知道怎么转,郁闷 :(
      

  3.   

    我用自动换行为什么没么没有问题呢,也是中文的,换一个版的FastReport吧
      

  4.   

    听说2.47版本没有此问题。改的话 
    参照http://tian.yeah.net的 fastreport2.41c主要改fr_class.pas中的wrapline过程,其中有一段:
    else if s[last] = ' ' then
                OutLine(Copy(s, beg, last - beg)) else
                OutLine(Copy(s, beg, last - beg + 1));//造成乱码的根本原因
    改为
    else if s[last] = ' ' then
                OutLine(Copy(s, beg, last - beg)) else
                if ByteType(s,last) =  mbLeadByte then     //判断是否是汉字字节
                     OutLine(Copy(s, beg, last - beg ))  
                  else
                    OutLine(Copy(s, beg, last - beg + 1));
    后面的
      LoopPos := cur;
    beg := last + 1; last := beg;
    要改为:
      LoopPos := cur;
    if ByteType(s,last) =  mbLeadByte then  
    begin
      beg := last ; last := beg;
    end
    else
    begin
      beg := last + 1; last := beg;
    end;