【问题标题】:Displaying unicode text in Rave Reports on Delphi 2009在 Delphi 2009 的 Rave Reports 中显示 unicode 文本
【发布时间】:2023-03-15 04:25:01
【问题描述】:

我正在将 Delphi 2006 应用程序移植到 Delphi 2009。对 unicode 的开箱即用支持很容易 - 几乎不需要任何工作。大多数第 3 方控件已经提供了 Delphi 2009 更新。

Rave Reports(最新版本 7.6.1,可用 here)也已更新,但我似乎无法正确显示包含日文字符的 RTF 文本。在 Delphi 2006 中,我通过使用流从屏幕控件 (TLMDRichEdit) 读取 RTF,然后执行 CustomConnection.WriteBlobData,将 RTF 加载到 RVCustomConnection 的 OnGetRow 事件中的 DataMemo 组件。

在报告输出中,任何 RTF 文本现在都显示为一系列矩形和 % 符号。没有可读的文本。所有其他文本(使用 Text 和 DataText 组件显示)正确显示。

有没有人知道如何让包含 unicode 的 RTF 正确显示?它甚至支持吗?

【问题讨论】:

    标签: delphi unicode reporting delphi-2009 rave-reports


    【解决方案1】:

    我用过这个...它似乎可以与 Dephi XE 内置的 RAVE 包一起使用...

    Procedure TfrmMain.RaveCustomConnectionGetRow                  (         Connection: TRvCustomConnection);
    Var
      MemoString : String;
      Index      : Integer;
      Size       : Integer;
      Buffer     : PAnsiChar;
    
    Begin
    
    
      { Init MemoString }
      MemoString := '';
    
      For Index := 0 To DataList.Count - 1 Do Begin
        MemoString := MemoString + DataList.Strings [Index] + #13#10;
      End; { For }
    
      { Set the Size (Unicode) and Buffer }
      Size := Length (MemoString) * 2;
      Buffer := PAnsiChar (MemoString);
    
      { Send the data over as a Blob object to RAVE }
      Connection.WriteBlobData (Buffer^, Size);
    
    End; { RaveCustomConnectionGetRow Procedure }
    

    【讨论】:

    • 感谢您的更新 - 我很久以前就遇到过这个问题。我记得当时环顾四周,没有其他人真正有解决方案(无论是在这里还是在其他网站上)。您的代码示例无疑会帮助某人。谢谢!
    【解决方案2】:

    除非来自 Nevrona 的人愿意发表评论,否则我的结论是(还)不可能。

    【讨论】:

      【解决方案3】:

      即使没有 unicode,Rave 报告中的 RTF 打印也会损坏(在行尾添加矩形)。新版本 7.6.2 还没有修复这个,,,

      F&^%ing 来自 Codegear(或者现在叫什么)和 Nevrona 的可怜...

      【讨论】:

      • 我最终使用了 FastReports。切换到它既快速又轻松,而且它是 Unicode 友好的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-19
      • 1970-01-01
      • 2010-09-12
      • 2010-11-28
      • 1970-01-01
      相关资源
      最近更新 更多