Отображение текста в Юникоде в Rave Reports на Delphi 2009
Я нахожусь в процессе портирования приложения Delphi 2006 на Delphi 2009. Встроенная поддержка юникода была простой - почти не требовалось никакой работы. На большинстве сторонних элементов управления уже доступны обновления Delphi 2009.
Rave Reports (последняя версия 7.6.1, доступна здесь) также был обновлен, но я не могу заставить его правильно отображать RTF-текст, содержащий японские символы. В Delphi 2006 я загрузил RTF в компонент DataMemo в событии OnGetRow RVCustomConnection, прочитав RTF из элемента управления экрана (TLMDRichEdit), используя потоки, а затем выполнив CustomConnection.WriteBlobData.
В выводе отчета любой текст RTF теперь отображается в виде серии прямоугольников и знаков%. Нет читаемого текста. Весь другой текст (отображаемый с использованием компонентов Text и DataText) отображается правильно.
У кого-нибудь есть опыт как заставить RTF с юникодом правильно отображаться? Это даже поддерживается?
3 ответа
Если кто-то из Неврона не захочет комментировать, я прихожу к выводу, что это (пока) невозможно.
Я использовал это... похоже, что оно работает со встроенным в RAVE пакетом Dephi XE...
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 }
Даже без юникода печать RTF в отчетах Rave прерывается (добавляет прямоугольники в конце строк). Новая версия 7.6.2 не исправила это,,,
F & ^% жалости от Codegear (или как это называется сейчас) и Неврона...