2011-07-26 61 views
1

下面的代码工作以及对D2005:升级,从D2005到D2010:TRichEdit

MyRichEdit1.Text := TMemoField(Query1.FieldByName('Msg')).asString; 

但在D2010,该代码输出以纯文本的文本而不是RTF。

为了解决这个问题,我使用下面的代码

MyRichEdit1.PlainText := False; 
MyRichEdit1.Text := TMemoField(Query1.FieldByName('Msg')).asString; 
MyRichEdit1.PlainText := TRUE; 
MyRichEdit1.Lines.SaveToFile('Lixo.Rtf'); 
MyRichEdit1.PlainText := False; 
MyRichEdit1.Lines.LoadFromFile('Lixo.Rtf'); 

如何我可以导入从数据库到TRichEdit RTF文本,而无需使用一个文件的过程中? 我试过 this question 的解决方案,但它不起作用,它显示为纯文本和每个字符之间有一个空格。

感谢 山姆

+0

很难相信代码会载入富文本 –

+0

我正在从BCB6迁移到C++ Builder XE并且遇到同样的问题。它试图解决一些可以避免的问题真的很令人沮丧。只是无法理解为什么Delphi程序员需要将界面改为已经运行的东西。 – truthseeker

回答

1

如果你想RTF代码加载到TRichEdit,那么RTF放入一个TStream对象,并使用RichEdit中的LoadFromStream()方法与PlainText属性设置为False。

0

该解决方案适用于C++ Builder XE,但类似的可用于Delphi。

UnicodeString str = L"{\\rtf1 \\qr r{\\sub nom} = ----}"; // some rtf coded text 
stream = new TStringStream(); 
stream->Clear(); 
stream->WriteString(str); 
stream->Seek(0, soFromBeginning); 
MyRichEdit1->Lines->LoadFromStream(stream); 
delete stream; 
stream = NULL;